首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
汽车电子
» 基于串行通信的车载信息采集系统的设计
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于串行通信的车载信息采集系统的设计
发短消息
加为好友
porereading
当前离线
UID
863084
帖子
7183
精华
0
积分
3592
阅读权限
90
在线时间
209 小时
注册时间
2011-11-30
最后登录
2019-8-28
论坛元老
UID
863084
1
#
打印
字体大小:
t
T
porereading
发表于 2013-12-25 18:59
|
只看该作者
基于串行通信的车载信息采集系统的设计
在线检测
,
数据采集
,
通信技术
,
电动汽车
,
单片机
1引言
串行通信作为一种重要的通信技术已经在PC机通信及工业现场控制在线检测等领域得到了广泛的应用[1].本文所设计的车载信息采集系统是包含数据采集,数据传输和数据显示的结构系统,是对一款新型电动汽车的车载信息进行采集,传送和显示的设计过程:车载信息通过传感器(模拟量形式)或开关量形式被采到从单片机,主单片机和从单片机之间通过串行通信进行数据传输,并由主机将数据送往液晶面板显示出来。
2总线型主从式多机系统
综合考虑了电动汽车所涉及到的大量的车载信息和串行口的多机通信能力,该设计采用了总线型主从式多机通信模式,而进行数据传输的标准总线选为最普通实用的RS-485.总线型主从式多机通信系统模式如下图:
而串口的通信协议在这里就不作介绍了。
3车载信息采集系统硬件设计
该系统所研究的对象为一款电动汽车的车载信息,笔者把信息分为两类:模拟量和开关量。模拟量包括:电池组(蓄电池)温度,电池组(蓄电池)电压,电池组(蓄电池)容量,车速(里程),总电流等;开关量是指各种操作状态,包括:灯(系列)的状态,档位开关量,刹车状态,限位开关状态等。
由于涉及到的信息量比较多,且分布在车身周围范围较广,笔者采用AVR公司的一款单片机——ATMEGA8L.这是一款体积小但采集能力和通信能力却足够强的单片机:在采集方面,它含8通道A/D转换和最多23个可编程I/O口;在数据通信方面,它含一个可编程的串行USART接口,支持同步,异步以及多机通信自动地址识别[3].ATMEGA8L相对8051或其他单片机一个重要的优势是单片机所需外围电路比较简单(考虑到在车身布线,电路越简单越好)。LCD显示模块采用的是内置T6963C的MGLS240128T的点阵液晶,它的特点是与单片机引脚接口电路简单且显示功能强大。
本文所设计的车载信息采集系统硬件框架如下图:
模拟量通过特定传感器采样,转换成电压信号进入从机的A/D通道,从机做A/D转换后将数据存储下来;开关量通过继电器将电平信号送至从机的I/O口,从机也对信号做相关处理。主机与从机之间通过串行通信进行数据传输,并由主机将合理数据送往LCD显示。
4车载信息采集系统软件设计
基于串行通信的多机通信协议可以这样进行:1.所有从机处于监听状态。2.主机先发同步字符(即起始符,这里定为E8H),再发某个标识符(根据信息类别来定义不同值,比如电流值的标识符定义为14H),并将通信状态转换为接收状态(RXD=1)。3.当标识符所定义的从机(比如负责电流数据采集的从机1)监听到标识符(14H)后,从机转为发送速据状态,并将准备好的数据(电流值)和结束字符(这里定为CEH)传给主机,结束字符传完,从机通信状态转换为监听状态。4.主机接收到结束字符后,将数据送往LCD显示。5.主机发同步字符,发下一个标识符(比如电压15H)。
所以,数据帧格式可以列为:起始符(E8H)+标识符+数据串+结束符(CEH),所有特定字符的选择都是为了与数据串中数字的ASCⅡ码(30H–39H)区分开来。
下面是主机和从机程序流程:
图(3)主机程序简易流程图(4)从机程序简易流主机采用循环点明的方式查询从机,被点到名的从机作出应答,将采集到的数据或信号传给主机,主机将数据送给LCD显示,再进入下一个循环。串行通信的波特率选用9600,数据格式定义为8位数据位加一位停止位。串口初始化程序如下:
voidinit_usart(void)//串口初始化
{ UCSRB|=0x18;//数据发送允许和接收允许
UBRRL=(fosc/16/(baud+1))%256;//设置波特率寄存器低位字节
UBRRH=(fosc/16/(baud+1))/256;//设置波特率寄存器高位字节
UCSRC=0x86;//8位数据位+1位停止位}
主机和从机都采用查询方式接收和发送数据:
voidtransmit(unsignedchardata)//数据发送
{
while(!(UCSRA&(1< UDR=data;//发送数据
}
unsignedcharreceive(void)//数据接收
{
while(!(UCSRA&(1< returnUDR;//接收数据
}
收藏
分享
评分
回复
引用
订阅
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
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议