STM32的can 现场总线实验心得 最近在搞stm32 实验板的can 现场总线实验,之前只是搞过STC51 的串口通信,相比之下,发觉can 总线都挺复杂的
开始时,知道自己是新手,只知道 can 总线跟串行通信,485 通信,I2C 通信一样都是用来传输数据通信的,对其工作原理一窍不通,还是从基础开始看书看资料,先了解它的基本原理吧
原来 can 总线有以下特点: 主要特点 支持CAN协议2
0B主动模式 波特率最高可达1兆位/秒 支持时间触发通信功能 发送 3个发送邮箱 发送报文的优先级特性可软件配置 记录发送SOF时刻的时间戳 接收 3级深度的2个接收FIFO 14个位宽可变的过滤器组-由整个CAN共享 标识符列表 FIFO溢出处理方式可配置 记录接收SOF时刻的时间戳 可支持时间触发通信模式 禁止自动重传模式 16位自由运行定时器 定时器分辨率可配置 可在最后2个数据字节发送时间戳 管理 中断可屏蔽 邮箱占用单独 1 块地址空间,便于提高软件效率 看完这些特点后,疑问一个一个地出现, 1
什么是时间触发功能
发送邮箱是什么来的
报文是什么来的
什么叫时间戳
什么叫接收 FIFO
什么叫过滤器
好了,带着疑问往下看,看完一遍后, 报文: 报文包含了将要发送的完整的数据信息 发送邮箱: 共有3 个发送邮箱供软件来发送报文
发送调度器根据优先级决定哪个邮箱的报文先被发送
接收过滤器: 共有14个位宽可变/可配置的标识符过滤器组,软件通过对它们编程,从而在引脚收到的报文中选择它需要的报文,而把其它报文丢弃掉
接收FIFO 共有2个接收FIFO,每个FIFO都可以存放3个完整的报文
它们完全由硬件来管理 工作模式 bxCAN 有3 个主要的工作模