基于MCUIO和SJA1000的CAN数据收发方法技术

技术编号:27531529 阅读:18 留言:0更新日期:2021-03-03 11:09
本发明专利技术涉及一种基于MCU IO和独立CAN控制器SJA1000的CAN总线数据收发方法,属于光电产品数据收发技术领域。本发明专利技术利用MCU IO和SJA1000以及CTM8251等电路芯片完成了CAN收发电路的搭建,采用MCU的一部分IO控制SJA1000控制接口,另外用8个IO通过双向数据缓冲芯片连接SJA1000的数据/地址接口,两者进行协同配合实现CAN总线数据的收发。实现了基于IO的地址/数据复用总线对SJA1000寄存器的读写,在此基础上完成了SJA1000的初始化、CAN总线数据的读取和发送,最终实现了光电产品对外的CAN总线信息传输。该方法鲁棒性高,移植性强,综合成本低。低。低。

【技术实现步骤摘要】
基于MCU IO和SJA1000的CAN数据收发方法


[0001]本专利技术属于CAN总线收发
,具体涉及一种基于MCU IO和SJA1000的CAN数据收发方法,应用于光电产品的对外通信。

技术介绍

[0002]CAN总线作为一种可靠、灵活的总线技术,在工业控制中得到了广泛的应用,但是目前一些低端的MCU芯片并没内置的CAN收发控制器,还有一些MCU虽有内置的CAN控制器并不是很稳定,而且低端MCU没有并行数据接口或者被占用,而IO是所有MCU必备的接口,因此为提高CAN总线的应用范围,采用IO和独立的CAN控制器进行CAN数据的传输。SJA1000是一款成熟可靠的独立CAN控制器,IO是MCU芯片的基础管脚,其电平可置为高或者低,采用IO电平的高低可以用来控制SJA1000的控制管脚,另外采用8个IO模拟并行数据/地址接口,用于SJA1000和MCU的数据和地址的传输,因此采用MCU的IO与SJA1000的组合,即可完成CAN总线数据的收发控制。使用IO和SJA1000进行CAN总线数据的收发,利用对IO口电平控制模拟地址、数据、控制信号,并且要合理地安排不同信号之间的时序、方向、电平等。

技术实现思路

[0003]要解决的技术问题
[0004]为了解决现有的光电产品对外的CAN总线信息传输慢、不稳定的问题,本专利技术提出一种基于MCU IO和SJA1000的CAN数据收发方法。
[0005]技术方案
[0006]一种基于MCU IO和SJA1000的CAN总线数据收发方法,其特征在于所采用的电路包括MCU、SN74LVC4245A、SJA1000、CTM8251芯片,其中MCU的PB0~PB5连接SJA1000的控制管脚CS、ALE、RD、WR、RST、INT,MCU的PA8、PA9连接SN74LVC4245A的使能管脚OE和方向控制管脚DIR,MCU的PA0~PA7连接SN74LVC4245A的数据管脚1AD0~1AD7;SN74LVC4245A的数据管脚2AD0~2AD7与SJA1000的地址/数据管脚AD0~AD7连接,SJA1000的接收管脚RX和发送管脚TX分别与CTM8251的发送管脚和接收管脚相连,而CTM8251连接外部CAN总线设备的CANH、CANL、CANG,用以完成光电产品和外部设备的通信交换;步骤如下:
[0007]步骤1:进行MCU的上电复位,等待包括SJA1000在内的其它电路上电,配置与SJA1000控制管脚和SN74LVC4245A输入控制管脚相连的IO管脚,配置其输入输出方向以及默认电平大小;
[0008]步骤2:初始化SJA1000,SJA1000的初始化只能在复位模式的情况下初始化,需要将RST管脚电平拉低;
[0009]步骤3:配置输入输出缓冲器以及相关的状态寄存器和命令寄存器即可完成CAN总线数据的收发。
[0010]本专利技术技术方案更进一步的说:步骤2中SJA1000的初始化如下:
[0011]1)SJA1000进入复位模式,即RST置为低电平,复位有效,读取状态寄存器数据,确
定已进入复位模式;
[0012]2)设置时钟频率,向时钟分频寄存器写入分频数值,然后读取此寄存器数值,以保证写入正确;
[0013]3)设置波特率,向波特率寄存器写入波特率数值,然后读取波特率寄存器数值,以保证写入正确;
[0014]4)设置验收代码和屏蔽,分别向验收代码寄存器和验收屏蔽寄存器写入配置数据,然后读取此寄存器数值,以保证写入正确;
[0015]5)设置输出控制,向输出控制寄存器写入配置数据,然后读取此寄存器数值,以保证写入正确;
[0016]6)SJA1000退出复位模式,即RST置为高电平,复位无效并进入工作模式,读取状态寄存器确保已经退出复位模式。
[0017]本专利技术技术方案更进一步的说:步骤3中CAN总线数据发送如下:
[0018]1)读取SJA1000的状态寄存器,如果状态寄存器的接收状态为1即为正在接收,发送缓冲器状态为0即为锁定,则需要等待直到接收状态为0,发送缓冲器状态为1;
[0019]2)向发送缓冲器的描述符区的第一个地址区0x10写入帧信息字节,依次向发送缓冲器的描述符区第二到第五字节区0x11-0x14写入识别码;
[0020]3)向发送缓冲区数据区写入数据;
[0021]4)向命令寄存器,写入0x01命令。
[0022]本专利技术技术方案更进一步的说:步骤3中CAN总线数据接收如下:
[0023]1)读取SJA1000的状态寄存器,如果状态寄存器的接收状态为1即为正在接收,接收缓冲器状态为0即为无可用数据,则需要等待直到接收状态为0,接收缓冲器状态为1;
[0024]2)读取0x10到0x22依次读取数据;
[0025]3)向SJA1000命令寄存器写入0x04的命令,释放接收缓冲器;
[0026]4)延迟10个计数周期;
[0027]5)向SJA1000命令寄存器写入0x00的命令,初始化命令寄存器。
[0028]本专利技术技术方案更进一步的说:对SJA1000的任何操作均需要通过对寄存器的读写完成。
[0029]本专利技术技术方案更进一步的说:向寄存器写数据具体如下:
[0030]1)使能SN74LVC4245芯片,数据方向设置为MCU数据到SJA1000;
[0031]2)置SJA1000输入锁存信号ALE为高,使锁存有效;
[0032]3)将需要写入的寄存器8位地址按位赋给IO管脚PA0~PA7,并将PA0~PA7设置为输出;
[0033]4)延迟10个时钟周期;
[0034]5)置SJA1000输入锁存信号ALE为低,使锁存无效;
[0035]6)置SJA1000片选信号CS为低,使片选有效;
[0036]7)置SJA1000写信号WR为低,写有效;
[0037]8)将需要写的8位数据按位赋给IO管脚PA0~PA7;
[0038]9)延迟10个时钟周期;
[0039]10)置SJA1000写信号WR为高,写无效;
[0040]11)延迟10个时钟周期;
[0041]12)置SJA1000片选信号CS为高,使片选无效;
[0042]13)关闭SN74LVC4245芯片使能。
[0043]本专利技术技术方案更进一步的说:向寄存器读数据具体如下:
[0044]1)使能SN74LVC4245芯片,数据方向设置为MCU数据到SJA1000;
[0045]2)置SJA1000输入锁存信号ALE为高,使锁存有效;
[0046]3)将需要读入的寄存器8位地址按位赋给IO管脚PA0~PA7;
[0047]4)延迟10个时钟周期;
[0048]5)置SJA1000输入锁存信号ALE为低,使锁存无效;
[0049]6)置SJA100本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于MCU IO和SJA1000的CAN总线数据收发方法,其特征在于所采用的电路包括MCU、SN74LVC4245A、SJA1000、CTM8251芯片,其中MCU的PB0~PB5连接SJA1000的控制管脚CS、ALE、RD、WR、RST、INT,MCU的PA8、PA9连接SN74LVC4245A的使能管脚OE和方向控制管脚DIR,MCU的PA0~PA7连接SN74LVC4245A的数据管脚1AD0~1AD7;SN74LVC4245A的数据管脚2AD0~2AD7与SJA1000的地址/数据管脚AD0~AD7连接,SJA1000的接收管脚RX和发送管脚TX分别与CTM8251的发送管脚和接收管脚相连,而CTM8251连接外部CAN总线设备的CANH、CANL、CANG,用以完成光电产品和外部设备的通信交换;步骤如下:步骤1:进行MCU的上电复位,等待包括SJA1000在内的其它电路上电,配置与SJA1000控制管脚和SN74LVC4245A输入控制管脚相连的IO管脚,配置其输入输出方向以及默认电平大小;步骤2:初始化SJA1000,SJA1000的初始化只能在复位模式的情况下初始化,需要将RST管脚电平拉低;步骤3:配置输入输出缓冲器以及相关的状态寄存器和命令寄存器即可完成CAN总线数据的收发。2.根据权利要求1所述的一种基于MCU IO和SJA1000的CAN总线数据收发方法,其特征在于步骤2中SJA1000的初始化如下:1)SJA1000进入复位模式,即RST置为低电平,复位有效,读取状态寄存器数据,确定已进入复位模式;2)设置时钟频率,向时钟分频寄存器写入分频数值,然后读取此寄存器数值,以保证写入正确;3)设置波特率,向波特率寄存器写入波特率数值,然后读取波特率寄存器数值,以保证写入正确;4)设置验收代码和屏蔽,分别向验收代码寄存器和验收屏蔽寄存器写入配置数据,然后读取此寄存器数值,以保证写入正确;5)设置输出控制,向输出控制寄存器写入配置数据,然后读取此寄存器数值,以保证写入正确;6)SJA1000退出复位模式,即RST置为高电平,复位无效并进入工作模式,读取状态寄存器确保已经退出复位模式。3.根据权利要求1所述的一种基于MCU IO和SJA1000的CAN总线数据收发方法,其特征在于步骤3中CAN总线数据发送如下:1)读取SJA1000的状态寄存器,如果状态寄存器的接收状态为1即为正在接收,发送缓冲器状态为0即为锁定,则需要等待直到接收状态为0,发送缓冲器状态为1;2)向发送缓冲器的描述符区的第一个地址区0x10写入帧信息字节,依次向发送缓冲器的描述符区第二到第五字节区0x11-0x14写入识别码;3)向发送缓冲区数据区写入数据;4...

【专利技术属性】
技术研发人员:张浩
申请(专利权)人:中国航空工业集团公司洛阳电光设备研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1