sja1000 CAN驱动学习、调试记录(基于PeliCan Mode)

一、基础知识

        网上讲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控制器会在哪些情况下触发中断。

三、关于离线复位

        总线断开之后,会产生错误警报中断。进到中断服务函数之后会恢复位总线;当错误警报产生到达一定数量后,会进入总线错误中断。此时会在中断服务函数中 终止发送。

四、程序流程图

下面是我整理的sylixos can驱动收发流程图

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值