FPGA实现CAN接口(SJA1000)

学无止境,善于积累,每天积累一点点,成功就在眼前,加油!
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程序设计的难点,按照手册正确的配置相关寄存器的值很关键。如果初始化失败,设备不能识别波特率,则CAN总线不能发送和接收数据。初始化主要包括工作方式设置、验收滤波方式设置、验收屏蔽寄存器和验收代码寄存器、波特率参数设置和中断允许寄存器的设置等。这里只描述基本初始化方法,如果需要了解初始化寄存器地址及寄存器数据,请联系笔者([email protected])。
4)CAN报文发送和报文接收
略,查看原文件。
4 CAN功能验证
本设计在vivado 2018.1软件平台上进行了功能仿真,并在实际工程中得到了硬件验证。硬件环境主要计算机、FPGA板卡、USB转CAN接口组成。利用USB转CAN设备产生CAN总线数据, 进行FPGA片上测试实验,用 Xilinx 公司的ChipScope软件做片上数据测试。
利用USB转CAN设备发送数据为0102030405060708,FPGA接收数据为0102030405060708。FPGA发送数据为AA,CAN调试助手接收数据为AA。由此可见,接收和发送数据正确,CAN接口功能正确,设计符合预期。
5 CAN结束语
笔者通过FPGA控制SJA1000实现CAN总线通信,可扩展性好,稳定性高,降低了重量、体积以及功耗,有利于空间实现。此外CAN总线允许高达1Mbit/s通讯速率已经进行实际验证。如果需要进一步了解CAN总线设计,请发邮件沟通:[email protected]

猜你喜欢

转载自blog.csdn.net/m0_46498597/article/details/105025626
今日推荐