視頻配套和程序匯總里寫(xiě)代碼都放在這里_第1頁(yè)
視頻配套和程序匯總里寫(xiě)代碼都放在這里_第2頁(yè)
視頻配套和程序匯總里寫(xiě)代碼都放在這里_第3頁(yè)
視頻配套和程序匯總里寫(xiě)代碼都放在這里_第4頁(yè)
視頻配套和程序匯總里寫(xiě)代碼都放在這里_第5頁(yè)
已閱讀5頁(yè),還剩16頁(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)介

主講內(nèi)容01CAN協(xié)議簡(jiǎn)介02STM32的CAN外設(shè)簡(jiǎn)介03CAN控制的相關(guān)結(jié)構(gòu)體CAN—通訊實(shí)驗(yàn)04參考資料:《零死角玩轉(zhuǎn)STM32》“CAN—通訊實(shí)驗(yàn)”章節(jié)CAN—通訊實(shí)驗(yàn)STM32的CAN外設(shè)簡(jiǎn)介STM32的中具有bxCAN控制器(Basic

ExtendedCAN),它支持CAN協(xié)議2.0A和2.0B標(biāo)準(zhǔn)。該CAN控制器支持最高的通訊速率為1Mb/s;可以自動(dòng)地接收和發(fā)送CAN報(bào)文,支持使用標(biāo)準(zhǔn)ID和擴(kuò)展ID的報(bào)文;外設(shè)中具有3個(gè)發(fā)送郵箱,發(fā)送報(bào)文的優(yōu)先級(jí)可以使用控制,還可以記錄發(fā)送的時(shí)間;具有2個(gè)3級(jí)深度的接收FIFO,可使用過(guò)濾功能只接收或不接收某些ID號(hào)的報(bào)文;可配置成自動(dòng)重發(fā);不支持使用DMA進(jìn)行數(shù)據(jù)收發(fā)。CAN—通訊實(shí)驗(yàn)CAN框圖剖析CAN控制內(nèi)核CAN發(fā)送郵箱CAN接收FIFO驗(yàn)收篩選器整體控制邏輯STM32的有兩組CAN控制器,其中CAN1是主設(shè)備,框圖中的“ 控制器”是由CAN1控制的,CAN2無(wú)法直接 區(qū)域,所以使用CAN2的時(shí)候必須使能CAN1外設(shè)的時(shí)鐘。CAN—通訊實(shí)驗(yàn)CAN控制內(nèi)核框圖中標(biāo)號(hào)處的CAN控制內(nèi)核包含了各種控制寄存器及狀態(tài)寄存器,主要講解其中的主控制寄存器CAN_MCR及位時(shí)序寄存器CAN_BTR。主控制寄存器CAN_MCR負(fù)責(zé)管理CAN的工作模式,它使用以下寄存器位實(shí)現(xiàn)控制。DBF調(diào)試凍結(jié)功能DBF(Debug

freeze)調(diào)試凍結(jié),使用它可設(shè)置CAN處于工作狀態(tài)或收發(fā)的狀態(tài), 收發(fā)時(shí)仍可

接收FIFO中的數(shù)據(jù)。這兩種狀態(tài)是當(dāng)STM32處于程序調(diào)試模式時(shí)才使用的,平時(shí)使用并不影響。TTCM時(shí)間觸發(fā)模式TTCM(Time

triggered

communication

mode)時(shí)間觸發(fā)模式,它用于配置CAN的時(shí)間觸發(fā)通信模式,在此模式下,CAN使用它并把它保存在CAN_RDTxR、CAN_TDTxR寄存器中。定時(shí)器產(chǎn)生時(shí)間戳,定時(shí)器在每個(gè)CAN位時(shí)間累加,在接收和發(fā)送的幀起始位被采樣,并生成時(shí)間戳。利用它可以實(shí)現(xiàn)ISO

11898-4

CAN標(biāo)準(zhǔn)的分時(shí)同步通信功能。CAN—通訊實(shí)驗(yàn)主控制寄存器CAN_MCRABOM自動(dòng)離線管理ABOM(Automatic

bus-off

management)

自動(dòng)離線管理,它用于設(shè)置是否使用自動(dòng)離線管理功能。當(dāng)節(jié)點(diǎn)檢測(cè)到它發(fā)送錯(cuò)誤或接收錯(cuò)誤超過(guò)一定值時(shí),會(huì)自動(dòng)進(jìn)入離線狀態(tài),在離線狀態(tài)中,CAN不能接收或發(fā)送報(bào)文。處于離線狀態(tài)的時(shí)候,可以控制恢復(fù)或者直接使用這個(gè)自動(dòng)離線管理功能,它會(huì)在適當(dāng)?shù)臅r(shí)候自動(dòng)恢復(fù)。AWUM自動(dòng)喚醒AWUM(Automatic

bus-off

management),自動(dòng)喚醒功能,CAN外設(shè)可以使用 進(jìn)入低功耗的睡眠模式,如果使能了這個(gè)自動(dòng)喚醒功能,當(dāng)CAN檢測(cè)到總線活動(dòng)的時(shí)候,會(huì)自動(dòng)喚醒。CAN—通訊實(shí)驗(yàn)主控制寄存器CAN_MCRNART自動(dòng)重傳NART(No

automaticretransmission)報(bào)文自動(dòng)重

能,設(shè)置這個(gè)功能后,當(dāng)報(bào)文發(fā)送失敗時(shí)會(huì)自動(dòng)重傳至成功為止。若不使用這個(gè)功能,無(wú)論發(fā)送結(jié)果如何,消息只發(fā)送一次。RFLM鎖定模式RFLM(Receive

FIFO

locked

mode)FIFO鎖定模式,該功能用于鎖定接收FIFO。鎖定后,當(dāng)接收FIFO溢出時(shí),會(huì)丟棄下一個(gè)接收的報(bào)文。若不鎖定,則下一個(gè)接收到的報(bào)文會(huì)覆蓋原報(bào)文。TXFP報(bào)文發(fā)送優(yōu)先級(jí)的判定方法TXFP(TransmitFIFOpriority)報(bào)文發(fā)送優(yōu)先級(jí)的判定方法,當(dāng)CAN外設(shè)的發(fā)送郵箱中有多個(gè)待發(fā)送報(bào)文時(shí),本功能可以控制它是根據(jù)報(bào)文的ID優(yōu)先級(jí)還是報(bào)文存進(jìn)郵箱的順序來(lái)發(fā)送。CAN—通訊實(shí)驗(yàn)工作模式為方便調(diào)試,STM32的CAN提供了測(cè)試模式,配置位時(shí)序寄存器

CAN_BTR的SILM及LBKM寄存器位可以控制使用正常模式、靜默模式、回環(huán)模式及靜默回環(huán)模式CAN—通訊實(shí)驗(yàn)工作模式正常模式正常模式下就是一個(gè)正常的CAN節(jié)點(diǎn),可以向總線發(fā)送數(shù)據(jù)和接收數(shù)據(jù)。靜默模式靜默模式下,它自己的輸出端的邏輯0數(shù)據(jù)會(huì)直接傳輸?shù)剿约旱妮斎攵耍壿?可以被發(fā)送到總線,所以它不能向總線發(fā)送顯性位(邏輯0),只能發(fā)送隱性位(邏輯1)。輸入端可以從總線接收內(nèi)容。由于它只可發(fā)送的隱性位不會(huì)強(qiáng)制影響總線的狀態(tài),所以把它稱(chēng)為靜默模式。這種模式一般用于監(jiān)測(cè),它可以用于分析總線上的流量,但又不會(huì)因?yàn)榘l(fā)送顯性位而影響總線。CAN—通訊實(shí)驗(yàn)工作模式回環(huán)模式回環(huán)模式下,它自己的輸出端的所有內(nèi)容都直接傳輸?shù)阶约旱妮斎攵?,輸出端的?nèi)容同時(shí)也會(huì)被傳輸?shù)娇偩€上,即也可使用總線監(jiān)測(cè)它的發(fā)送內(nèi)容。輸入端只接收自己發(fā)送端的內(nèi)容,不接收來(lái)自總線上的內(nèi)容。使用回環(huán)模式可以進(jìn)行自檢?;丨h(huán)靜默模式回環(huán)靜默模式是以上兩種模式的結(jié)合,自己

的輸出端的所有內(nèi)容都直接傳輸?shù)阶约旱妮?/p>

入端,并且不會(huì)向總線發(fā)送顯性位影響總線,不能通過(guò)總線監(jiān)測(cè)它的發(fā)送內(nèi)容。輸入端只

接收自己發(fā)送端的內(nèi)容,不接收來(lái)自總線上

的內(nèi)容。這種方式可以在“熱自檢”時(shí)使用,即自我檢查的時(shí)候,不會(huì)干擾總線。CAN—通訊實(shí)驗(yàn)位時(shí)序及波特率STM32外設(shè)定義的位時(shí)序與前面解釋的CAN標(biāo)準(zhǔn)時(shí)序有一點(diǎn)區(qū)別:STM32的CAN外設(shè)位時(shí)序中只包含3段,分別是同步段SYNC_SEG、位段BS1及位段BS2,采樣點(diǎn)位于BS1及BS2段的交界處。其中SYNC_SEG段固定長(zhǎng)度為1Tq,而B(niǎo)S1及BS2段可以在位時(shí)序寄存器CAN_BTR設(shè)置它們的時(shí)間長(zhǎng)度,它們可以在重新同步期間增長(zhǎng)或縮短,該長(zhǎng)度SJW也可在位時(shí)序寄存器中配置。理解STM32的CAN外設(shè)的位時(shí)序時(shí),可以把它的BS1段理解為是由CAN標(biāo)準(zhǔn)協(xié)議中PTS段與PBS1段合在一起的,而B(niǎo)S2段就相當(dāng)于PBS2段。CAN—通訊實(shí)驗(yàn)位時(shí)序及波特率通過(guò)配置位時(shí)序寄存器CAN_BTR的TS1[3:0]及TS2[2:0]寄存器位設(shè)定BS1及BS2段的長(zhǎng)度后,就可以確定每個(gè)CAN數(shù)據(jù)位的時(shí)間:BS1段時(shí)間:TS1=Tq

x

(TS1[3:0]

+

1),BS2段時(shí)間:TS2=

Tq

x

(TS2[2:0]

+

1),一個(gè)數(shù)據(jù)位的時(shí)間:T1bit

=1Tq+TS1+TS2

=1+

(TS1[3:0]

+

1)+

(TS2[2:0]

+

1)=

N

Tq其中單個(gè)時(shí)間片的長(zhǎng)度Tq與CAN外設(shè)的所掛載的時(shí)鐘總線及分頻器配置有關(guān),

CAN1和CAN2外設(shè)都是掛載在APB1總線上的,而位時(shí)序寄存器CAN_BTR中的BRP[9:0]寄存器位可以設(shè)置CAN外設(shè)時(shí)鐘的分頻值,所以:Tq

=

(BRP[9:0]+1)

x

TPCLK其中的PCLK指APB1時(shí)鐘,默認(rèn)值為36MHz。最終可以計(jì)算出CAN通訊的波特率:BaudRate

=

1/N

TqCAN—通訊實(shí)驗(yàn)參數(shù)說(shuō)明SYNC_SE段固定為1TqBS1段設(shè)置為5Tq(實(shí)際寫(xiě)入TS1[3:0]的值為4)BS2段設(shè)置為3Tq(實(shí)際寫(xiě)入TS2[2:0]的值為2)TPCLKAPB1按默認(rèn)配置為F=36MHz,TPCLK=1/36MCAN外設(shè)時(shí)鐘分頻設(shè)置為4分頻(實(shí)際寫(xiě)入BRP[9:0]的值為3)1Tq時(shí)間長(zhǎng)度Tq

=

(BRP[9:0]+1)x

TPCLK

= 4

x

1/36M=1/9M1位的時(shí)間長(zhǎng)度T1bit

=1Tq+TS1+TS2

= 1+5+3

=

9Tq波特率BaudRate

=

1/N

Tq

= 1/(1/9M

x

9)=1Mbps位時(shí)序及波特率一種把波特率配置為1Mbps的方式:CAN—通訊實(shí)驗(yàn)CAN發(fā)送郵箱CAN外設(shè)一共有3個(gè)發(fā)送郵箱,即最多可以緩存3個(gè)待發(fā)送的報(bào)文。每個(gè)發(fā)送郵箱中包含有標(biāo)識(shí)符寄存器CAN_TIxR、數(shù)據(jù)長(zhǎng)度控制寄存器CAN_TDTxR及2個(gè)數(shù)據(jù)寄存器CAN_TDLxR、CAN_TDHxR,它們的功能如下:寄存器名功能標(biāo)識(shí)符寄存器CAN_TIxR待發(fā)送報(bào)文的ID、擴(kuò)展ID、IDE位及RTR位數(shù)據(jù)長(zhǎng)度控制寄存器CAN_TDTxR待發(fā)送報(bào)文的DLC段低位數(shù)據(jù)寄存器CAN_TDLxR待發(fā)送報(bào)文數(shù)據(jù)段的Data0-Data3這

節(jié)的內(nèi)容數(shù)據(jù)寄存器CAN_TDHxR待發(fā)送報(bào)文數(shù)據(jù)段的Data4-Data7這

節(jié)的內(nèi)容CAN—通訊實(shí)驗(yàn)CAN發(fā)送郵箱寄存器名功能標(biāo)識(shí)符寄存器CAN_TIxR待發(fā)送報(bào)文的ID、擴(kuò)展ID、IDE位及RTR位數(shù)據(jù)長(zhǎng)度控制寄存器CAN_TDTxR待發(fā)送報(bào)文的DLC段低位數(shù)據(jù)寄存器CAN_TDLxR待發(fā)送報(bào)文數(shù)據(jù)段的Data0-Data3這

節(jié)的內(nèi)容數(shù)據(jù)寄存器CAN_TDHxR待發(fā)送報(bào)文數(shù)據(jù)段的Data4-Data7這

節(jié)的內(nèi)容當(dāng)要使用CAN外設(shè)發(fā)送報(bào)文時(shí),把報(bào)文的各個(gè)段分解,按位置寫(xiě)入到這些寄存器中,并對(duì)標(biāo)識(shí)符寄存器CAN_TIxR中的發(fā)送請(qǐng)求寄存器位TMIDxR_TXRQ置1,即可把數(shù)據(jù)發(fā)送出去。其中標(biāo)識(shí)符寄存器CAN_TIxR中的STDID寄存器位比較特別。CAN的標(biāo)準(zhǔn)標(biāo)識(shí)符的總位數(shù)為11位,而擴(kuò)展標(biāo)識(shí)符的總位數(shù)為29位的。當(dāng)報(bào)文使用擴(kuò)展標(biāo)識(shí)符的時(shí)候,標(biāo)識(shí)符寄存器CAN_TIxR中的STDID[10:0]等效于EXTID[18:28]位,它與

EXTID[17:0]共同組成完整的29位擴(kuò)展標(biāo)識(shí)符。CAN—通訊實(shí)驗(yàn)寄存器名功能標(biāo)識(shí)符寄存器CAN_RIxR收到報(bào)文的ID、擴(kuò)展ID、IDE位及RTR位數(shù)據(jù)長(zhǎng)度控制寄存器CAN_RDTxR收到報(bào)文的DLC段低位數(shù)據(jù)寄存器CAN_RDLxR收到報(bào)文數(shù)據(jù)段的Data0-Data3這

節(jié)的內(nèi)容數(shù)據(jù)寄存器CAN_RDHxR收到報(bào)文數(shù)據(jù)段的Data4-Data7這

節(jié)的內(nèi)容CAN接收FIFOCAN外設(shè)一共有2個(gè)接收FIFO,每個(gè)FIFO中有3個(gè)郵箱,即最多可以緩存6個(gè)接收到的報(bào)文。當(dāng)接收到報(bào)文時(shí),F(xiàn)IFO的報(bào)文計(jì)數(shù)器會(huì)自增,而STM32內(nèi)部

FIFO數(shù)據(jù)之后,報(bào)文計(jì)數(shù)器會(huì)自減,通過(guò)狀態(tài)寄存器可獲知報(bào)文計(jì)數(shù)器的值,而通過(guò)前面主控制寄存器的RFLM位,可設(shè)置鎖定模式,鎖定模式下FIFO溢出時(shí)會(huì)丟棄 文,非鎖定模式下FIFO溢出時(shí)

文會(huì)覆蓋舊報(bào)文。跟發(fā)送郵箱類(lèi)似,每個(gè)接收FIFO中包含有標(biāo)識(shí)符寄存器CAN_RIxR、數(shù)據(jù)長(zhǎng)度控制寄存器CAN_RDTxR及2個(gè)數(shù)據(jù)寄存器CAN_RDLxR、CAN_RDHxR,其功能如下:CAN—通訊實(shí)驗(yàn)驗(yàn)收篩選器CAN外設(shè)的驗(yàn)收篩選器,一共有28個(gè)篩選器組,每個(gè)篩選器組有2個(gè)寄存器,CAN1和CAN2共用的篩選器的。在CAN

協(xié)議中,消息的標(biāo)識(shí)符與節(jié)點(diǎn)地址無(wú)關(guān),但與消息內(nèi)容有關(guān)。因此,發(fā)送節(jié)點(diǎn)將報(bào)文廣播給所有確定

是否需要該消息,為了簡(jiǎn)化時(shí),接收節(jié)點(diǎn)會(huì)根據(jù)報(bào)文標(biāo)識(shí)符的值來(lái)的工作,STM32的CAN外設(shè)接收?qǐng)?bào)文前會(huì)先使用驗(yàn)收篩選器檢查,只接收需要的報(bào)文到FIFO中。篩選器工作的時(shí)候,可以調(diào)整篩選ID的長(zhǎng)度及過(guò)濾模式。根據(jù)篩選ID長(zhǎng)度來(lái)分類(lèi)有有以下兩種:檢查STDID[10:0]、EXTID[17:0]、IDE

和RTR

位,一共31位。檢查STDID[10:0]、RTR、IDE

和EXTID[17:15],一共16位。而根據(jù)過(guò)濾的方法分為以下兩種模式:標(biāo)識(shí)符列表模式,它把要接收?qǐng)?bào)文的ID列成一個(gè)表,要求報(bào)文ID與列表中的某一個(gè)標(biāo)識(shí)符完全相同才可以接收,可以理解為白 管理。掩碼模式,它把可接收?qǐng)?bào)文ID的某幾位作為列表,這幾位被稱(chēng)為掩碼,可以把它理解成關(guān)鍵字搜索,只要掩碼(關(guān)鍵字)相同,就符合要求,報(bào)文就會(huì)被保存到接收FIFO。CAN—通訊實(shí)驗(yàn)驗(yàn)收篩選器通過(guò)配置篩選尺度寄存器CAN_FS1R的FSCx位可以設(shè)置篩選器工作在哪個(gè)尺度。通過(guò)配置篩選模式寄存器CAN_FM1R的FBMx位可以設(shè)置篩選器工作在哪個(gè)模式。CAN—通訊實(shí)驗(yàn)驗(yàn)收篩選器每組篩選器包含2個(gè)32位的寄存器,分別為CAN_FxR1和CAN_FxR2,它們用來(lái)圖中兩個(gè)寄存器下面“要篩選的ID或掩碼,各個(gè)寄存器位代表的意義與

”的一欄一致,各個(gè)模式的說(shuō)明如下:模式說(shuō)明32位掩碼模式CAN_FxR1

ID,CAN_FxR2

哪個(gè)位必須要與CAN_FxR1中的ID一致,2個(gè)寄存器表示1組掩碼。32位標(biāo)識(shí)符模式CAN_FxR1和CAN_FxR2各

1個(gè)ID,2個(gè)寄存器表示2個(gè)篩選的ID16位掩碼模式CAN_FxR1高

溫馨提示

  • 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)論