暑假学习的时候看到了CAN总线,几个小伙伴好像看的都比较苦恼。是的,对于大量的说明难免有些不想看,看不懂为什么要把TIM这些东西设为1,很多字符又代表什么意思......但对知识的畏惧是无法向前的。静下心来慢慢看就好了!我在这里记录一些我学习CAN协议过程中的理解总结,希望能帮到一些初学者。
CAN的组成框图
下图为互联网型的双CAN框图:
我使用的F103ZET6只有一个串口,其中3个发送邮箱和3个FIFO0与FIFO1接受是十分重要的部分,左边的是一些相关状态或控制寄存器。先眼熟一下,接下来会用到他们。(大量的寄存器字符就是左边那些要用到的)
CAN的发送流程
CAN 发送流程为:程序选择 1 个空置的邮箱(TME=1)→设置标识符(ID),数据长度和发送数据→设置 CAN_TIxR 的 TXRQ 位为 1,请求发送→邮箱挂号(等待成为最高优先级)→预定发送(等待总线空闲)→发送→邮箱空置