一、基础知识
网上讲sja1000 CAN总线控制器的资料很多,这里放一个引路贴:(151条消息) CAN总线控制器SJA1000_FA@TE的博客-CSDN博客_sja1000
BasicCAN Mode:仅支持11位的ID。
PeliCan Mode:在扩展模式下,允许使用 11 位 ID 的标准帧和 29 位 ID 的扩展帧(是标准帧还是扩展帧由 TX 帧信息的最高位 IDE 位确定)。
二、硬件介绍
硬件框图、寄存器地址分配
2.1 TRANSMIT BUFFER (TXB)
传输缓冲区是CPU和比特流处理器(BSP)之间的一个接口,它能够存储一个完整的消息,以便通过CAN网络进行传输。该缓冲区有13个字节长,由CPU写入,并由BSP读出。
传输缓冲区的长度为13个字节,并且位于CAN地址从16到28的范围内。注意,使用从96到108的CAN地址空间可以直接访问传输缓冲区RAM。此RAM区域被保留给传输缓冲区。以下三个字节可用于一般用途(CAN地址109、110和111)。
2.2 RECEIVE BUFFER (RXB, RXFIFO)
接收缓冲区是接收过滤器和CPU之间的接口,用于存储从CAN总线线接收和接受的消息。RXB表现为一个在RXFIFO上的CPU可访问的13字节长度的窗口,RXFIFO总长度有64个字节。在这个FIFO的帮助下,CPU能够在接收到其他消息时处理先接收到的消息。
PCA82C200的双接收缓冲器概念被来自PeliCAN控制器的接收FIFO所取代。这除了数据溢出概率外,对应用软件没有任何影响。现在两条以上的消息可能被接收到(最多64字节),直到发生数据溢出。
接收缓冲区的全局布局与上一节中描述的传输缓冲区非常相似。接收缓冲区是RXFIFO的可访问部分,并且位于CAN地址16和28之间的范围内。每个消息都被细分为一个描述符和一个数据字段。
2.3 INTERRUPT REGISTER (IR)
中断寄存器的描述表明了CAN控制器会在哪些情况下触发中断。
三、关于离线复位
总线断开之后,会产生错误警报中断。进到中断服务函数之后会恢复位总线;当错误警报产生到达一定数量后,会进入总线错误中断。此时会在中断服务函数中 终止发送。