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驱动收发流程图

 

 

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
基于FPGA和SJA1000的CAN总线通信是一种常见且可靠的通信方式,下面将详细介绍。 首先,了解CAN总线通信的基本概念。CAN(Controller Area Network)是一种广泛应用于工业领域的串行通信协议,可实现多个节点之间的数据传输。CAN总线具有高可靠性、抗干扰能力强、传输速率高等优点,因此在汽车电子、工业自动化、医疗设备等领域得到广泛应用。 在基于FPGA和SJA1000的CAN总线通信中,FPGA(Field Programmable Gate Array)作为硬件平台,负责实现CAN总线通信的各种功能。SJA1000则是一款广泛应用的CAN总线控制器芯片,负责控制CAN总线的物理层通信。 具体实现上,首先需要将SJA1000与FPGA进行连接,通过SPI或其他接口连接方式进行数据的传输。接着,FPGA通过配置和控制SJA1000来进行CAN总线通信的初始化和设置。这包括设置CAN解调器的工作模式、波特率、数据过滤等参数。 在数据的接收方面,FPGA通过配置SJA1000进入接收模式,并实现CAN帧的接收与解析。通过CAN总线收到的数据将被传输到FPGA内部,然后进行后续处理,如数据解码、验证、分析等。 在数据的发送方面,FPGA将需要发送的数据通过内部逻辑和控制器生成CAN帧的格式,并将其发送到SJA1000控制器。SJA1000将CAN帧转换为CAN总线上的物理信号,并通过CAN总线发送出去。 值得注意的是,为了保证数据传输的可靠性和稳定性,FPGA需要实现各种错误处理机制,如校验和校验、错误帧过滤、错误标记等。此外,FPGA还可以实现CAN总线监控功能,及时检测和处理总线上的错误和异常情况。 总之,基于FPGA和SJA1000的CAN总线通信是一种可靠性高、抗干扰能力强的通信方式。通过FPGA的逻辑实现和SJA1000的控制,可以实现CAN总线通信的各种功能,并满足不同领域的应用需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值