汽车总线技术实验指导书.docx
- 文档编号:24808379
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:40
- 大小:2.05MB
汽车总线技术实验指导书.docx
《汽车总线技术实验指导书.docx》由会员分享,可在线阅读,更多相关《汽车总线技术实验指导书.docx(40页珍藏版)》请在冰豆网上搜索。
汽车总线技术实验指导书
《汽车总线技术》实验指导书
王思山编
梁玉红审
湖北汽车工业学院电气与信息工程学院电子信息系
2010年05月
第1章汽车总线实验箱开发基础知识
汽车总线实验平台简介
汽车总线技术实验箱是具有汽车CAN和LIN双总线实验、教学和科研设备,通过汽车CAN总线和LIN总线的通信模拟对汽车的车速、转速、仪表显示、灯系、收音机、车窗和网关的控制。
本实验箱具有多CPU、多节点、双总线、多种控制对象和支持高层协议等特点。
汽车总线技术实验箱是面向汽车电子、车辆工程专业的实验、教学和科研平台,可用于汽车电子相关专业课程的实验教学,也可用于基于CAN总线和LIN总线的科学研究。
提供多个实验例程,利用成熟总线协议栈和设备驱动库,便于熟悉和掌握汽车总线技术的原理、应用。
实验平台硬件资源
实验平台实物图如下图所示。
各模块的具体功能如下:
图1.2.1实验平台实物图
ØCPU主板:
CPU为MC9S08DZ60,4M晶振,复位按键,6针ISP接头
Ø发动机节点:
车速直流电机、传感器及车速显示;发动机转速直流电机、传感器及发动机速度显示
Ø仪表节点:
车速、发动机转速和水温的步进电机显示;油量显示;压力显示;里程表显示;左右转向灯
Ø传感器节点:
水温传感器及显示;油量传感器及显示;压力传感器及显示;加速踏板模拟;档位模拟
Ø车载收音机节点:
搜台、存台、上步进调台、下步进调台;显示频率;搜台成功指示
Ø灯系节点:
刹车灯指示;转向左转指示;转向右转指示;
Ø收音机、灯系控制节点:
刹车控制、转向控制;搜台、存台、上步进调台、下步进调台;显示相关信息
Ø网关节点:
CAN总线数据包指示;LIN总线数据包指示
Ø编程节点:
主要包括温度传感器;直流电机及测速1个;步进电机及其驱动2个
ØRS232模块:
能够用于调试,也能够用于串口下载
ØCAN接口:
TJA1050
ØLIN接口:
TJA1020
Ø液晶:
两个电压,128*64点LCD;一个5V供电,O,分辨率为320*寸TFTLCD
实验箱硬件配套资源:
Ø220V电源线
Ø下载器
Ø收音机天线
实验平台软件资源
汽车总线技术实验箱配有实验指导书方便实验教学。
支持最新的CodeWarriorforMicrocontrollers和CodeWarriorDevelopmentStudio。
汽车总线实验装置能够开设的实验项目有:
Ø汽车LIN总线基础通信实验
Ø汽车LIN总线模拟控制实验
Ø汽车CAN总线基础通信实验
Ø汽车CAN总线模拟控制实验
ØLIN总线和CAN总线网关通信实验
Ø基于LIN通信的收音机控制实验
Ø车灯控制实验
Ø仪表控制实验
Ø发动机模拟控制实验
ØJ1939协议通信实验
实验平台硬件构架
实验平台的硬件框图如下图1.4.1所示:
图1.4.1实验平台功能框图
开发软件介绍
CodeWarrior是Metrowerks公司研发的专门面向Freescale所有MCU与DSP嵌入式应用开发的软件工具,是Freescale向用户推荐的产品。
Metrowerks公司是Motorola公司于1999年收购的、独立运行的子公司。
CodeWarrior分为3个版本:
特别版、标准版和专业版。
特别版是免费的、用于教学目的,对生成的代码量有必然限制,C代码不得超过12KB,对工程包括的文件数量限制在30个之内。
标准版和专业版没有这种限制。
3个版本的区别在于用户所取得的授权文件不同,特别版的授权文件随安装软件附带,不需要特殊申请,标准版和专业版授权文件需要付费,同其他商业软件一样,付费前有1个月的试用期。
CodeWarrior特别版、标准版和专业版的概念随所支持的微处置器的不同而不同。
CodeWarriorIDE是飞思卡尔半导体公司推出的一款支持多种硬件平台的集成开发环境,CodeWarriorforMicrocontrollers,能够为RS0八、HC(S)08和ColdFireV1等微控制器的设计提供快速高效的开发工具,实现源程序编辑、编译和全片模拟、在线仿真等诸多功能。
实验开发步骤介绍
一、接通电源,打开电源开关
二、连接下载器,一端通过USB连接线与主机USB接口连接,一端与实验箱CPU主板BDM(BackgroundDebugMode后台调试模式)口连接。
3、下面以HCS08DZ60的C语言为例简单介绍在CodeWarriorforMicrocontrollers集成开发环境中的开发进程。
具体可见附录中的CodeWarriorforMicrocontrollers教程。
Ø运行CodeWarriorIDE。
点击桌面快捷方式图表或选择“开始>程序>FreescaleCodeWarrior>CodeWarriorforMicrocontrollers>CodeWarriorIDE”打开CodeWarrior集成开发环境。
如下图1.6.1所示。
图1.6.1CodeWarrior集成开发环境主界面
Ø点击CreateNewProject或通过菜单选择“File>NewProject”进入成立微控制器新工程界面,如图1.6.2所示。
在库中找到MCS09DZ60
图1.6.2微控制器新工程成立界面
Ø选择微控制器型号和连接方式(Connections),连接方式默许选择为“FullChipSimulation”。
微控制器型号和连接方式在工程成立后,也能够在工程属性栏按照需要进行修改。
Ø单击下一步进入工程名称、寄存路径、开发语言设置界面、输入工程名称、制定工程寄存路径、选择相应的开发语言,如图1.6.3所示。
图1.6.3工程名称、寄存路径、开发语言设置界面
Ø点击下一步进入工程文件添加、移除界面,如图1.6.4所示。
能够对新工程的文件进行添加、移除管理。
图1.6.4工程文件添加、移除界面
Ø点击下一步进入快速应用开发设置界面,如图1.6.5所示,能够选择期间初始化和“ProcessorExpert”工具自动生成初始化代码。
图当选择“None”则不生成任何器件初始化代码,工程中只包括启动代码(StartupCode)。
图1.6.5快速应用开发设置界面
Ø点击下一步进入开发语言设置界面,出现C/C++设置界面,如图1.6.6所示,能够选择启动代码的类型、利用存贮器的模式和浮点数支持方式。
图中别离选择“ANSI启动代码(ANSIstartupCode)”“小型存贮器的模式(Small)”和“不支持浮点数(None)”。
图1.6.6开发语言设置界面
Ø点击下一步进入PC-lint(TM)设置界面,如图1.6.7所示。
PC-lint(TM)是Gimpel软件公司开发的程序调试工具,图当选择“No”。
图1.6.7PC-lint(TM)设置界面
Ø点击完成系统会按照上面的设置信息创建新工程,新工程窗口如图1.6.8所示。
图1.6.8工程窗口
Ø在工程窗口中进行程序编写,编写好后进行进行编译,如图1.6.9所示。
主机通过USB口与调试工具相连,调试工具通过BDM插头与目标板(实验箱)相连。
主机、调试工具、目标板(实验箱)三者缺一不可。
图1.6.9程序编译
Ø点击编译后自动弹出调试窗口,并依次出现如图1.6.10所示对话框。
图1.6.10对话框
图1.6.11运行图
如此就可以够将调试通过的程序下载到目标硬件进行在线调试运行了。
第2章基础实验
熟悉FreescaleCodeWarrior开发环境
一、实验目的
一、熟悉实验箱结构,熟悉实验箱操作;
二、熟悉软件开发环境FreescaleCodeWarrior;
3、熟悉MCUMC9S08DZ60和GPI/O的结构及其利用。
二、预备知识
C语言的基础知识、程序调试的基础知识和方式,FreescaleCodeWarrior集成开发环境的大体操作和MCUMC9S08DZ60和GPI/O的结构。
三、实验设备及工具
硬件:
汽车总线技术实验箱、DBM、PC机Pentumn500以上,硬盘10G以上。
软件:
FreescaleCodeWarriorforMCU集成开发环境。
四、实验原理
MC9S08DZ60系列MCU最多可提供53个通用I/O管脚和1个专用输入管脚。
这些管脚和片上外围设备(按时器、串行I/O、ADC、MSCAN等)共享。
通过端口数据寄放器执行并行输入/输出读取/写入。
无论是输入仍是输出方向,都由端口数据方向寄放器控制。
数据方向控制位(PTxDDn)决定是不是启动相关管脚利用的输出缓冲器,同时控制端口数据寄存器读取的源。
相关管脚的输入缓冲器老是处于使能状态,除非管脚用作模拟功能或输出管脚。
当一个端口管脚被配置为通用输出时,或某外围设备利用该端口管脚作为输出时,通过软件能够在两个驱动强度当选择一种并同时启用或禁用斜率控制。
当一个端口管脚被配置为通用输入或某外围设备利用该端口管脚作为输入时,软件能够选择一个上拉器件。
复位完成后,所有这些管脚被当即配置为高阻抗通用输入(内部上拉器件被禁用)。
当一个片上外围系统控制管脚时,即便该外围模块通过控制该管脚的输出缓冲器的启用来控制管脚方向时,仍然由数据方向控制位决定从端口数据寄放器中读取的内容。
一个不错的编程适应是在把端口管脚方向修改成输出前就写入端口数据寄放器,这确保不会用在端口数据寄放器内的旧数据值来临时驱动管脚。
五、实验内容
本次实验要求熟练利用FreescaleCodeWarrior集成开发环境,掌握在FreescaleCodeWarrior开发环境下进行源代码编写和编译,并通过DBM接口下载已经编译好的程序到汽车总线技术实验箱中的编程节点中运行。
六、实验步骤
一、编程实现对LED的控制
本步骤是实现对汽车总线技术实验箱中编程节点的两个LED(D14、D15)(原理图与实物图如图2.1.1所示)同时闪烁。
图2.1.1LED原理图与实物图
#include<>
voidmain(void)
{
MCG_Init();
DZ60_GPIO_Init();
EnableInterrupts;
while
(1){
LED_Trigger
(2);
Cpu_Delay100US(2000);
}}
其中头文件中包括,,,别离是用来对MC9S08DZ60端口的概念,对msCAN端口的概念和对MC9S08DZ60库的概念。
这些头文件在以后的实验中会以模板形式给出。
voidMCG_Init(void)2.1.2
2.1.210G晶在物理上分成两大类,一类是无源Passive的(也称被动式),这种液晶本身不发光,需要外部提供光源,按照光源位置,又能够分为反射式和透射式两种。
Passive液晶显示的本钱较低,可是亮度和对比度不大,而且有效视角较小,彩色无源液晶显示的色饱和度较小,因此颜色不够鲜艳。
另一类是有电源的,主如果TFT(ThinFilmTransitor)。
每一个液晶实际上就是一个能够发光的晶体管,所以严格地说不是液晶。
液晶显示屏就是由许多液晶排成阵列而组成的,在单色液晶显示屏中,一个液晶就是一个象素,而在彩色液晶显示屏中则每一个象素由红绿蓝三个液晶一路组成。
同时能够以为每一个液晶背后都有个8位的寄放器,寄放器的值决定着三个液晶单元各自的亮度,不过寄放器的值并非直接驱动三个液晶单元的亮度,而是通过一个“调色板”来访问。
3、MzT35C1TFTLCD
本汽车总线技术实验箱用到的LCD为MzT35C1,它是一块高画质的TFT真彩LCD模块,模块内置LCD控制器和驱动器,外部8位的8080总线接口,可方便的利用单片机对其进行连接控制,具有编程方便、易于扩展灯良好性能。
MzT35C1彩色TFTLCD显示模块的内置LCD控制器和显存,其背光可由指令控制(128级可调),用户对MzT35C1模块进行操作时,实际上是对LCD控制器进行相关的控制寄放器、显示数据存储器进行操作的。
需要注意的是:
MzT35C1模块内部有两个图层的显存,但仅能通过指令来指定当前显示的显存,和对哪一层显存进行操作;而当前显示的显存与操作的显存为同一屏显存时,现在对显存的操作便会直接表现与屏幕上。
MzT35C1模块在PCB背板上集成了一个LCD控制器和显存、背光控制等电路,模块正面是一寸TFT显示器,显示器通过FPC与背板进行连接,并由胶带将其固定在背板上;而模块以DIP的双排插针引出控制接口(8位8080并行总线)模块以便于用户连接。
以下为模块接口介绍,如图2.2.1所示。
图2.2.1模块接口示用意
表2.2.1模块接口引脚说明
接口引脚
说明
VCC
模块供电电源输入(一般无特殊要求为5V)
D0~D7
8位数据总线
CS
片选(低电平有效)
RST
Reset复位(低电平复位)
A0
控制寄存器/数据寄存器选择(低电平控制寄存器)
WE
写信号(低电平有效)
RD
读信号(低电平有效)
GND
接地
S_CS
预留有ADS7846的片选
S_SCK
预留有ADS7846的SPI时钟输入
S_SDO
预留有ADS7846的SPI数据输出
S_SDI
预留有ADS7846的SPI数据输入
S_INT
预留有ADS7846的INT信号
S_BUSY
预留有ADS7846的BUSY信号
4、显示RAM区映射情形
MzT35C1模块的英寸TFT-LCD显示面板上,共散布着320×240个像素点,当打开显示时,面板上的像素点将与当前选择的显示层显示的数据一一对应;模块中每一个像素点需要16位的数据(即2字节长度)来表示该点的RGB颜色信息,所以模块内置一屏的显存共有320×240×16bit的空间,通常咱们以字节(byte)来描述其大小。
MzT35C1模块的显示操作超级简便,需要改变某一个像素点的颜色时,只需要对该店所对应的2个字节的显存(指的是两屏显存中当前处于显示的显存)进行操作即可。
为了便于索引操作,模块将所有的显存地址分为X轴地址(XAddress)和Y轴地址(YAddress),别离能够寻址的范围为XAddress=0~319,YAddress=0~239,XAddress和YAddress交叉对应着一个显存单元(2byte);如此只要索引到了某一个X、Y轴地址时,并对该地址的寄放器进行操作,即可对TFT-LCD显示器上对应的像素点进行操作了。
提示:
以上的描述意味着,当咱们对某一地址上的显示进行操作时,需要对该地址进行持续两次的8位数据写入或读出的操作,方可完成对一个显存单元的数据写入操作;除此之外,还应确认该层显存当前是处于显示的而且处于操作状态。
MzT35C1模块的像素点与显存对应关系如图2.2.2所示:
图2.2.2显存与像素点对应关系示用意
MzT35C1模块内部有一个显存地址累加器AC,即用于在读写显存是对显存地址进行自动的累加,这在持续对屏幕显示数据操作时超级有效,专门是应用在图形显示、视频显示时。
另外,AC累加器为对XAddress累加方式,具体为累加到一行的止境时,会切换到下一行的起始开始累加。
MzT35C1模块内部有两屏的显存,但只能同时显示一屏的显存,用户能够通过指令来指定当前显示的显存图层,另外,还能够指定当前操作的显存图层,也就是说显示着的图层能够与操作着的图层不一样。
五、MzT35C1模块控制方式
对MzT35C1模块的操作主要分为两种,一是对控制寄放器的地址写入,二是对数据的读写操作;A0控制线的高低电平状态区别当前的总线操作是对控制寄放器的地址写入仍是对所指向的寄放器进行数据操作:
当A0为低电平时,表示当前的总线操作是对控制寄放器的地址进行操作;当A0为高电平时,表示对数据写入/读出操作。
MzT35C1模块内部有控制寄放器,用户在利用MzT35C1之前和对其进行操作进程当中,需要对一些寄放器进行写操作以完成LCD的初始化,或是完成某些功能的设置(如当前显存操作地址设置等)。
对控制寄放器进行操作前,需要对控制寄放器地址进行写入操作,以指明接下去的数据操作是针对哪个寄放器。
一般来讲操作步骤如下:
⑴、在A0为低电平的状态下,写入一个字节的数据,该字节为寄放器地址。
⑵、然后在A0为高电平的状态下,写入两个字节数据,第一字节为高八位,第二字节为低八位;如要读出指定寄放器的数据,则需要持续三次读操作方能完成一次读出操作,第一字节为无效数据,第二字节为高八位,第三字节为第八位。
注意:
MzT35C1的显存操作也是通过向指定的寄放器地址进行读写操作来完成的,即对0x02寄放器进行操作时,就是对当前处于操作状态下的图层显存进行读写操作。
MzT35C1模块的控制寄放器当中,最常被挪用的是寄放器除对显存操作的0x02寄放器外,还有当前显存地址的寄放器AC,一共由两个寄放器组成,别离寄存有YAddress和XAddress,表示当前对显存数据的读写操作是针对于该地址所指向的显存单元;而每一个显存单元在前面已经用图示意过,每一个单元有16位,最高的5位为R(红)的分量,最低的5为为B(蓝)的分量。
如图2.2.3所示:
图2.2.3显存单元示用意
所以,当需要对LCD显示面板上某一点(X,Y)进行操作时,需要先设置AC,以指向需要操作的点所对应的显存地址,然后持续写入或读出数据,才完成对该点的显存单元的数据操作。
而当对某一个显存单元完成写入数据操作后,AC会自动的进行调整,将会指向同一行的下一个点,即X地址自动加1,当X地址抵达行末时,会自动将X地址清零并将Y地址自动加1.
注意:
写入地址时,要先写入Y地址,然后再写入X地址。
六、控制寄放器介绍
为了能快速掌握MzT35C1模块的利用,这里列出MzT35C1模块内部控制寄放器,以便快速的掌握MzT35C1的驱动控制方式。
表2.2.2控制寄放器说明
(1)Y地址寄放器(0x00):
当A0为低电平时,从总线写入一个字节0x00,现在将控制寄放器指向Y地址寄放器,该寄放器需设置16位寄放器数值,即为Y轴地址,实际上高8位为无用数据,低8位为指定的寄放器地址(YA7~YA0)。
注意:
对Y地址寄放器进行数据写入操作完成后,寄放器地址自动指向X地址寄放器。
(2)X地址寄放器(0x00):
当A0为低电平时,从总线写入一个字节0x01,现在将控制寄放器指向X地址寄放器,该寄放器需设置16位寄放器数值,即为Y轴地址,实际上高7位为无用数据,低9位为指定的寄放器地址(XA8~XA0)。
注意:
对Y地址寄放器进行数据写入操作完成后,寄放器地址自动指向显存寄放器。
(3)显存操作寄放器(0x02):
当A0为低电平时,从总线写入一个字节0x02,现在将控制寄放器指向显存操作寄放器,尔后再对总线进行数据读写操作时,将会写入或读出之前设置Y、X轴地址所指向的显存数据(指的是当前处于操作的图层显存)。
对该寄放器的数据读写操作时,一个完整的数据操作包括两个字节,共16位,别离概念为某一显存上的三原色分量的散布,如图所示,即为RGB565的格式。
(4)背光设置寄放器(0x03):
当A0为低电平时,从总线写入一个字节0x03,现在将控制寄放器指向背光设置寄放器,该寄放器需设置16位的寄放器数值,bit7位为背光开关控制,为1表示打开背光,为0表示关闭背光;bit6~bit0为背光的品级设置,可从0~127。
(5)模块设置寄放器(0x04):
当A0为低电平时,从总线写入一个字节0x04,现在将控制寄放器指向模块设置寄放器,该寄放器需设置16位的寄放器数值,bit7位为当前显示图层设置(可为0或1,别离表示0和1图层显存);bit6为当前操作图层显存设置(可为0或1,别离表示0和1图层显存);bit0为显示开关,为1表示打开显示,为0表示关闭显存。
7、MzT35C1模块驱动程序介绍
(1)LCD模块连接的端口概念(在中概念)
#defineLCD_Ctrl_GPIO()PTDDD=0x7c,PTCDD=0xff
#defineLCD_Ctrl_Out()
#defineLCD_Ctrl_Set(n)PTDD|=(n)
#defineLCD_Ctrl_Clr(n)PTDD&=~(n)
#defineLCD_CS(0x01<<2)
#defineLCD_CS_SET()PTDD|=LCD_CS
#defineLCD_CS_CLR()PTDD&=~LCD_CS
#defineLCD_RE(0x01<<3)
#defineLCD_RE_SET()PTDD|=LCD_RE
#defineLCD_RE_CLR()PTDD&=~LCD_RE
#defineLCD_A0(0x01<<4)
#defineLCD_A0_SET()PTDD|=LCD_A0
#defineLCD_A0_CLR()PTDD&=~LCD_A0
#defineLCD_RW(0x01<<5)
#defineLCD_RW_SET()PTDD|=LCD_RW
#defineLCD_RW_CLR()PTDD&=~LCD_RW
#defineLCD_RD(0x01<<6)
#defineLCD_RD_SET()PTDD|=LCD_RD
#defineLCD_RD_CLR()PTDD&=~LCD_RD
#defineLCD_Data_GPIO()
#defineLCD_Data_Out()PTCDD=0xff
#defineLCD_Data_In()PTCDD=0x00
#defineLCD_Data_BUS_Clr()
#defineLCD_Data_BUS_Set(n)PTCD=n
#defineLCD_Data_Read()PTCD
(2)初始化LCD模块,液晶模块的初始化很重要,初始化是不是完成,直接影响以后的操作是不是能够显示出来,专门是TFT模块的背光设置,若是背光不亮,则显示是看不出来的。
voidLCD_Init(void) 2.2.4
2.2.410G3.1.1
3.1.13.1.2
3.1.23.1.3
3.1.33.1.4
3.1.43.1.5
3.1.53.1.6
3.1.6思卡尔API服务挪用
2.主节点和从节点
3.注意:
LIN_STATUS_RUN=~LIN_FLAG_SLEEP
LIN_STATUS_PENDING=~LIN_FLAG_IGNORE
LIN_STATUS_IDLE=(LIN_IdleTimeout==0)
7)LIN_MsgStatus检查状态(在中概念)
程序:
LIN_MsgStatus(LINMsgIdTypemsgId)
描述:
检查数据发送状态
参数:
msgId为报文ID号
返回:
当信息已经接收
LIN_OK—检测到数据发送成功
LIN_NO_ID—说明报文ID无效
LIN_MSG_NOCHANGE—说明没有接收到发送的信息
LIN_MSG_NODATA—说明驱动器初始化后没有接收到信息
LIN_MSG_OVERRUN—说明驱动器内的信息已经被覆盖
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汽车 总线技术 实验 指导书