1寫在前面
該教程前面講述了許多關于CAN協議的一些概念,可能許多初學者看的云里霧里,那么本文將結合代碼讓大家理解之前講述的內容。
因為關注我的人大部分都在學習STM32,我將結合STM32F103、標準外設庫例程來讓大家理解之前講述的一些概念。
本文主要講述內容:
1.傳輸數據相關參數
2.位時序及傳輸波特率
為方便大家理解,我將在最后提供對應例程「CANOpen系列教程06_CAN底層收發例程」。當然,本文只講述代碼中部分內容,某些配置參數放在后面講述。
2
傳輸數據相關參數
傳輸數據相關參數其實主要就是前面《CANOpen系列教程04》講述的“幀類型及格式說明”那一章節內容,建議先看下那些概念內容。
CAN總線傳輸的內容主要就是發送和接收,下面我將結合代碼中發送和接收參數來讓大家理解我們編程控制CAN總線上那些參數。
2.1 CAN總線數據幀
本文提供例程主要是CAN總線使用最多的數據幀為例,讓大家理解數據幀傳輸由我們編程控制的參數。
先看下圖回顧一下數據幀格式,其中有些字段內容由控制器自動完成,如:幀起始,CRC校驗。而有些就是由我們編程控制,如:ID、數據等。
2.2 CAN發送代碼
A.CAN發送數據結構
下圖主要就是CAN發送由我們編程控制的參數。其實你會發現,主要就是上面幀格式中部分內容:ID、IDE、RTR、DLC、Data。
B.發送配置參數
下圖為實際發送配置的參數。
2.3 CAN接收代碼
CAN接收其實和發送類似,CAN總線上的字段就那些,在接收端接收的那些參數無非就是發送端發送出來的那些參數。
針對STM32內部集成的CAN,接收數據結構多了一個FMI參數,大概意思就是接收消息郵箱篩選器索引。
接收操作
為方便初學者理解,這里這要就是使用中斷接收CAN總線數據,在中斷函數里面打印也主要是用于測試,一般實際項目打印不會出現在中斷函數(打印相對耗時)。
3
位時序及傳輸波特率
同樣,在前面《CANOpen系列教程04》中有講述“位時序及傳輸波特率”的概念。其實,位時序間接決定了傳輸的波特率。換句話說,傳輸的波特率由位時序幾個參數決定。
看下圖,回顧一下波特率計算公式:
3.1 波特率配置代碼
結合上圖計算公式和下圖代碼,可以看出位時序中幾個參數和波特率的關系。波特率為1M時,幾個位時序參數可以配置為如下圖值:
提示:
36M代表CAN時鐘,具體要看時鐘相關配置。
波特率固定,位時序參數可以不同。比如波特率固定為1M,位時序參數可以為上圖配置;也可以修改其中的值,如修改位段1為CAN_BS1_5tq,位段2為CAN_BS2_3tq。只要遵循波特率計算公式即可。
-
CAN
+關注
關注
57文章
2770瀏覽量
464398 -
CANopen
+關注
關注
8文章
270瀏覽量
43763 -
代碼
+關注
關注
30文章
4828瀏覽量
69063
發布評論請先 登錄
相關推薦
三格電子- EtherCAT轉CANopen/ CAN網關
![三格電子- EtherCAT轉<b class='flag-5'>CANopen</b>/ <b class='flag-5'>CAN</b>網關](https://file1.elecfans.com/web1/M00/F5/20/wKgZoWc27o6AMDk9AAORA6a3rcI459.png)
CAN總線收發器的工作原理和應用
SN65HVD1040-Q1 EMC優化CAN收發器數據表
![SN65HVD1040-Q1 EMC優化<b class='flag-5'>CAN</b><b class='flag-5'>收發</b>器<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
SN65HVD1050 EMC優化CAN總線收發器數據表
![SN65HVD1050 EMC優化<b class='flag-5'>CAN</b>總線<b class='flag-5'>收發</b>器<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
SN65HVD26x支持CAN FD(靈活數據速率)和冗余的Turbo CAN收發器數據表
![SN65HVD26x支持<b class='flag-5'>CAN</b> FD(靈活<b class='flag-5'>數據</b>速率)和冗余的Turbo <b class='flag-5'>CAN</b><b class='flag-5'>收發</b>器<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TCAN1051具有CAN FD和故障保護功能的CAN收發器數據表
![TCAN1051具有<b class='flag-5'>CAN</b> FD和故障保護功能的<b class='flag-5'>CAN</b><b class='flag-5'>收發</b>器<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
EMC優化CAN收發器SN65HVD1050-EP 數據表
![EMC優化<b class='flag-5'>CAN</b><b class='flag-5'>收發</b>器SN65HVD1050-EP <b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TCAN33x具備CAN FD(靈活數據速率)的3.3V CAN收發器數據表
![TCAN33x具備<b class='flag-5'>CAN</b> FD(靈活<b class='flag-5'>數據</b>速率)的3.3V <b class='flag-5'>CAN</b><b class='flag-5'>收發</b>器<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
TCAN1042具有CAN FD和故障保護功能的CAN收發器數據表
![TCAN1042具有<b class='flag-5'>CAN</b> FD和故障保護功能的<b class='flag-5'>CAN</b><b class='flag-5'>收發</b>器<b class='flag-5'>數據</b>表](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
CAN收發器與CAN控制器的區別
汽車CAN收發器的作用、原理及構成
【米爾-瑞薩RZ/G2UL開發板】5.CAN通訊進階CANopen
思瑞浦發布高速CAN收發器TPT133X系列
![思瑞浦發布高速<b class='flag-5'>CAN</b><b class='flag-5'>收發</b>器TPT133X<b class='flag-5'>系列</b>](https://file1.elecfans.com//web2/M00/C3/FB/wKgZomXv_KeAT7a5AABEpzMZzfA037.png)
評論