FPGA实现CAN接口(SJA1000)

2022-09-07 15:22:14 浏览数 (1)

大家好,又见面了,我是你们的朋友全栈君。

学无止境,善于积累,每天积累一点点,成功就在眼前,加油! 1 CAN总线简介 CAN(Controller Area Network,控制器局域网 )总线是一个多主机异步串行总线,也是国际上应用最广泛的现场总线之一。在现场总线中,它是惟一被ISO国际标准化组织批准的现场总线。由于其成本低、容错能力强、支持分布式控制、通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。特别是由于CAN总线具有抗干扰性强、高数据传输率及低成本等优点,在小卫星和微小卫星中得到了越来越广泛的应用。 2 CAN硬件设计 传统的CAN通信系统通常采用MCU SJA1000 CAN总线收发器的架构,但是单片机速度较低、资源较少,当受到强电磁干扰便很容易出现程序跑飞。本文基FPGA SJA1000 CAN总线收发器的CAN总线通讯如图1所示。与传统方案相比,其优点在于可扩展性好,稳定性高,减轻了重量、体积和功耗。注意:对于FPGA而言,接口电平不支持5V I/O标准,如果与5V I/O标准的器件直接相连,将可能导致FPGA管脚流过极大电流,造成器件锁死或者烧毁。电平转换器就是为了防止FPGA损坏。 (图略,请下载原文查看) 图1 CAN硬件框图 3 CAN逻辑设计 FPGA对CAN总线通讯模块的控制主要包括3部分:CAN总线节点初始化、报文发送和报文接收。 1)CAN读写时序图 略,查看原文件。 2)CAN工作模式选择 SJA1000控制器支持两种模式,分别是Intel和Motorola模式。 3)CAN总线节点初始化 CAN初始化属于CAN程序设计的难点,按照手册正确的配置相关寄存器的值很关键。如果初始化失败,设备不能识别波特率

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/148289.html原文链接:https://javaforall.cn

0 人点赞