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这四个字节的内容 |
原文地址:https://blog.csdn.net/m0_73640344/article/details/137798759
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。
本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:https://www.suanlizi.com/kf/1782451307521642496.html
如若内容造成侵权/违法违规/事实不符,请联系《酸梨子》网邮箱:1419361763@qq.com进行投诉反馈,一经查实,立即删除!