您的位置 首页 技术

根据CPLD的电池办理双CAN控制器的规划与完成

电池管理系统是混合动力汽车中重要的电子控制单元,具有保障电池正常、可靠和高效工作的作用,是电池与用电设备之间的桥梁。在研制以及批量生产过程中

电池办理体系是混合动力轿车中重要的电子操控单元,具有保证电池正常、牢靠和高效作业的效果,是电池与用电设备之间的桥梁。在研发以及批量生产过程中都需求对其内部操控参数进行离线或在线匹配标定,而电池办理体系需求收集和处理很多的数据,本文选用TMS320LF2407作为标定用CAN操控器。作为电动轿车上的一个CAN节点,需求接纳整车发来的CAN音讯来履行对外部继电器、电扇以及电池等器材的操控指令,本文选用SJA1000。

双CAN硬件电路和CPLD逻辑规划

双CAN硬件电路规划

TMS320LF2407根据增强的哈佛结构,是地址线和数据线别离的微处理器,对晶振倍频后,频率高达40MHz。而SJA1000的地址线和数据线复用,增加了DSP与SJA1000之间读写数据的难度,这也是本体系规划的难点。惯例的规划方法是在DSP与SJA1000之间加一个电平转化双向缓冲驱动,其结构框图如图1所示。按这种方法规划的电路,当对SJA1000进行读写操作时,先装备DSP的I/O端口,将ALE拉高,锁存地址,然后经过DSP的I/O端口将和()拉低,进行读(写)数据,最终拉高()和。按此方法每次读写SJA1000寄存器中的值,均需经过程序对ALE、和() 信号进行设置, 增加了程序源代码。假如操控器的闪存空间比较严重,采纳这种硬件衔接方法显然是不可取的。并且,为使状况寄存器的状况位读写正确,CAN报文读写时需在程序中加必定延时,这将影响电池办理体系的实时性。


图1 一般双CAN操控器的硬件结构图

为了尽量削减程序源代码,节约名贵的存储资源并进步电池办理体系的实时性,本文选用CPLD衔接双CAN操控器的接口电路,完结CAN报文收发。其硬件结构如图2所示。


图2 根据CPLD双CAN操控器硬件结构图

CPLD的逻辑规划

CPLD具有速度快、体积小、驱动能力强、可在线编程等长处。根据CPLD的逻辑操控电路合适完结译码使命,本文选用EPM7064芯片,经过译码电路的软件规划,完结SJA1000输入信号的逻辑选通操控。

CPLD的输入信号是DSP发送的信号,由高位地址A[15…13]、I/O空间选通引脚以及写/读信号组成。其间,地址线A13作为 SJA1000的地址和数据的挑选线,地址线A14和A15经译码后作为片选信号。地址线A13和I/O空间选通信号发生SJA1000的地址锁存信号 SJA_ALE,地址线A13和读写信号发生SJA1000的数据和地址读写信号。

双CAN软件程序规划

该CAN操控器的收发程序包含两部分:DSP的CAN收发程序和SJA1000的CAN收发程序。每个CAN收发程序首要由三个函数组成: CAN初始化程序、CAN报文接纳程序和CAN报文发送程序。因为DSP的CAN收发程序比较简单规划,只需设置CAN操控器寄存器中的相应位,就可完结 CAN报文的收发。所以,本文首要介绍SJA1000的CAN报文收发程序规划。

从表1中能够看到,SJA1000的寄存器映射到DSP的I/O空间。本文挑选0x8000作为SJA1000地址输入端口,0xA000作为 SJA1000数据输入/输出端口。其程序首要由SJA1000初始化、SJA1000接纳报文和SJA1000发送报文三个子函数组成。其收发函数的流程如图3所示。

图3 SJA1000发送报文程序流程图

SJA1000初始化

经过向CAN操控器SJA1000形式寄存器写0x01,让其进入复位形式,然后分别对SJA1000的时钟分频寄存器、过错报警限额寄存器、中止使能寄存器、接纳代码和接纳屏蔽寄存器、总线时序寄存器和输出操控寄存器设置,最终向形式寄存器写0x08,进入正常作业形式。初始化程序如下:

#define SJA1000_Data_Port portA000

ioport unsigned int portA000; //界说数据输入/输出端口

#define SJA1000_Address_Port port8000

ioport unsigned int port8000; //界说地址输入端口

……

SJA1000_WRITE(REG_MODE, 0x01);

TempData= SJA1000_READ(REG_MODE);

//向形式寄存器写0x01,进入复位形式

while((TempData 0x01) != 0x01); //等候SJA1000复位

……

do

{

SJA1000_WRITE(REG_MODE, 0x08);

TempData= SJA1000_READ(REG_MODE);

}while ((TempData 0x01)!=0x00); //等候SJA1000进入正常作业形式

发送CAN报文

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/138976.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部