2.4G射頻的CAN總線汽車故障診斷儀設(shè)計(jì)
PIC18F2682與射頻芯片n
2.2.2 接收端電路原理
圖4是系統(tǒng)接收端電路原理。由于TMU3100由PC供電,而PC機(jī)USB接口所提供的電壓VDD干擾較大,故對(duì)VDD進(jìn)行了π濾波。
由于TMU3100沒有SPI模塊,故可以通過PB[1]、PB[0]按照SPI協(xié)議與nRF2401的SPI口來進(jìn)行通信。對(duì)nRF2401配置控制使能CS和接收、發(fā)送使能CE分別由KSO[3]和KSO[13]控制。nRF2401接收到數(shù)據(jù)包后,DRl將被置高電平,因此TMU3100可以通過查詢KSl6的狀態(tài)判斷足否接收到數(shù)據(jù)。
3 軟件設(shè)計(jì)
系統(tǒng)的軟件設(shè)計(jì)包括發(fā)射端軟件設(shè)計(jì)、接收端軟件設(shè)計(jì)和PC端軟件設(shè)計(jì)。
3.1 發(fā)射端軟件設(shè)計(jì)
發(fā)射端流程如圖5所示。軟件設(shè)計(jì)主要實(shí)現(xiàn)兩項(xiàng)功能:第一是實(shí)現(xiàn)CAN總線上數(shù)據(jù)的采集;第二是實(shí)現(xiàn)將采集后的數(shù)據(jù)通過射頻進(jìn)行發(fā)射。
上電后,首先對(duì)CAN模塊進(jìn)行初始化。然后初始化nRF2101,并與接收端建立連接。當(dāng)發(fā)送完CAN數(shù)據(jù)后沒有收到ACK信號(hào)時(shí),就跳頻;然后通知發(fā)送端準(zhǔn)備接收重發(fā)的CAN數(shù)據(jù),直到接收到ACK信號(hào)。
為了防止空中干擾,采用了自動(dòng)跳頻的空中協(xié)議,即無論是否接收到ACK信號(hào)都進(jìn)行跳頻,因此可以防止某個(gè)頻段的強(qiáng)干擾,進(jìn)而降低誤碼率。
3.2 接收端軟件設(shè)計(jì)
接收端軟件流程如圖6所示。軟件設(shè)計(jì)主要實(shí)現(xiàn)兩項(xiàng)功能:第一是實(shí)現(xiàn)枚舉;第二是實(shí)現(xiàn)將接收到的數(shù)據(jù)通過USB上傳到PC。上電后,首先完成對(duì)TMU3100 的配置,并與PC機(jī)枚舉;枚舉成功后就對(duì)nRF2401進(jìn)行配置,并與發(fā)射端建立連接。當(dāng)接收到數(shù)據(jù)包后,首先判斷是CAN數(shù)據(jù)還是重傳數(shù)據(jù)命令。如果是 CAN數(shù)據(jù)包,則向發(fā)射端返回ACK信號(hào)并跳頻,然后將接收到的數(shù)據(jù)通過USB傳至PC;如果是重傳命令,則先跳頻,然后置重傳標(biāo)志,表示下個(gè)數(shù)據(jù)包是重傳的數(shù)據(jù)包。
TMU3100被配置為標(biāo)準(zhǔn)HID類,這樣就不用為設(shè)備開發(fā)驅(qū)動(dòng)程序,而是使用Windows提供的標(biāo)準(zhǔn)HID類驅(qū)動(dòng)程序。
3.3 PC端軟件設(shè)計(jì)
PC端軟件由應(yīng)用程序和設(shè)備驅(qū)動(dòng)程序組成。Windows為標(biāo)準(zhǔn)USB沒備提供了完善的內(nèi)置驅(qū)動(dòng),本系統(tǒng)采用Windows自帶的HID類驅(qū)動(dòng),只要將 TMU3100配置為HID類,即可完成與PC機(jī)的通信。這省去了開發(fā)設(shè)備的驅(qū)動(dòng)程序,極大地簡(jiǎn)化了上位機(jī)軟件的開發(fā)。
評(píng)論