首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
汽车电子
» 新型电动汽车锂电池管理系统的研究与实现 — CAN 总线设计2
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
新型电动汽车锂电池管理系统的研究与实现 — CAN 总线设计2
发短消息
加为好友
rise_ming
当前离线
UID
864567
帖子
4448
精华
0
积分
2224
阅读权限
70
在线时间
123 小时
注册时间
2011-12-12
最后登录
2014-8-25
金牌会员
UID
864567
1
#
打印
字体大小:
t
T
rise_ming
发表于 2013-10-1 11:54
|
只看该作者
新型电动汽车锂电池管理系统的研究与实现 — CAN 总线设计2
管理系统
,
电动汽车
,
控制器
,
电池
,
工业
在系统中,CAN节点的CAN控制器采用SJA1000, SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。SJA1000具有两种操作模式:
BasicCAN模式:与它的前款PCA82C200兼容的模式
PeliCAN模式:扩展模式。这种模式全面支持CAN2.0B协议。
SJA1000的模块结构如图5.5所示。
SJA1000是CAN总线接口电路的核心,主要完成CAN的通讯协议,CAN收发器采用PCA82C250,它的主要功能是提高CAN总线的保护和驱动功能,它们之间通过6N137光藕进行隔离,节点结构如图5.6.
5.4 CAN系统的软件设计
CAN总线的软件设计主要是3个部分:初始化、发送与接收数据、检错机制,下面分别加以介绍。
5.4.1初始化
SJA1000在上电硬件复位之后,必须对其进行软件初始化之后才可以进行数据通讯,初始化过程主要在其复位模式下配置时钟分频寄存器CDR、总线定时寄存器BTR0和BTR1、验收代码寄存器ACR、验收屏蔽寄存器AMR及输出控制寄存器OCR等,实现对总线的速率、验收屏蔽码、输出引脚驱动方式、总线模式及时钟分频进行定义。
为了可靠收发数据,SJA1000的工作频率不能低于单片机的频率。系统中,单片机80C552的晶体振荡器频率为12MHz,而SJA1000的晶振频率为16MHz. SJA1000的通讯波特率由BTR0、BTR1、晶振等参数共同决定。表5.1列出了一组推荐的BTR0、BTR1值,标注*符号的值是由CiA协会推荐的标准值。
总线上的14个节点数据接收发送的主要关系是:9块测量板向总线上发送所测量的各单电池电压温度信息,同时接受中央处理模块发出的均衡信号;SOC估计单元向总线上发送SOC等相关信息,同时接收中央处理模块的各参数信息;专家诊断模块要向显示模块发送诊断的相关信息,同时接收总线上各模块发出的信息;中央处理单元既要向总线上发送总电压、总电流和环境温度,同时接收测量板的均衡信息;显示控制模块和与整车通讯模块接收各个模块发送到总线上的数据,同时与整车通讯模块还将数据传给整车。数据流图如图5.7:
对应上面的数据流图,我们定义了CAN控制器的验收码寄存器(ACR)和验收屏蔽寄存器(AMR)。定义的原则是:各个节点模块只接收与自己有关的数据而屏蔽其它数据。譬如9块测量板之间发送到总线上的数据应该是互不相关的,而且它们的数据量很大,所以必须两两加以屏蔽。我们采取的是BasicCAN模式,由于显示控制模块和与整车通讯模块所接收的数据完全一样,所以这俩个节点的验收码寄存器(ACR)和验收屏蔽寄存器(AMR)可以设计的相同。具体各节点的ACR和AMR的定义如表5.2:
5.4.2发送与接收数据
在本系统中,每一个模块的CAN发送都采用查询方式来控制,接收采用中断方式来控制,这里最好把CAN中断优先级设为高优先级。发送时,CPU检查SJA1000状态寄存器中“发送缓冲器状态”标志(TBS),若发送缓冲器处于“释放”状态,则CPU将发送的信息传送到SJA1000的发送缓冲器,然后将命令寄存器里的“发送请求”标志(TR)置位,启动发送,发送期间,TBS处于“锁定”状态,此时CPU不能访问发送缓冲器;发送成功结束时,TBS处于“释放”状态,这时CPU就可以访问发送缓冲器,进行下一次发送操作。接收时,当SJA1000已接收一条信息,并且这条信息已通过验收滤波器且已放在接收FIFO中,那么SJA1000会产生一个接收中断,CPU立刻起作用,将接收到的信息存到信息暂存器,然后对SJA1000的命令寄存器的“释放接收缓冲器”标志(RR)置位,这样一次中断接收就算完成。接收和发送数据的流程图如图5.8.
5.4.3检错机制
SJA1000的BasicCAN模式提供了完善的检错机制,它提供了8个中断源,除了发送中断、接收中断和唤醒中断外,其余5个都是通信过程中出现的各种意外状态的反映。当接收FIFO满了,但还在接收其它信息,这时SJA1000就会置位状态寄存器中的数据溢出状态位,并产生一个数据溢出中断通知CPU数据溢出。当本节点与其它节点总线竞争失败丢失仲裁权时,SJA1000将会立即产生一个仲裁丢失中断,并且当前丢失仲裁的具体位号将被捕捉进仲裁丢失捕捉寄存器,这样便于我们分析总线竞争的情况。
当发送或接收数据时,发生任何一种错误,比如位错、格式错、填充错等情况,SJA1000将会立即产生总线错误中断,同时当前错误的位置被捕捉入错误代码捕捉寄存器,通过读取寄存器值并查表可知道当前错误发生的情况。SJA1000还定义了发送错误计数器和接收错误计数器,当错误产生时,根据不同类型错误的严重性,计数器加相应的值。根据错误计数器的值,定义了错误的三种状态:当错误计数器的值在0-127之间为错误激活状态;当计数器的值在127-255之间为错误消极状态;当计数器的值高于255则处于总线关闭状态。同时SJA1000定义一个错误报警限额寄存器,默认为96,当上述任意两个计数器的值超过限额寄存器的值时,SJA1000状态寄存器的错误状态位将置位;当计数器的值超过255时,状态寄存器的总线状态位将置位,总线关闭,本节点模块自动脱离CAN总线。当错误状态位或总线状态位发生变化时,SJA1000将立即产生错误警告中断,以便CPU采取相应的处理措施。当CAN控制器在错误消极状态处变化则产生错误消极中断。这种做法是合理的,因为一个节点模块如果经常出错,就应该自动脱离总线,免得干扰其它节点的正常通信,这也是CAN总线的一个突出优点。
在节点处于总线关闭状态脱离总线时,SJA1000将置位复位请求位进入复位状态,如果没有CPU的干预来清除复位请求位,则节点将一直处于总线关闭状态。
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议