文章插图
图 5 SJA1000 写时序(Intel 模式)
按照 SJA1000 的数据手册,确保 SJA1000 的读写正确,如下的时序参数必须满足:
l tW(AL):必须保证 ALE 的时间,最小不能小于 8ns;
l tLLRL/tLLWL:读写时 ALE 无效到读写信号有效的时间,最小不能小于 10ns;
l tLCRL/tLCWL:片选信号有效后读写信号有效的时间,最小不能小于 0,即片选有效必须出现在读写信号有效前;
l tW(R):读信号有效宽度,最小不能小于 40ns;
l tW(R):写信号有效宽度,最小不能小于 20ns;
l tWHLH:写信号无效到下一次 ALE 有效的时间,最小不能小于 15ns;
l th(AL-A):在 ALE 为低电平后地址应该保持时间,最小不能小于 2ns 。
CPU 和 CAN 总线接口采用地址直接映射 。接口时序设计重点是接口控制逻辑必须产生符合上述关键参数的读写时序 。如果简单的按照 ALE《=not nADS 方法处理,不满足要求时序关系,这在调试过程中已经得到验证 。为此,在设计中采用了 FPGA 技术,以求很好地解决 CAN 总线与 CPU 的接口问题 。图 6 描述了通过 VHDL 编写实现接口电路的状态转移图和 FPGA 设计产生的读写 CAN 总线时序,其中时钟周期不低于 67ns,该时序满足 SJA1000 要求 。
文章插图
图 6 CAN 总线接口时序设计的状态转移和时序
6、 CAN 总线通讯软件的设计
双冗余总线结构的通讯软件主要由初始化、接收和发送三个模块组成,控制流图见图 7 。在程序设计时采用了 SJA1000 的 Basic 模式,初始化中需要对 BUS0 和 BUS1 分别进行初始化,包括 SJA1000 的控制寄存器、接收代码寄存器、接收屏蔽寄存器、总线时序寄存器等 。
文章插图
图 7 CAN 总线通讯软件的控制流图
发送模块采用主动发送方式,BUS0 为优先通讯通道,若 BUS0 通道状态不正常,则启动 BUS1 通道进行通讯,并对 BUS0 通道进行初始化以备下次通讯时使用 。
接收模块采用中断接收方式,为了保证接收到的数据被实时处理,CAN 总线的接收中断被设置为高优先级中断 。在接收中断中首先判断接收通道是 BUS0 还是 BUS1,然后从接收通道按数据长度进行数据接收 。
7 、结束语
CAN 总线技术的诸多优点如实时性好,通信速率高,抗干扰能力强,低廉的价格等使它不仅广泛应用于工业控制领域,而且开始向航天领域进军 。其 COTS 工业级器件 SJA1000 经过飞行也得到了验证,CAN 总线适宜航天应用的特点得到了充分的展示和飞行验证 。
推荐阅读
- 面向数据的架构
- 如何理解 Python 中的面向对象编程?
- 纯电动汽车不需要变速箱,为何保时捷Taycan 配备了2AT?
- 端口扫描 -- Pscan
- 国企|又一事业单位面向社会招116人,入职能享受编制,符合条件可报名
- 济南茶博物馆开建在即 面向社会征集茶文物
- 用C语言怎样实现面向对象思想?
- 面向对象设计原则之开闭原则
- redis的scan知识点分享
- 面向对象设计原则之接口隔离原则