第4章飞思卡尔微控制器与mscanp关pt课件.ppt

上传人:本田雅阁 文档编号:2875974 上传时间:2019-05-31 格式:PPT 页数:91 大小:7.57MB
返回 下载 相关 举报
第4章飞思卡尔微控制器与mscanp关pt课件.ppt_第1页
第1页 / 共91页
第4章飞思卡尔微控制器与mscanp关pt课件.ppt_第2页
第2页 / 共91页
第4章飞思卡尔微控制器与mscanp关pt课件.ppt_第3页
第3页 / 共91页
第4章飞思卡尔微控制器与mscanp关pt课件.ppt_第4页
第4页 / 共91页
第4章飞思卡尔微控制器与mscanp关pt课件.ppt_第5页
第5页 / 共91页
点击查看更多>>
资源描述

《第4章飞思卡尔微控制器与mscanp关pt课件.ppt》由会员分享,可在线阅读,更多相关《第4章飞思卡尔微控制器与mscanp关pt课件.ppt(91页珍藏版)》请在三一文库上搜索。

1、第四章 飞思卡尔微控制器与MSCAN,4.1 飞思卡尔微控制器 4.2 飞思卡尔的MSCAN模块 4.3 MSCAN模块的功能描述,概述,飞思卡尔半导体是全球最大的半导体公司之一,设计制造嵌入式半导体产品; 是车用微控制器(MCU)领域排名第一的供应商,具有20年的汽车电子经验; 飞思卡尔的微控制器按照CPU字长分为8位、16位、32位三种,目前,飞思卡尔的各MCU中广泛使用CAN模块设计。,飞思卡尔对汽车的了解,飞思卡尔在汽车领域的应用-车身电子,飞思卡尔在汽车领域的应用-底盘,飞思卡尔在汽车领域的应用-辅助驾驶,飞思卡尔在汽车领域的应用-信息娱乐系统,飞思卡尔在汽车领域的应用-车内联网,车

2、联网(IOV:Internetof Vehicle)是指车与车、车与路、车与人、车与传感设备等交互,实现车辆与公众网络通信的动态移动通信系统。它可以通过车与车、车与人、车与路互联互通实现信息共享,收集车辆、道路和环境的信息,并在信息网络平台上对多源采集的信息进行加工、计算、共享和安全发布,根据不同的功能需求对车辆进行有效的引导与监管,以及提供专业的多媒体与移动互联网应用服务。,飞思卡尔在汽车领域的应用-动力系统控制,MCU选择标准,MCU在其内存中包含按照OEM(定点生产)的规定根据车辆需求设计的功能逻辑 MCU处理输入和控制: BCM(车身控制模块)连接器管脚上由缓冲器电路从逻辑电平转化的输

3、出 通过通信链路发送到其他车辆模块的信息 低运行电流至关重要:运行电流越大,调节器功耗越大,散热越多 较低休眠电流至关重要:当发动机关闭,电池电压不是通过交流发电机充电时,MCU从运行模式进入低功耗模式(睡眠)。睡眠电流越大,电池用完的时间越快 从睡眠到运行模式的快速转换至关重要:某些BCM功能要求唤醒之后短时间内进行操作(从睡眠转换到运行),MCU选择标准,MCU内置功能: Flash、ROM、EEPROM 管脚输出 封装选择 功能 低功率 开发支持 成本 质量 软件可用性 可扩展性和灵活性: 兼容性(重复使用) 移植选择 外围设备,汽车性能和集成,4.1 飞思卡尔微控制器 4.1.1 MC

4、9S08DZ60微控制器,说明: S08DZ系列提供了飞思卡尔最低成本的内嵌CAN的微控制器; 将内嵌CAN、内嵌EPROM和片上仿真/调试模块组合在一起; 主要特性 8 位HCS08 中央处理器(CPU) 40-MHz HCS08 CPU (20-MHz 总线) HC08 指令集,带附加的BGND (后台调制模式)指令 支持最多32 个中断/ 复位源 片内存储器 整个工作电压和温度范围内可读取/ 编程/ 擦除的Flash 存储器 MC9S08DZ60 = 60K 最大2K的EEPROM在线可编程内存; 支持8字节单页或4 字节双页擦除分区; 执行Flash 程序的同时可进行编程和擦除操作;支

5、持擦除取消操作 最大4K 的随机存取内存(RAM),MCS9S08DZ60微控制器,主要特性 省电模式 两种超低功耗停止模式 降低功耗的等待模式 超低功耗实时时钟中断,在运行、等待和停止模式下均可操作 时钟源选项 多功能时钟生成器(MCG) PLL 和FLL 模式(在使用内部温度补偿时FLL 能够达到1.5% 内的偏差);带微调功能的内部参考时钟源;带可选择晶体振荡器或陶瓷谐振器的外部参考时钟源。 开发支持 单线背景调试接口 片上及在线仿真(ICE) -40C 125C的运行温度范围 2.7V 5.5V的运行电压范围,MCS9S08DZ60微控制器,主要特性 外围设备 ADC数模转换器 24

6、通道,12 位分辨率,2.5uS 转换时间,自动比较功能, 1.7 mV/C 温度传感器,包含内部能隙参考源通道 ACMPx 两个模拟比较器,支持比较器输出的上升、下降或任意边沿触发的中断;可选择与内部参考电压源进行比较 MSCAN CAN协议 V2.0 A 和B;支持标准和扩展数据帧;支持远程帧; 5 个带有FIFO 存储机制的接收缓冲器;灵活的接收识别符过滤器,可编程如下:2 x 32 位、4 x 16 位或8 x 8 位 SCIx 两个串行通信接口SCI,可支持LIN 2.0协议和SAE J2602协议;全双工;主节点支持break 信号生成;从节点支持中断信号检测;支持激活边沿唤醒,M

7、CS9S08DZ60微控制器,主要特性 外围设备 SPI(串口外围设备接口模块) 全双工或单线双向;双重缓冲发射和接收;主从模式选择;支持高位优先或低位优先的移位 IIC 支持最高100kbps的总线波特率;多主节点模式运行;可编程的从地址;通用呼叫地址;逐字节数据传输驱动的中断 TPMx 一个6 通道(TPM1)和一个2 通道(TPM2);可支持输入捕捉,输出比较,或每个通道带缓冲的边沿对齐PWM 输出 RTC (实时时钟计数器)8 位模数计数器,带基于二进制或十进制的预分频器;实时时钟功能,使用外部晶体和RTC 来确保精确时基、时间、日历或任务调度功能;内带低功耗振荡器(1 kHz),用于

8、周期唤醒而不需要外部器件 输入/ 输出 53个通用输入/ 输出(I/O)管脚和1 个专用输入管脚 24个中断管脚,每个管脚带触发极性选择 所有输入管脚上带电压滞后和可配置的上下拉器件 所有输入管脚上可配置输出斜率和驱动强度,MCS9S08DZ60内部结构,内部结构,内核: 中央处理器CUP 后台调试控制器BDC 断点控制器BKP,用户闪存60k,用于存放用户程序和数据,在正常运行时为只读,4k的RAM存储器用做堆栈、保存中间结果及动态数据。,2k的EEROM保存组态、设置信息等半永久数据。,4.1.2 飞思卡尔16位微控制器MC9S12XEP100,4.2 飞思卡尔的MSCAN模块,MSCAN

9、 即CAN控制器 CAN协议的实施- CAN 2.0A/B版 标准和扩展数据帧 0 8字节的数据长度 高达1Mbps的可编程比特率 支持远程帧 带FIFO存储机制的5个接收缓冲器 带内部优先级分配功能的3个发送缓冲器 灵活的可屏蔽标识符过滤器: 2个32位扩展标识符过滤器 4个16位过滤器 8个8位过滤器,4.2.1 MSCAN模块的特性,4.2.2 MSCAN模块的结构,MSCAN结构图,RXCAN:MSCAN接收器输入管脚; TXCAN:MSCAN发送器输出管脚; TXCAN输出管脚代表CAN总线上的逻辑层,即: 0 = 显性状态;1 = 隐性状态.,典型CAN系统,CAN总线系统,4.2

10、.3 MSCAN模块的寄存器的介绍,1、MSCAN控制寄存器(1)控制寄存器0(CANCTL0),D7RXFRM位,已收到帧标记 D6RXACT位,接收器使能状态 D5CSWAI位,在等待模式中CAN停止,(1)MSCAN控制寄存器0(CANCTL0),D4SYNCH位,同步状态 D3TIME位,计时器使能 D2WUPE位,唤醒使能 D1SLPRQ位,睡眠模式请求 D0INITRQ位,初始化模式请求,(2)MSCAN控制寄存器1(CANCTL1),D1,D0:未定义 D7CANE位,MSCAN使能 D6CLKSRC位,MSCAN时钟源 D5LOOPB位,闭环自测模式 D4LISTEN位,监听模

11、式,(2)MSCAN控制寄存器1(CANCTL1),D3BORM位,总线脱离恢复模式 D2WUPM位,唤醒模式 D1SLPAK位,睡眠模式确认 D0INITAK位,初始化模式确认,(1)MSCAN总线定时寄存器0(CANBTR0) D7D6SJW1:0,同步跳转宽度 D5D0BRP5:0,波特率预分频器,2、 MSCAN总线定时寄存器,(2)MSCAN总线定时寄存器1(CANBTR1) D7SAMP位,采样 D6D4TSEG22:0位,时间段2 D3D0TSEG13:0位,时间段1,D5,D4,D3,D2:未定义 D7WUPIF位,唤醒中断标 D6CSCIF位,CAN状态变化中断标志 D5D4

12、RSTAT1:0位,接收器状态位 D3D2TSTAT1:0位,发送器状态位 D1OVRIF位,溢出中断标志 D0RXF位,接收缓冲器已满标志,3、MSCAN接收器标志寄存器(CANRFLG),D7WUPIE位,唤醒中断使能 D6CSCIE位,CAN状态变化中断使能 D5D4RSTATE1:0,位接收器状态变化使能 D3D2TSTATE1:0,发送器状态变化使能 D1OVRIE位,溢出中断使能 D0RXFIE位,总接收器已满中断使能,4、MSCAN接收器中断使能寄存器(CANRIER),D7D3未定义 D2D0TXE2:0位,发送器缓冲器空,5、MSCAN发送器标志寄存器 (CANTFLG),D

13、7D3未定义 D2D0TXEIE2:0位,发送器空中断使能,6、MSCAN发送器中断使能寄存器 (CANTIER),D7D3未定义 D2D0ABTRQ2:0位,中止请求,7、 MSCAN发送器报文中止请求寄存器 (CANTARQ),D7D0未定义 D2D0ABTAK2:0位,中止确认,8、MSCAN发送器报文中止确认寄存器(CANTAAK),D7D3未定义 D2D0TX 2:0位,发送缓冲器选择,9、MSCAN发送缓冲器选择寄存器(CANTBSEL),10、MSCAN标识符验收控制寄存器(CANIDAC),11、MSCAN保留寄存器(Reserved),12、MSCAN其他寄存器(CANMIS

14、C),13、MSCAN接收错误计数器(CANRXERR),14、MSCAN发送错误计数器(CANRXERR),15、MSCAN标识符接收寄存器(CANIDAR0-CANIDAR7),16、MSCAN标识符掩码寄存器(CANIDMR0-CANIDMR7),4.3 MSCAN模块的功能描述,模块图,MSCAN模块功能,可编程功能: 集成的低通过滤器提供唤醒功能 环回模式支持自检操作 监听模式支持CAN总线监控 单独的信令传输和中断功能,适合所有CAN接收器和发射器错误状态(警告、被动错误和总线脱离)。 可编程的时钟源,可以是系统时钟或晶体振荡器输出 内部定时器,对接收和发送的消息添加时间戳 低功耗

15、模式:休眠、电源关闭和MSCAN使能,4.3.2 报文发送基础,4.3.3 MSCAN的发送,MSCAN发送结构 3个发送缓冲区 可同时准备多条待发送的报文,提高实时性;,发送控制相关寄存器,TXn = 1 :选择相关报文缓冲区 TXn = 0 :相关报文缓冲区不被选着 TXEn = 1:发送缓冲器为空(已发送或放弃) TXEn = 0:发送缓冲器已满(未发送,已安排好日程) TXEIEn = 1:启动发送中断功能。空的发送缓冲器导致中断。 TXEIEn = 0:取消发送中断功能。 ABTRQn = 1:请求中止发送。 ABTAKn = 1:信息发送中止(未发送) ABTAKn = 0:信息发

16、送未中止(已发送),发送器标志寄存器,发送器中断使能寄存器,发送器报文中止请求寄存器,发送器报文中止确认寄存器,MSCAN -发送结构,发送缓冲器选择寄存器,0表示相关报文缓冲区不被选择; 1表示选择相关的缓冲区,MSCAN发送流程,配置: 将标识符、数据和优先级写入空的发送缓冲器。 安排缓冲器的发送顺序(清除TXEn) 启动发送中断(设置TXEIEn) 优先级值最低的发送缓冲器(安排发送消息的缓冲器)将在下一个IFS期间参与仲裁以接入CAN总线 发送中断: 识别已发送完消息的信息缓冲器 关闭发送中断 测试ABTAK(确认标记) 读取时间戳寄存器(如果启动了TIME链路的话) 如果发送队列中还

17、有一条消息,请重复上述发送流程。,4.3.4 接收结构,接收器标志寄存器(CANRFLG)中有一位RXF:接收缓冲器已满标志,0: RxFG 中没有新报文 1:接收器FIFO 非空。RxFG 中有报文,接收流程, 配置: 设置INITRQ(初始化模式请求) 配置接收过滤器 启动接收中断 清除INITRQ 接收中断: 读取标识符,执行过滤 读取数据长度代码字段 读取数据字段(如果不是远程帧的话) 读取时间戳(如果启动了时间链路) 释放接收缓冲器,MSCAN消息缓冲器,消息过滤 各信息在接收后被写入到后台接收缓冲器中。 只有当CPU达到标识符接收和标识符掩码寄存器中规定的标准时,CPU才会被通知读

18、取信息。 MSCAN的接收寄存器以逐位方式应用于滤波信息的IDR0IDR3寄存器。,标识符寄存器,标准标识符(11位) IDE = 0 最小的二进制值代表的标识符的优先级最高。 逻辑“0”作为显性位发送。 7个最高有效位( ID10 ID4)不能全部为“1”(隐性),标识符寄存器,扩展标识符(29位) IDE = 1 & SRR = 1 最小的二进制值代表的标识符的优先级最高。 逻辑“0”作为显性位发送。 7个最高有效位( ID28 ID22 )不能全部为“1”(隐性)。,数据寄存器,本地优先级,4.3.5 CAN接收过滤器,标识符接收寄存器(CANIDAR0-7)定义标准或扩展标识符的接收模

19、式。 在标识符掩码寄存器(CANIDMR0-7)中,标识符接收位可标为“dont care(不需留意)” 。 接收掩码寄存器中设置的任何位表示不需和消息标识符进行比较来确定是否接收。 只有接收寄存器中没有标记的位才和消息标识符进行比较以确定是否接收。 各个接收过滤器寄存器可以配置为8、16或32位: 2个32位过滤器 4个16位过滤器 8个8位过滤器,标识符接收控制寄存器,接收控制寄存器CANIDAC中的一个接收缓冲器满标记( RXF=1)和3个标识符击中标记(IDHT标识符有效)向应用软件通知过滤命中。,接收寄存器:2x32位过滤器,接收寄存器:4x16位过滤器,接收寄存器:8x8位过滤器,

20、4.3.6 过滤器举例,4.3.8 时钟系统,MSCAN时钟发生结构图,CANCTL1寄存器中的时钟源位(CLKSRC)决定内部CANCLK是连接到晶体振荡器(振荡器时钟)输出还是连接到总线时钟。必须选择能满足CAN协议的振荡器精度要求(高达0.4%)的时钟源。此外,对于高CAN总线速率(1 Mbps)来说,要求45%-55% 的时钟占空比。 可编程预分频器从CANCLK生成时间冲量(Tq)时钟。时间冲量是MSCAN所处理时间的原子单位,f Tq=fCANCLK/(Prescaler value),位时间再分成三段 SYNC_SEG: 该段有一个长度固定的时间冲量,信号边沿预计出现在本段。 时

21、段1:本段包括CAN标准的PROP_SEG和PHASE_SEG1。通过设置参数TSEG1,使之包含4-16个时间冲量,可以对其进行编程 时段2:本段表示CAN 标准的PHASE_SEG2。通过设置TSEG2参数,使之具有2-8个时间冲量长,可以对其进行编程,4.3.9 运行模式,4.3.10 MSCAN的低功耗选项,4.3.11 MSCAN的休眠模式,MSCAN睡眠模式,睡眠请求/确认周期,进入/退出睡眠模式的简单状态转换,MSCAN初始化模式,初始化请求/确认周期,4.3.12 MSCAN的初始化,MSCAN断电模式 CPU处于停止模式 CPU处于等待模式且设置了CSWAI位,4.3.13

22、MSCAN断电模式,可编程唤醒功能 只要检测到CAN总线有效,就可以对MSCAN进行编程以唤醒MSCAN,4.3.14 可编程唤醒功能,14.3.4 中断,中断矢量运行描述,14.4 MSCAN初始化、报文发送与接收的函数设计,14.5.1 MSCAN初始化过程 判断CANE,是否处于启动状态。 写入处于初始化模式的配置寄存器。 清除INITRQ,离开初始化模式,进入正常模式 当MSCAN模块处于正常模式下,需要更改只能在初始化模式中写入的寄存器: CAN总线空闲后,通过设置SLPRQ并等待SLPAK进行确认,将模块置入睡眠模式。 进入初始化模式:确定INITRQ并等待INITAK。 写入处于

23、初始化模式的配置寄存器。 清除INITRQ,离开初始化模式,继续保持正常模式,14.5.2 MSCAN报文发送/接收过程,MACAN数据帧的发送和接收使用相同的结构体: typedef struct CanMsg uint32 sendID; /msg发送方ID uint8 IDE; /是否为扩展ID格式 uint8 RTR; /是否为远程帧 uint8 data8; /帧数据 uint8 dataLen; /帧数据长度 uint8 priority; /发送优先级 CANMsg;,数据帧发送的过程 检查数据长度是否符合发送缓冲区数据长度要求 检查总线时钟 寻找空闲的发送缓冲区,并置位发送器缓

24、冲器空(TXEx)标志 CPU写入CANTBSEL寄存器,为该缓冲器设置一个指针,使缓冲器能够在CANTXFG地址空间内访问 CPU将标识符、控制位和数据内容保存到一个发送缓冲器 清除相关TXE标志,缓冲器标志为发送准备就绪 数据帧接收的过程 检测接收标志 检测CAN协议报文模式标识符 读标识符、数据长度、标识符 清RXF标志位,14.5.3 MSCAN测试实例,本实例的功能是实现MSCAN的闭环自测功能 Main函数的代码如下: /-* / 工 程 名: CAN_self * / 硬件连接: 连接串口1,用于向PC发送接收到的CAN数据 * / 程序描述: CAN模块工作在闭环测试模式,接收

25、采用中断方式 * / 目 的: 初步掌握CAN通信的基本知识 * / 说 明: CAN通信频率选择为800k,使用SCI1通信速率为9600 * /-苏州大学飞思卡尔嵌入式系统研发中心2011年-* void main(void) uint8 count50ms=0; CANMsg msgSend= /CAN测试报文 1,0,0,“TestMsge“,8,0 ; uint8 sciMsg14= “Hello! World!“; /1 关总中断 DisableInterrupts(); /2 模块初始化 MCUInit(); /2.1 芯片初始化,SCIInit(1,SYSTEM_CLOCK,9

26、600); /2.2 UART模块初始化 CANInit(); /2.3 CAN模块初始化 /3 开放中断 EnableSCIReInt(); /3.1开放SCI接收中断 EnableCANReInt(); /3.2开放CAN接收中断 EnableInterrupts(); /3.3开放总中断 /4 主循环 SCISendN(1,sizeof(sciMsg),sciMsg);/4.1发送“Hello! World!“,while (1) Delay(1); count50ms+; /延时2s if(40=count50ms) /4.1CAN总线发送CAN数据 if(0=CANSendMsg( ,对CAN总线数据的接收是在CAN中断中实现的,其代码如下: /CAN接收中断函数 interrupt void isrCAN_Recv(void) DisableInterrupts(); /禁止总中断 CANGetMsg( /开放总中断 ,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1