GD32F3開發(fā)進(jìn)階教程 課件 ch10CAN通信實(shí)驗(yàn)_第1頁
GD32F3開發(fā)進(jìn)階教程 課件 ch10CAN通信實(shí)驗(yàn)_第2頁
GD32F3開發(fā)進(jìn)階教程 課件 ch10CAN通信實(shí)驗(yàn)_第3頁
GD32F3開發(fā)進(jìn)階教程 課件 ch10CAN通信實(shí)驗(yàn)_第4頁
GD32F3開發(fā)進(jìn)階教程 課件 ch10CAN通信實(shí)驗(yàn)_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

CAN通信實(shí)驗(yàn)“第十章《GD32F3開發(fā)進(jìn)階教程——基于GD32F303ZET6》01實(shí)驗(yàn)內(nèi)容本章的主要內(nèi)容是學(xué)習(xí)CAN總線的基本原理,包括CAN的物理層和協(xié)議層,了解GD32F30x系列微控制器上的CAN控制器和相關(guān)固件庫函數(shù),最后基于GD32F3蘋果派開發(fā)板設(shè)計(jì)一個CAN通信實(shí)驗(yàn),將CAN控制器配置為正常工作模式,采用CAN轉(zhuǎn)USB模塊連接開發(fā)板與計(jì)算機(jī),通過操作LCD屏上的GUI,實(shí)現(xiàn)開發(fā)板與計(jì)算機(jī)之間的數(shù)據(jù)通信。實(shí)驗(yàn)內(nèi)容02實(shí)驗(yàn)原理CAN模塊CAN模塊電路原理圖如圖10-1所示。1.CAN物理層(1)總線網(wǎng)絡(luò)CAN物理層的形式主要有兩種:閉環(huán)總線通信網(wǎng)絡(luò)和開環(huán)總線通信網(wǎng)絡(luò)。CAN閉環(huán)總線通信網(wǎng)絡(luò)如圖10-2所示,它是一種遵循ISO11898-2標(biāo)準(zhǔn)的高速、短距離“閉環(huán)網(wǎng)絡(luò)”總線最大長度為40米通信速度最高為1Mbps,總線的兩端各要求有一個1202Ω的電阻,用于避免信號的反射和回波。CAN協(xié)議簡介CAN協(xié)議簡介CAN協(xié)議簡介CAN開環(huán)總線通信網(wǎng)絡(luò)如圖10-3所示。0203通信節(jié)點(diǎn):CAN總線上可以掛載多個通信節(jié)點(diǎn),節(jié)點(diǎn)之間的信號都通過總線傳輸。由于CAN通信協(xié)議不對節(jié)點(diǎn)進(jìn)行地址編碼,而是對數(shù)據(jù)內(nèi)容進(jìn)行編碼,因此只要總線的負(fù)載足夠,理論上網(wǎng)絡(luò)中的節(jié)點(diǎn)個數(shù)不受限制。差分信號:與使用單條信號線的電壓表示邏輯的方式不同,差分信號傳輸時需要兩條信號線,通過這兩條信號線的電壓差值來表示邏輯0和1相較于單信號線的輸方式,使用分信號傳輸具有抗干擾能力強(qiáng)和時序定位精確的優(yōu)點(diǎn)。CAN協(xié)議簡介CAN協(xié)議簡介CAN協(xié)議中對其使用的差分信號線CANHgh和CANLow做了規(guī)定如表10-1所示。2.CAN協(xié)議層(1)時序與同步CAN協(xié)議屬于異步通信協(xié)議,沒有時鐘信號線,連接在同一個總線網(wǎng)絡(luò)上的各個節(jié)點(diǎn)使用約定的波特率進(jìn)行通信。CAN還會使用“位同步”的方式來抗干擾、吸收誤差,實(shí)現(xiàn)對總線電平信號的正確采樣,確保通信時序正常。CAN協(xié)議簡介CAN協(xié)議簡介為了實(shí)現(xiàn)位同步,CAN協(xié)議把每一個數(shù)據(jù)位的時序分解成如圖10-4所示。CAN協(xié)議簡介各段的作用如表10-2所示。CAN協(xié)議簡介①硬同步:當(dāng)總線出現(xiàn)從隱性電平到顯性電平的跳變時,節(jié)點(diǎn)將其視為位的起始段(SS),以獲得同步,如圖10-5所示。CAN協(xié)議簡介②重新同步:當(dāng)節(jié)點(diǎn)檢測出跳變沿有2Tq的滯后時,PSB1段末尾將會插入相應(yīng)的長度(即2Tq)以調(diào)整同步,如圖10-6所示。CAN協(xié)議簡介當(dāng)節(jié)點(diǎn)檢測出跳變沿有2Tq的提前時,PSB2段末尾將會減小相應(yīng)的長度(即2Tq)以調(diào)整同步,如圖10-7所示。(2)幀結(jié)構(gòu)前面介紹了CAN協(xié)議中1位數(shù)據(jù)的傳輸方式,下面介紹CAN的結(jié)構(gòu)。當(dāng)數(shù)據(jù)包被傳輸?shù)狡渌O(shè)備時,只要設(shè)備按規(guī)定的格式解讀,就能還原出原始數(shù)據(jù),這樣的報(bào)文(Message)就被稱為CAN的數(shù)據(jù)(Frame)。CAN一共規(guī)定了種類型的,本章僅對最主要的數(shù)據(jù)頓做簡要介紹。CAN協(xié)議簡介CAN協(xié)議簡介數(shù)據(jù)幀構(gòu)成如圖10-8所示,數(shù)據(jù)以1個顯性位開始,7個連續(xù)的隱性位結(jié)束,在它們之間還包含仲裁段、控制段、數(shù)據(jù)段、CRC段和ACK段。CAN協(xié)議簡介仲裁過程如圖10-9所示。GD32F30x系列微控制器的CAN外設(shè)簡介1.通信模式CAN總線控制器有4種通信模式,如圖10-10所示。GD32F30x系列微控制器的CAN外設(shè)簡介2.位時序與同步對比標(biāo)準(zhǔn)CAN協(xié)議,GD32CAN控制器的位時序如圖10-11所示。3.波特率波特率指每秒傳輸碼元的數(shù)目,而比特率為每秒傳輸?shù)谋忍?bit)數(shù)。4.過濾器I2C總線協(xié)議采用地址來區(qū)分節(jié)點(diǎn),而在CAN協(xié)議中,消息的標(biāo)識符與節(jié)點(diǎn)地址無關(guān)但與消息內(nèi)容有關(guān)。GD32F30x系列微控制器的CAN外設(shè)簡介0102一個32位過濾器,檢查SFID[10:0]、EFID[17:0]、IDE和RTR位。兩個16位過濾器,檢查SFID[10:01、RTR、IDE和EFID17:15]。GD32F30x系列微控制器的CAN外設(shè)簡介根據(jù)過濾ID長度分類,CAN過濾器的工作模式有以下兩種:0102標(biāo)識符列表模式掩碼模式GD32F30x系列微控制器的CAN外設(shè)簡介根據(jù)過濾模式分類,有以下兩種模式:GD32F30x系列微控制器的CAN外設(shè)簡介如表10-4所示,在掩碼模式下,第一個寄存器存儲要篩選的ID,第二個寄存器存儲掩碼,掩碼為1的部分表示該位必須與D中的內(nèi)容一致,篩選的結(jié)果為表中第三行的I值,它是一組包含多個ID的值,其中x表示該位可以為1或0。CAN數(shù)據(jù)接收和數(shù)據(jù)發(fā)送路徑CAN數(shù)據(jù)接收過程如圖10-13所示。CAN數(shù)據(jù)接收和數(shù)據(jù)發(fā)送路徑CAN數(shù)據(jù)發(fā)送過程如圖10-14所示。1.can_initcan_init函數(shù)的功能是初始化CAN外設(shè)。can_parameter_struct結(jié)構(gòu)體成員變量定。2.can_filter_initcan_filter_init函數(shù)的功能是初始化CAN過濾器。can_flter_parameter_struct結(jié)構(gòu)體成員變量。3.can_message_transmitcan_message_transmit函數(shù)的功能是傳輸CAN報(bào)文。can_trasnmit_message_struct結(jié)構(gòu)體。CAN部分固件庫函數(shù)4.can_message_receivecan_message_receive函數(shù)的功能是接收CAN報(bào)文。can_receive_message_struct結(jié)構(gòu)體成員變量。CAN部分固件庫函數(shù)03實(shí)驗(yàn)代碼解析0102CAN.h文件:在CANh文件的“宏定義”區(qū),首先定義了CAN的波特率。在“API函數(shù)聲明”區(qū),聲明了3個API函數(shù)。CAN.c文件:在“內(nèi)部函數(shù)聲明”區(qū),聲明了ConfigCANO函數(shù),用于配置CANO。CAN文件對下面按照順序解釋說明USBD_LP_CANO_RXOIROHandle函數(shù)中的語句。(1)第1至6行代碼:當(dāng)CANO接收到數(shù)據(jù)時,調(diào)用can_message_receive函數(shù)把報(bào)文從FIFO復(fù)制到接收結(jié)構(gòu)體。(2)第8至13行代碼:報(bào)文成功通過CAN過濾器,接收結(jié)構(gòu)體存儲相關(guān)的信息后,對其再次進(jìn)行簡單的檢查,檢查其校驗(yàn)是否為標(biāo)準(zhǔn)格式。若是,則將數(shù)據(jù)保存到數(shù)據(jù)緩沖區(qū)。CAN文件對下面按照順序解釋說明ImitCAN函數(shù)中的語句。(1)第5行代碼初始化接收循壞隊(duì)列其長度與接收循環(huán)隊(duì)列緩沖區(qū)sarrRecBuf相等。(2)第6至9行代碼:將接收緩沖區(qū)sarrRecBuf全部清零。(3)第11行代碼:調(diào)用ClearQucue函數(shù),清空接收循環(huán)隊(duì)列。(4)第12行代碼:調(diào)用ConfigCANO函數(shù),配置CAN的GPIO。CAN文件對Main.c文件在Proc2msTask函數(shù)中調(diào)用CANTopTask函數(shù),每40ms執(zhí)行次CAN實(shí)驗(yàn)應(yīng)用層模塊任務(wù),如程序清單10-10所示。實(shí)驗(yàn)結(jié)果下載程序并進(jìn)行復(fù)位,可以觀察到開發(fā)板上的LCD屏幕顯示CAN通信實(shí)驗(yàn)的GUI界面。實(shí)驗(yàn)結(jié)果1.將數(shù)據(jù)從計(jì)算機(jī)發(fā)送到開發(fā)板打開配套資料包“\02相關(guān)軟件”文件夾下的“UART轉(zhuǎn)CAN配置軟件exe”,單擊“串口設(shè)置”彈出如圖10-16所示對話框,設(shè)置端口和波特率,單擊“打開”按鈕。若未能檢測到串口,請檢查模塊是否亮起黃色LED燈以及端口號是否與模塊對應(yīng)。實(shí)驗(yàn)結(jié)果當(dāng)配置軟件顯示如圖10-17右側(cè)所示內(nèi)容時,說明模塊連接成功且正常工作。然后參考圖10-17左側(cè)內(nèi)容進(jìn)行配置。實(shí)驗(yàn)結(jié)果單擊“濾波器”欄下的“計(jì)算”按設(shè)置濾波器(過濾器),進(jìn)入如圖10-18所示的濾波器計(jì)算界面。在“可通過ID欄”中輸入5A5,“格式”選擇“標(biāo)準(zhǔn)”,“類型”選擇“數(shù)據(jù)幀”,并單擊“添加”按鈕。實(shí)驗(yàn)結(jié)果完成上述設(shè)置后,單擊上方菜單欄“設(shè)置全部”按鈕,右側(cè)顯示區(qū)域出現(xiàn)如圖10-19所示的提示信息,則表示模塊配置完成。實(shí)驗(yàn)結(jié)果單擊“退出設(shè)置”,進(jìn)入發(fā)送界面,如圖10-20所示。實(shí)驗(yàn)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論