車輛模擬駕駛訓練系統動感系統設計
4.1 HMR3000與MCU的通信協議
HMR3000的串行通信是根據NMEA0183標準制定的簡單的ASCⅡ協議,可以在單片機系統中使用RS-232或RS-485接口電路。ASCⅡ碼的傳輸和接收使用1位起始位、8位數據位、無奇偶校驗位和I位停止位,每個碼有10位。數據傳輸率可選擇l200 bit/s、2 400 bit/s、4 800 bit/s、9 600 bit/s、19 200bit/s、38 400 bit/s。
4.2 MCU接收HMR3000的數據
啟動HMR3000后,設定好HMR3000的數據單位、進制及其數據采集速率,每次數據采集后HMR3000自動向MCU發送數據。由于它采用NMEA0183協議標準的HPR格式即“$PTNTHPR,x..x,a,x..x,a,x..x,a*hh”格式輸出,此格式中不僅含有效數據“x..x”和其狀態“a”,還包含有‘$’、‘P’、‘T’、‘*’、‘h’等相關格式字符,因此在程序中要加以區分。動感系統中將字符‘$’作為一組有效數據傳輸的開始,將字符‘*’作為一組有效數據傳輸的結束,并通過計算接收逗號‘,’的個數判斷有效數據的開始。MCU接收HMR3000的數據流程如圖4所示。

4.3 nRF905與MCU的通信協議
nRF905與MCU之間的通信采用SPI通信協議,使用2條控制信號線CSN、SCK和2條數據信號線MOSI、MISO進行通信。CSN用來控制外圍設備的選通(低電平有效),SCK提供同步時鐘,MOSI、MISO分別為主從設備的輸入/輸出線。在SPI通信過程中,主從設備均在時鐘的下降沿從各自的輸出線輸出1位數據,在時鐘的上升沿從各自的輸入線讀入l位數據。
4.4 nRF905發送和接收數據
nRF905發送或接收數據時必須嚴格遵守發送或接收時序,否則將導致發送或接收失敗。
4.4.1 發送數據
nRF905的發送時序如圖5所示,其中.TA-TB是nRF905的命令字寄存器、匹配地址寄存器和發送數據寄存器編程時間;TD-Tl是發送啟動脈沖,至少為10μs;T1-T2是nRF905的自動編碼,至少為650 μs;T2-T3是自動發送數據;T3是發送結束時DR置高電平,表示發送結束。具體步驟如下:

(1)給nRF905上電后,MCU將TX_EN置為高電平,將TRX_CE置為低電平,使nRF905進入發送模式;
(2)MCU通過SPI接口按照SPI通信協議向nRF905寫命令字、匹配地址和將要發送的數據;
(3)使TRX_CE產生1個至少10 μs的發送脈沖;
(4)nRF905接到發送脈沖后自動編碼、自動發送。如果nRF905命令字寄存器中的AUTO_RE-TRAN位被設置為高電平,則nRF905不斷重發,直到TRX_CE被置高電平;
(5)nRF905發送數據后,DR自動置高電平。MCU可以通過DR判斷發送完畢與否。以便發送下一組數據。
4.4.2 接收數據
nRF905接收時序如圖6所示,具體步驟如下:
(1)給nRF905上電后,MCU通過將TX_EN置低電平和TRX_CE置高電平,使nRF905進入接收模式(圖6中的TA時刻);

(2)650μs后,nRF905開始檢測有無發送的數據(圖6中的T0時刻);
(3)當nRF905探測到有接收頻率的載波時,將CD置高電平(圖6中的Tl時刻);
(4)當nRF905接收完有效匹配地址后,將AM置高電平(圖6中的T2時刻);
(5)當nRF905接收完有效數據且CRC檢驗正確后,將DR置高電平(圖6中的T3時刻);
(6)MCU在DR變高電平后可以通過SPI讀取nRF905接收的數據。
4.5 動感控制部分的編程
根據硬件電路的連接,可以利用外部中斷0服務程序實現動感的實時控制,這樣,MCU在DR變成高電平后即可控制動感平臺動作,提高了實效性。程序流程如圖7所示。

5 結束語
據考證,國內現有的車輛模擬駕駛訓練系統均未安裝動感系統。車輛模擬駕駛動感系統具有廣闊的發展前景。本文為該系統的設計提供了切實可行、安全可靠的參考設計方案。


評論