STM32的CAN應(yīng)用嘗試
STM32 CAN總線初始化步驟:
本文引用地址:http://m.butianyuan.cn/article/201611/322580.htm1、
使能CAN時鐘,通過APB1ENR的第25位來設(shè)置。其次要設(shè)置CAN的相關(guān)引腳為復(fù)用輸出,設(shè)置為上拉輸入(CAN_RX),設(shè)置為復(fù)用輸出(CAN_TX),并使能PA口的時鐘。
2、
先設(shè)置CAN_MCR寄存器的INRQ位,讓CAN進入初始化模式,然后設(shè)置CAN_MCR的其他相關(guān)控制位,再通過CAN_BTR設(shè)置波特率和工作模式(正常模式/環(huán)回模式)等信息。最后設(shè)置INRQ為0,退出初始化模式。
3、
設(shè)置CAN_FMR的FINIT位,讓過濾器組工作在初始化模式下,然后設(shè)置濾波器組0的工作模式以及標識符ID和屏蔽為。最后激活濾波器。并退出濾波器初始化模式。如果用到中斷,還要配置中斷模式。
配置系統(tǒng)時鐘和引腳不用做過多的說明了,每一個例程基本上都有所包含。
重要的一點事如何設(shè)計CAN的工作模式和波特率。
當CAN進入初始化之后,先設(shè)置CAN_MCR的控制位。見下面的圖
用來控制這些設(shè)置。
接下來是設(shè)置寄存器CAN_BTR,通過這個寄存器來設(shè)置CAN的工作模式和波特率。
寄存器描述
程序代碼
mode用來設(shè)置模式,普通模式或者回環(huán)模式。
而下面的四個用來設(shè)置波特率,tsjw tbs2 tbs1 brp
這四個參數(shù)是怎么來決定CAN的波特率的呢?
然后使CAN退出初始化模式
然后再初始化過濾器
然后就可以開始進行通訊了。
待續(xù)
評論