1寫在前面
該教程前面講述了許多關于CAN協(xié)議的一些概念,可能許多初學者看的云里霧里,那么本文將結合代碼讓大家理解之前講述的內容。
因為關注我的人大部分都在學習STM32,我將結合STM32F103、標準外設庫例程來讓大家理解之前講述的一些概念。
本文主要講述內容:
1.傳輸數(shù)據(jù)相關參數(shù)
2.位時序及傳輸波特率
為方便大家理解,我將在最后提供對應例程「CANOpen系列教程06_CAN底層收發(fā)例程」。當然,本文只講述代碼中部分內容,某些配置參數(shù)放在后面講述。
2
傳輸數(shù)據(jù)相關參數(shù)
傳輸數(shù)據(jù)相關參數(shù)其實主要就是前面《CANOpen系列教程04》講述的“幀類型及格式說明”那一章節(jié)內容,建議先看下那些概念內容。
CAN總線傳輸?shù)膬热葜饕褪前l(fā)送和接收,下面我將結合代碼中發(fā)送和接收參數(shù)來讓大家理解我們編程控制CAN總線上那些參數(shù)。
2.1 CAN總線數(shù)據(jù)幀
本文提供例程主要是CAN總線使用最多的數(shù)據(jù)幀為例,讓大家理解數(shù)據(jù)幀傳輸由我們編程控制的參數(shù)。
先看下圖回顧一下數(shù)據(jù)幀格式,其中有些字段內容由控制器自動完成,如:幀起始,CRC校驗。而有些就是由我們編程控制,如:ID、數(shù)據(jù)等。

2.2 CAN發(fā)送代碼
A.CAN發(fā)送數(shù)據(jù)結構
下圖主要就是CAN發(fā)送由我們編程控制的參數(shù)。其實你會發(fā)現(xiàn),主要就是上面幀格式中部分內容:ID、IDE、RTR、DLC、Data。

B.發(fā)送配置參數(shù)
下圖為實際發(fā)送配置的參數(shù)。

2.3 CAN接收代碼
CAN接收其實和發(fā)送類似,CAN總線上的字段就那些,在接收端接收的那些參數(shù)無非就是發(fā)送端發(fā)送出來的那些參數(shù)。
針對STM32內部集成的CAN,接收數(shù)據(jù)結構多了一個FMI參數(shù),大概意思就是接收消息郵箱篩選器索引。

接收操作
為方便初學者理解,這里這要就是使用中斷接收CAN總線數(shù)據(jù),在中斷函數(shù)里面打印也主要是用于測試,一般實際項目打印不會出現(xiàn)在中斷函數(shù)(打印相對耗時)。

3
位時序及傳輸波特率
同樣,在前面《CANOpen系列教程04》中有講述“位時序及傳輸波特率”的概念。其實,位時序間接決定了傳輸?shù)牟ㄌ芈?。換句話說,傳輸?shù)牟ㄌ芈视晌粫r序幾個參數(shù)決定。
看下圖,回顧一下波特率計算公式:

3.1 波特率配置代碼
結合上圖計算公式和下圖代碼,可以看出位時序中幾個參數(shù)和波特率的關系。波特率為1M時,幾個位時序參數(shù)可以配置為如下圖值:

提示:
36M代表CAN時鐘,具體要看時鐘相關配置。
波特率固定,位時序參數(shù)可以不同。比如波特率固定為1M,位時序參數(shù)可以為上圖配置;也可以修改其中的值,如修改位段1為CAN_BS1_5tq,位段2為CAN_BS2_3tq。只要遵循波特率計算公式即可。
-
CAN
+關注
關注
58文章
3005瀏覽量
471372 -
CANopen
+關注
關注
8文章
456瀏覽量
47500 -
代碼
+關注
關注
30文章
4940瀏覽量
73083
發(fā)布評論請先 登錄
CAN如何進行錄波,接收所有數(shù)據(jù)?
CANopen轉Profient網(wǎng)關協(xié)議介紹
Texas Instruments TCAN1043A-Q1汽車級CAN FD收發(fā)器技術解析
?TCAN1162-Q1汽車級CAN FD收發(fā)器技術解析
移植CANfestival,發(fā)現(xiàn)can無法接收數(shù)據(jù),為什么?
TCAN341x系列3.3V CAN FD收發(fā)器技術解析與應用指南
ProfiNet轉CAN/CANopen網(wǎng)關技術詳解
CAN收發(fā)器:總線信號的“翻譯官”
盟通方案|CANopen數(shù)據(jù)鏈路配置工具
使用ES32實現(xiàn)CANopen從機
EtherCAT轉CANopen配置CANopen側的PDO映射
CANOPEN協(xié)議詳細介紹
茂睿芯全系列車規(guī)CAN收發(fā)器均已實現(xiàn)量產出貨

CANOpen系列教程06_ 結合代碼理解CAN底層收發(fā)數(shù)據(jù)
評論