視頻配套的和程序匯總里寫(xiě)代碼都放在這里can_第1頁(yè)
視頻配套的和程序匯總里寫(xiě)代碼都放在這里can_第2頁(yè)
視頻配套的和程序匯總里寫(xiě)代碼都放在這里can_第3頁(yè)
視頻配套的和程序匯總里寫(xiě)代碼都放在這里can_第4頁(yè)
視頻配套的和程序匯總里寫(xiě)代碼都放在這里can_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、零死角玩轉(zhuǎn)STM32淘寶:fi:掃描進(jìn)入淘寶主講內(nèi)容01CAN協(xié)議簡(jiǎn)介02STM32的CAN外設(shè)簡(jiǎn)介03CAN控制的相關(guān)結(jié)構(gòu)體04參考資料:零死角玩轉(zhuǎn)STM32“”章節(jié)CAN結(jié)構(gòu)體從STM32的CAN外設(shè) 了解到它的功能非常多,控制涉及的寄存器也非常豐富,而使用STM32標(biāo)準(zhǔn)庫(kù)提供的各種結(jié)構(gòu)體及庫(kù)函數(shù)可以簡(jiǎn)化這些控制過(guò)程。跟其它外設(shè)一樣,STM32標(biāo)準(zhǔn)庫(kù)提供了CAN初始化結(jié)構(gòu)體及初始化函數(shù)來(lái)控制CAN的工作方式,提供了收發(fā)報(bào)文使用的結(jié)構(gòu)體及收發(fā)函數(shù),還有配置控制篩選器模式及ID的結(jié)構(gòu)體。初始化結(jié)構(gòu)體:CAN_InitTypeDef發(fā)送及接收結(jié)構(gòu)體:CanTxMsg及CanRxMsg篩選器結(jié)構(gòu)體

2、:CAN_FilterInitTypeDefCAN初始化結(jié)構(gòu)體配置完這些結(jié)構(gòu)體成員后,調(diào)用庫(kù)函數(shù)CAN_Init即可把這些參數(shù)寫(xiě)入到CAN控制寄存器中,實(shí)現(xiàn)CAN的初始化。CAN初始化結(jié)構(gòu)體CAN_Prescaler本成員設(shè)置CAN外設(shè)的時(shí)鐘分頻,它可控制時(shí)間片Tq的時(shí)間長(zhǎng)度,這里設(shè)置的值最終會(huì)減1后再寫(xiě)入BRP寄存器位,即前面介紹的Tq計(jì)算公式:Tq = (BRP9:0+1) x TPCLK等效于:Tq = CAN_Prescaler x TPCLKCAN初始化結(jié)構(gòu)體CAN_Mode本成員設(shè)置CAN的工作模式,可設(shè)置為正常模式(CAN_Mode_Normal)、回環(huán)模式 (CAN_Mode_

3、Loack)、靜默模式(CAN_Mode_Silent)以及回環(huán)靜默模式 (CAN_Mode_Silent_Loack)。CAN初始化結(jié)構(gòu)體CAN_SJW本成員可以配置SJW的極限長(zhǎng)度,即CAN重新同步時(shí)單次可增加或縮短的最大長(zhǎng)度,它可以被配置為1-4Tq(CAN_SJW_1/2/3/4tq)。CAN初始化結(jié)構(gòu)體CAN_BS1本成員用于設(shè)置CAN位時(shí)序中的BS1段的長(zhǎng)度,它可以被配置為1-16個(gè)Tq長(zhǎng)度(CAN_BS1_1/2/316tq)。CAN初始化結(jié)構(gòu)體CAN_BS2本成員用于設(shè)置CAN位時(shí)序中的BS2段的長(zhǎng)度,它可以被配置為1-8個(gè)Tq長(zhǎng)度(CAN_BS2_1/2/38tq)。SYNC

4、_SEG、BS1段及BS2段的長(zhǎng)度加起來(lái)即一個(gè)數(shù)據(jù)位的長(zhǎng)度,即前面介紹的原來(lái)計(jì)算公式:T1bit =1Tq+TS1+TS2 =1+ (TS13:0 + 1)+ (TS22:0 + 1)等效于:T1bit = 1Tq+CAN_BS1+CAN_BS2CAN初始化結(jié)構(gòu)體CAN_TTCM本成員用于設(shè)置是否使用時(shí)間觸發(fā)功能(ENABLE/DISABLE),時(shí)間觸發(fā)功能在某些CAN標(biāo)準(zhǔn)中會(huì)使用到。CAN初始化結(jié)構(gòu)體CAN_ABOM本成員用于設(shè)置是否使用自動(dòng)離線(xiàn)管理(ENABLE/DISABLE),使用自動(dòng)離線(xiàn)管理可以在節(jié)點(diǎn)出錯(cuò)離線(xiàn)后適時(shí)自動(dòng)恢復(fù),不需要干預(yù)。CAN初始化結(jié)構(gòu)體CAN_ AWUM本成員用于設(shè)

5、置是否使用自動(dòng)喚醒功能(ENABLE/DISABLE),使能自動(dòng)喚醒功能后它會(huì)在監(jiān)測(cè)到總線(xiàn)活動(dòng)后自動(dòng)喚醒。CAN初始化結(jié)構(gòu)體CAN_NART本成員用于設(shè)置是否使用自動(dòng)重能(ENABLE/DISABLE),使用自動(dòng)重能時(shí),會(huì)一直發(fā)送報(bào)文直到成功為止。CAN初始化結(jié)構(gòu)體CAN_RFLM本成員用于設(shè)置是否使用鎖定接收FIFO(ENABLE/DISABLE),鎖定接收FIFO后,若FIFO溢出時(shí)會(huì)丟棄新數(shù)據(jù),否則在FIFO溢出時(shí)以新數(shù)據(jù)覆蓋舊數(shù)據(jù)。CAN初始化結(jié)構(gòu)體CAN_TXFP本成員用于設(shè)置發(fā)送報(bào)文的優(yōu)先級(jí)判定方法(ENABLE/DISABLE),使能時(shí),以報(bào)文存入發(fā)送郵箱的先后順序來(lái)發(fā)送,否則按

6、照?qǐng)?bào)文ID的優(yōu)先級(jí)來(lái)發(fā)送。CAN發(fā)送及接收結(jié)構(gòu)體在發(fā)送或接收?qǐng)?bào)文時(shí),需要往發(fā)送郵箱中寫(xiě)入報(bào)文信息或從接收FIFO中報(bào)文信息,利用STM32標(biāo)準(zhǔn)庫(kù)的發(fā)送及接收結(jié)構(gòu)體可以方便地完成這樣的工作。CAN發(fā)送及接收結(jié)構(gòu)體StdId本成員的是報(bào)文的11位標(biāo)準(zhǔn)標(biāo)識(shí)符,范圍是0-0 x7FF。ExtId本成員的是報(bào)文的29位擴(kuò)展標(biāo)識(shí)符,范圍是0-0 x1F。ExtId與StdId這兩個(gè)成員根據(jù)下面的IDE位配置,只有一個(gè)是有效的。CAN發(fā)送及接收結(jié)構(gòu)體IDE本成員的是擴(kuò)展標(biāo)志IDE位,當(dāng)它的值為宏CAN_ID_STD時(shí)表示本報(bào)文是標(biāo)準(zhǔn)幀,使用StdId成員報(bào)文ID;當(dāng)它的值為宏CAN_ID_EXT時(shí)表示本報(bào)文

7、是擴(kuò)展幀,使用ExtId成員報(bào)文ID。CAN發(fā)送及接收結(jié)構(gòu)體RTR本成員的是報(bào)文類(lèi)型標(biāo)志RTR位,當(dāng)它的值為宏CAN_RTR_Data時(shí)表示本報(bào)文是數(shù)據(jù)幀;當(dāng)它的值為宏CAN_RTR_Remote時(shí)表示本報(bào)文是幀,由于幀沒(méi)有數(shù)據(jù)段,所以當(dāng)報(bào)文是幀時(shí),下面的Data8成員的內(nèi)容是無(wú)效的。CAN發(fā)送及接收結(jié)構(gòu)體DLC本成員的是數(shù)據(jù)幀數(shù)據(jù)段的長(zhǎng)度,它的值的范圍是0-8,當(dāng)報(bào)文是幀時(shí)DLC值為0。Data8本成員的就是數(shù)據(jù)幀中數(shù)據(jù)段的數(shù)據(jù)。CAN發(fā)送及接收結(jié)構(gòu)體FMI本成員只存在于接收結(jié)構(gòu)體,它了篩選器的,表示本報(bào)文是經(jīng)過(guò)哪個(gè)篩選器進(jìn)接收FIFO的,可以用它簡(jiǎn)化處理。CAN發(fā)送及接收結(jié)構(gòu)體當(dāng)需要使用C

8、AN發(fā)送報(bào)文時(shí),先定義一個(gè)上面發(fā)送類(lèi)型的結(jié)構(gòu)體,然后把報(bào)文的內(nèi)容按成員賦值到該結(jié)構(gòu)體中,最后調(diào)用庫(kù)函數(shù)CAN_Transmit把這些內(nèi)容寫(xiě)入到發(fā)送郵箱即可把報(bào)文發(fā)送出去。接收?qǐng)?bào)文時(shí),通過(guò)檢測(cè)標(biāo)志位獲知接收FIFO的狀態(tài),若收到報(bào)文,可調(diào)用庫(kù)函數(shù)CAN_Receive把接收FIFO中的內(nèi)容到預(yù)先定義的接收類(lèi)型結(jié)構(gòu)體中,然后再該結(jié)構(gòu)體即可利用報(bào)文。CAN篩選器結(jié)構(gòu)體CAN_FilterIdHighCAN_FilterIdHigh成員用于要篩選的ID,若篩選器工作在32位模式,它的是所篩選ID的高16位;若篩選器工作在16位模式,它的就是一個(gè)完整的要篩選的ID。CAN篩選器結(jié)構(gòu)體CAN_Filter

9、IdLow類(lèi)似地,CAN_FilterIdLow成員也是用于要篩選的ID,若篩選器工作在32位模式,它的是所篩選ID的低16位;若篩選器工作在16位模式,它的就是一個(gè)完整的要篩選的ID。CAN篩選器結(jié)構(gòu)體CAN_FilterMaskIdHighCAN_FilterMaskIdHigh的內(nèi)容分兩種情況,當(dāng)篩選器工作在標(biāo)識(shí)符列表模式時(shí),它的功能與CAN_FilterIdHigh相同,都是要篩選的ID;而當(dāng)篩選器工作在掩碼模式時(shí),它的是CAN_FilterIdHigh成員對(duì)應(yīng)的掩碼,與CAN_FilterIdLow組成一組篩選器。CAN篩選器結(jié)構(gòu)體CAN_FilterMaskIdLow類(lèi)似地,CAN

10、_FilterMaskIdLow的內(nèi)容也分兩種情況,當(dāng)篩選器工作在標(biāo)識(shí)符列表模式時(shí),它的功能與CAN_FilterIdLow相同,都是要篩選的ID;而當(dāng)篩選器工作在掩碼模式時(shí),它的是CAN_FilterIdLow成員對(duì)應(yīng)的掩碼,與CAN_FilterIdLow組成一組篩選器。CAN篩選器結(jié)構(gòu)體不同模式下各結(jié)構(gòu)體成員的內(nèi)容:模式CAN_FilterIdHighCAN_FilterIdLowCAN_FilterMaskIdHighCAN_FilterMaskIdLow32位列表模式ID1的高16位ID1的低16位ID2的高16位ID2的低16位16位列表模式ID1的完整數(shù)值ID2的完整數(shù)值ID3的

11、完整數(shù)值ID4的完整數(shù)值32位掩碼模式ID1的高16位ID1的低16位ID1掩碼的高16位ID1掩碼的低16位16位掩碼模式ID1的完整數(shù)值ID2的完整數(shù)值ID1掩碼的完整數(shù)值ID2掩碼完整數(shù)值CAN篩選器結(jié)構(gòu)體CAN_FilterFIFOAssignment本成員用于設(shè)置當(dāng)報(bào)文通過(guò)篩選器的匹配后,該報(bào)文會(huì)被到哪一個(gè)接收FIFO,它的可選值為FIFO0或FIFO1(宏CAN_Filter_FIFO0/1)。CAN篩選器結(jié)構(gòu)體CAN_FilterNumber本成員用于設(shè)置篩選器的,即本過(guò)濾器結(jié)構(gòu)體配置的是哪一組篩選器,CAN一共有28個(gè)篩選器,所以它的可輸入?yún)?shù)范圍為0-27。CAN篩選器結(jié)構(gòu)體CAN_FilterMode本成員用于設(shè)置篩選器的工作模式,可以設(shè)置為列表模式(宏CAN_FilterMode_IdList)及掩碼模式(宏CAN_FilterMode_IdMask)。CAN篩選器結(jié)構(gòu)體C

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論