STM32 CAN发送邮箱和接收FIFO

STM32的CAN发送邮箱和接收FIFO

CAN发送邮箱

  • CAN外设一共有3个发送邮箱,即最多可以缓存3个待发送的报文。每个发送邮箱中包含有标识符寄存器CAN_TIxR、数据长度控制寄存器CAN_TDTxR及2个数据寄存器CAN_TDLxR、 CAN_TDHxR,它们的功能如下:
寄存器名 功能
标识符寄存器CAN_TIxR 存储待发送报文的ID、 扩展ID、 IDE位及RTR位
数据长度控制寄存器CAN_TDTxR 存储待发送报文的DLC段
低位数据寄存器CAN_TDLxR 存储待发送报文数据段的Data0-Data3这四个字节的内容
高位数据寄存器CAN_TDHxR 存储待发送报文数据段的Data4-Data7这四个字节的内容
  • 当要使用CAN外设发送报文时,把报文的各个段分解,按位置写入到这些寄存器中,并对标识符寄存器CAN_TIxR中的发送请求寄存器位TMIDxR_TXRQ置1,即可把数据发送出去。
  • 其中标识符寄存器CAN_TIxR中的STDID寄存器位比较特别。 CAN的标准标识符的总位数为11位,而扩展标识符的总位数为29位的。当报文使用扩展标识符的时候,标识符寄存器CAN_TIxR中的STDID[10:0]等效于EXTID[18:28]位,它与EXTID[17:0]共同组成完整的29位扩展标识符。

CAN接收FIFO

  • CAN外设一共有2个接收FIFO,每个FIFO中有3个邮箱,即最多可以缓存6个接收到的报文。当接收到报文时, FIFO的报文计数器会自增,而STM32内部读取FIFO数据之后,报文计数器会自减,通过状态寄存器可获知报文计数器的值,而通过前面主控制寄存器的RFLM位,可设置锁定模式,锁定模式下FIFO溢出时会丢弃新报文,非锁定模式下FIFO溢出时新报文会覆盖旧报文。
  • 跟发送邮箱类似,每个接收FIFO中包含有标识符寄存器CAN_RIxR、数据长度控制寄存器CAN_RDTxR及2个数据寄存器CAN_RDLxR、 CAN_RDHxR,其功能如下:
寄存器名 功能
标识符寄存器CAN_RIxR 存储收到报文的ID、 扩展ID、 IDE位及RTR位
数据长度控制寄存器CAN_RDTxR 存储收到报文的DLC段
低位数据寄存器CAN_RDLxR 存储收到报文数据段的Data0-Data3这四个字节的内容
高位数据寄存器CAN_RDHxR 存储收到报文数据段的Data4-Data7这四个字节的内容
相关推荐
武汉芯景科技有限公司40 分钟前
关于武汉芯景科技有限公司的IIC电平转换芯片XJ9509开发指南(兼容PCa9509)
科技·stm32·单片机·嵌入式硬件
马浩同学2 小时前
【ESP32】Arduino开发 | Timer定时器+定时器闹钟例程
c语言·单片机·嵌入式硬件·mcu
千千道2 小时前
STM32 实现 UDP 广播通信
stm32·单片机·物联网·网络协议·udp
EVERSPIN3 小时前
分享国产RISC-V单片机通用
单片机·嵌入式硬件·risc-v
浅陌pa4 小时前
05:(寄存器开发)定时器一
stm32·单片机·嵌入式硬件
TNT_JQR5 小时前
电子信息类专业技术学习及比赛路线总结(大一到大三)
单片机·嵌入式硬件·学习
钟剑锋-JeffChong7 小时前
智能手表(Smart Watch)项目
stm32·单片机·嵌入式开发·智能手表
jmlinux7 小时前
环形缓冲区(Ring Buffer)在STM32 HAL库中的应用:防止按键丢失
c语言·stm32·单片机·嵌入式硬件
江山如画,佳人北望8 小时前
智能平衡移动机器人-平台硬件电路
单片机·嵌入式硬件
江将好...9 小时前
定时器实验(Proteus 与Keil uVision联合仿真)
单片机·嵌入式硬件