基于CPLD的电池管理系统双CAN控制器的设计

发布者:平安宁静最新更新时间:2007-12-13 来源: 电子设计应用关键字:地址  晶振  频率  复用 手机看文章 扫描二维码
随时随地手机看文章
电池管理系统是混合动力汽车中重要的电子控制单元,具有保障电池正常、可靠和高效工作的作用,是电池与用电设备之间的桥梁。在研制以及批量生产过程中都需要对其内部控制参数进行离线或在线匹配标定,而电池管理系统需要采集和处理大量的数据,本文选用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的数据和地址读写信号。其CPLD的输入/输出信号逻辑关系如表1所示。

双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报文

CAN报文发送函数负责电池管理系统向整车控制器发送报文,发送时需将待发送的数据按CAN协议格式组合成一帧报文,送入SJA1000发送缓冲区中,然后启动发送命令。CAN发送程序如下:

if((TempData & 0x10) != 0x10) //CAN控制器空闲

{

if((TempData & 0x08) != 0x0) //最近一次发送已成功

{

if((TempData & 0x04) == 0x04)

//CPU可以向发送缓冲器写报文

{

…… //配置发送报文

SJA1000_WRITE(REG_ COMMAND,0x01);//发送报文指令

}

}

}

接收CAN报文

CAN报文接收函数主要负责接收整车控制器发送的控制指令,来完成对充放电继电器、风扇以及电池等器件的控制。CAN接收程序如下:

if(TempData != 0)

{

if((TempData & 0x80) == 0x80) //总线关闭

{

…… //总线关闭处理

}

if((TempData & 0x02) == 0x02) //数据溢出

{

…… //数据溢出处理

}

if((TempData & 0x01) == 0x01) //RXFIFO存在完整有效的报文

{

…… //读取缓冲区报文

结语

本文设计的基于CPLD的双CAN控制器已运用于实际应用中,电池管理系统运行可靠,CAN报文收发平稳,完全适合混合动力汽车的使用。

参考文献:

1.刘永吉吉. 混合动力电动汽车镍氢电池管理系统的研制[D]. 北京:北京航空航天大学,2007.03

2.刘和平,王维俊,江渝,邓力. TMS320LF240x DSP C语言开发应用[M]. 北京:北京航空航天大学出版社,2006.03

3.吴红杰. 混合动力电动轿车镍氢动力电池管理技术[D]. 北京:北京航空航天大学, 2005,10

关键字:地址  晶振  频率  复用 引用地址:基于CPLD的电池管理系统双CAN控制器的设计

上一篇:基于内插和QLA技术的并行DDS的实现
下一篇:基于内插和QLA技术的并行DDS的实现

推荐阅读最新更新时间:2024-05-02 20:39

数字频率表设计方法
  设计要求   1.设计一个能测量方波信号频率的频率计,测量结果用十进制数显示。   2.测量的频率范围是1~10KHz,分成两个频段,即1~999Hz,1KHz~10KHz,用三位数码管显示测量频率,用LED显示表示单位,如亮绿灯表示Hz,亮红灯表示KHz。   3.具有自动校验和测量两种功能,即能用标准时钟校验测量精度。   4.具有超量程报警功能,在超出目前量程档的测量范围时,发出灯光和音响信号。   设计提示   脉冲信号的频率就是在单位时间内所产生的脉冲个数,其表达式为f=N/T,f为被测信号的频率,N为计数器所累计的脉冲个数,T为产生N个脉冲所需的时间。所以,在1秒时间内计数器所记录的结果,就是被测信
[测试测量]
数字<font color='red'>频率</font>表设计方法
ARM中的链接地址为什么ARM要重定位
在考虑为什么要重定位的问题之前,我们首先要明白一下几点: 1. 链接地址的定义:我自己理解是,程序被定义的开始执行的内存地址。 2. 当ARM从nandflash启动的时候,CPU所做的工作是将nandflash中的前8K代码自动的到6410的0地址(即Stepping Stone)中去,然后从0地址开始执行程序。 3. 程序在执行过程中,用链接地址来访问全局变量。全局变量一般被存放于程序的最后面。 在程序超过8K时,如果不进行重定位,就会发生类似于下面的访问错误,这将导致程序无法正常执行。 假设我们定义程序的链接地址为0x50000000,程序从6410的0地址(即Stepping
[单片机]
应用LMX2370设计双锁相环频率合成器
    摘要: 介绍了美国国家半导体公司新推出的低功耗单片双锁相环芯片LMX2370的结构、原理、特点,给出了LMX2370在V/UHF航空电台频率合成器中的应用实例。     关键词: 锁相环  频率合成器  通信 1 LMX2370简介 LMX2370是美国国家半导体公司新推出的高性能、低功耗、双锁相环芯片,其主要特点有:宽工作电压2.7~5.5V;超低功耗(6mA);低相位噪声层;双模前置分频比可编程(主环P=32/33或16/17,副环P=16/17或8/9);工作频率高,主环达2.5GHz(P=32/33)或1.2GHz(P=16/17),副环达1.2GHz(P=16/17)或550MHz(P=
[半导体设计/制造]
一文了解ZDS示波器频率计架构分析
本文导读 频率是信号最核心的特征之一,但工程师常有这种困惑:为什么硬件频率计和示波器频率测量结果不同呢?哪个数据才更精确呢?来听听资深硬件工程师的原理剖析分享。 一、频率测量原理 所谓“频率”,就是周期性信号在单位时间(秒)内变化的次数。若在一定的时间间隔T内计数,计得某周期性信号的重复变化次数为N,则该信号的频率可表达为: f = N / T 所以测量频率就要分别知道N和T的值,由此,测量频率的方法一般有三种:测频算法、测周算法以及等精度测量。ZDS示波器主要用到了测频算法和测周算法,下面将介绍这两种方法原理。 1、测频算法 这种方法即已知时基信号(频率或周期确定)做门控信号,T为已知量,然后在门控信号有效的时间段内
[测试测量]
一文了解ZDS示波器<font color='red'>频率</font>计架构分析
基于单片机的数字频率计设计
频率计是我们经常会用到的实验仪器之一,本实验要使用单片机和计数电路及液晶器件来设计一个宽频的频率计。 期望达到10Hz-1.1G范围的频率精确测量。 实验电路图(初步方案) 1) 计数及显示电路: 2)前置放大及分频电路: 设计思路 频率的测量实际上就是在1S时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用两种办法,1)使用单片机自带的计数器对输入脉冲进行计数,或者测量信号的周期;2)单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。 由于单片机自带计数器输入时钟的频率通常只能是系统时钟频率的几分之一甚至几十分之一,因此采用单片机的计数器直接测量信号频率就受到了很大的限制。 本
[单片机]
基于单片机的数字<font color='red'>频率</font>计设计
主存与Cache的地址映像
与主存容量相比,Cache的容量很小,它所保存的信息仅是主存信息的一个子集,且cache与主存的信息交换是以块为单位。主存每个块的大小和Cache中块的大小相等,为了把信息放到Cache中,必须事先规定好主存与cache之间的 地址映像方式,即某一个Cache块可以作为哪些主存块的副本(即映像)。映像方式一旦确定,就决定了访问Cache时对主存地址的理解,因而也就决定了Cache的组织结构。目前有三种地址映像方式:直接映像、 全相联映像和组相联映像。 主存地址=主存块号+块内地址。 主存分为2n块,则主存块号为n位。 1。直接映像(Direct Mapping) :只比较一次。主存地址被理解为标记(区号)、块号(对应的cac
[单片机]
STM32 KEIL软件设置程序烧写起始地址选择
STM32系列的mcu,这儿以cortex-M4为例,我们在线调试时,一般会设置程序烧写起始地址和大小。这个大小一般是0x08000000,也就是内部flash的映射地址。不过有些产品是从0x08020000开始的,这是为什么呢?是因为在0x08000000-0x08020000这段空间放的是引导程序,也就是引导程序是从0x08000000开始存放,一般而言,引导程序最终也是要跳转到主app执行的,对于我们这儿而言,就是引导程序会跳转到0x08020000继续执行,而主工程代码是从0x08020000开始存放的,所以就这样串联起来了。 这儿可以看到我们设置的程序烧写的地址和大小,这个的设置是要和use memory layou
[单片机]
STM32 KEIL软件设置程序烧写起始<font color='red'>地址</font>选择
AVR单片机UCSRC 和UBRRH 共用地址的问题
UCSRC寄存器结构: UBRRH寄存器结构: AVR单片机UART的UCSRC和UBRRH两个寄存器是共用地址的,通过最高位的URSEL来选择更新哪个数据。 比如写UCSRC=0x86,那么0x86的最高位Bit7=1,所以这组数据会更新UCSRC的值 写UBRRH=0x01,那么0x01的最高位Bit7=0,所以这组数据会更新UBRRH的值 无需专门更新URSEL的值。 如果写成了UBRRH=0x81,那么就会去更新UCSRC的值,是自动识别的。 在网上看到有朋友问:为什么在程序中写UBRRH的时候没有先将URSEL置0? 而是直接设置 UBRRH=BAUD_H; UBRRL=BAUD_L; 现在
[单片机]
AVR单片机UCSRC 和UBRRH 共用<font color='red'>地址</font>的问题
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved