嵌入式系统设计实战基于飞思s12x网上光盘整体0105sd wyh s12xs128book课件v1.0chap_第1页
嵌入式系统设计实战基于飞思s12x网上光盘整体0105sd wyh s12xs128book课件v1.0chap_第2页
嵌入式系统设计实战基于飞思s12x网上光盘整体0105sd wyh s12xs128book课件v1.0chap_第3页
嵌入式系统设计实战基于飞思s12x网上光盘整体0105sd wyh s12xs128book课件v1.0chap_第4页
嵌入式系统设计实战基于飞思s12x网上光盘整体0105sd wyh s12xs128book课件v1.0chap_第5页
免费预览已结束,剩余43页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第10章 XS128 CAN模块编程方法本章目录CAN总线通用知识10.1MSCAN模块简介10.2MSCAN模块的内存映射及寄存器定义10.3MSCAN模块双机通信测试实例10.422022/8/28MSCAN模块的自环通信实例10.5本章目录CAN总线通用知识10.1MSCAN模块简介10.2MSCAN模块的内存映射及寄存器定义10.3MSCAN模块双机通信测试实例10.432022/8/28MSCAN模块的自环通信实例10.510.1 CAN总线通用知识10.1.1 CAN总线协议的历史概况控制器局域网(Controller Area Network,CAN),最早出现于20世纪80年代

2、末,是德国Bosch公司为简化汽车电子中信号传输方式并减少日益增加的信号线而提出的。CAN总线是一个单一的网络总线,所有的外围器件可以挂接在该总线上。CAN技术在汽车电子、电梯控制、安全监控、医疗仪器、船舶运输等方面均得到了广泛的应用,目前已经成为国际上应用最广泛的现场总线之一。10.1 CAN总线通用知识10.1.2 CAN硬件系统的典型电路 1. 最简明的CAN硬件连接方法该电路主要用于在电磁干扰较弱环境下的近距离通信。进行CAN通信节点调试时,可以利用这个简单且易于实现的电路。另外,可以利用该电路理解CAN总线的通信机制。10.1.2 CAN硬件系统的典型电路 2. 常用的CAN硬件系统

3、的组成10.1 CAN总线通用知识10.1.2 CAN硬件系统的典型电路 3.带隔离的典型CAN硬件系统电路在实际应用过程中,为了提高系统的抗干扰能力,CAN 控制器引脚CANTX、CANRX 和收发器PCA82C250 并不是直接相连的,而是通过由高速光耦合器6N137 构成的隔离电路后再与PCA82C250 相连,这样可以很好地实现总线上各节点的电气隔离。10.1 CAN总线通用知识10.1.2 CAN硬件系统的典型电路 4.不带隔离的典型CAN硬件系统电路在电磁干扰较弱的环境下,隔离电路可以省略,这样CAN控制器可直接与CAN收发器相连。10.1 CAN总线通用知识910.1.3 CAN

4、总线的有关基本概念 1.CAN总线上的数据表示 CAN总线实际上大多数使用双绞线,利用差分方法进行信号表达,它是一种半双工通信方式。 CAN总线上用显性(Dominant)和隐性(Recessive)分别表示逻辑0和逻辑1。若不同控制器同时向总线发送逻辑0和逻辑1时,总线上出现逻辑0(相当于逻辑与的关系)。10.1 CAN总线通用知识1010.1.3 CAN总线的有关基本概念 2.报文、信息路由、位速率、位填充报文:是指在总线上传输的固定格式的信息,其长度是有限制的。信息路由(Information Routing):在CAN系统中,CAN不对通信节点分配地址,报文的寻址内容由报文的标识符ID

5、指定。位速率(Bit Rate):是指CAN总线的传输速率。在给定的CAN系统中,位速率是固定唯一的。CAN总线上任意两个节点之间的最大传输距离与位速率有关。位填充(Bit Stuffing):是为防止突发错误而设定的功能。10.1 CAN总线通用知识1110.1.3 CAN总线的有关基本概念 3.多主机、标识符、优先权、仲裁多主机(Multimaster):CAN总线是一个多主机(Multimaster)系统,总线空闲时,总线上任何节点都可以开始向总线上传送报文,但只有最高优先权报文的节点可获得总线访问权。标识符ID:CAN节点的唯一标识。在实际应用时,应该给CAN总线上的每个节点按照一定规

6、则分别一个唯一的ID。优先权(Priorities):在总线访问期间,报文的标识符ID定义了一个静态的报文优先权。仲裁(Arbitration):总线空闲时,总线上任何节点都可以开始发送报文,若同时有两个或两个以上节点开始发送,总线访问冲突运用逐位仲裁规则,借助于标识符ID解决。10.1 CAN总线通用知识1210.1.3 CAN总线的有关基本概念 4.远程数据请求、应答远程数据请求(Remote Data Request):当总线上某节点需要请求另一节点发送数据时,这种情况,在CAN总线协议术语中叫远程数据请求(Remote Data Request)。应答(Acknowledgment):

7、所有接收器对接收到的报文进行一致性(Consistency)检查。对于一致的报文,接收器给予应答;对于不一致的报文,接收器做出标志。10.1 CAN总线通用知识1310.1.3 CAN总线的有关基本概念 5. 故障界定、错误标定和恢复时间故障界定(Fault Confinement):CAN节点能够把永久故障和短暂的干扰区别开来,故障节点会被关闭。错误标定和恢复时间(Error Signaling and Recovery Time):任何检测到错误的节点会标志出已被损坏的报文。此报文会失效并自动重传。若不再出现错误,则从检测出错误到下一报文传送开始为止,恢复时间最多为31位的时间。10.1

8、CAN总线通用知识1410.1.3 CAN总线的有关基本概念 6. CAN的分层结构CAN结构物理层数据链路层逻辑链路控制子层介质访问控制子层10.1 CAN总线通用知识1510.1.4 帧结构CAN总线协议中有四种报文帧(Message Frame),它们分别是数据帧、远程帧、错误帧、过载帧。 1. 数据帧数据帧由7个不同的位场组成:帧起始(Start Of Frame symbol,SOF)、仲裁场、控制场、数据场、CRC场、应答场、帧结束。10.1 CAN总线通用知识1610.1.4 帧结构 2. 远程帧远程帧跟数据帧非常相似,不同之处在于二者的远程发送请求位(Remote Transm

9、ission Request.)不同。数据帧的RTR位为“0”,远程帧的RTR位为“1”。需要特别注意的一点是远程帧没有数据场。10.1 CAN总线通用知识1710.1.4 帧结构 3. 错误帧错误帧由CAN控制器的硬件进行处理,与用户编程无关。10.1 CAN总线通用知识1810.1.4 帧结构 4. 过载帧过载帧由CAN控制器的硬件进行处理,与用户编程无关。过载帧用于在先行和后续数据帧(或远程帧)之间提供一附加的延时。过载帧包括两个位场:过载标志和过载界定符。10.1 CAN总线通用知识1910.1.5 位时间所谓位时间,是指发送一位所需要的时间。实际工作过程的位时间与系统设定的位时间少有

10、偏差,把理想情况下位时间称为标称位时间(Nominal Bit Time)。一个标称位时间分为4个时间段:同步段(SYNC_SEG)、传播段(PROG_SEG)、相位段1(PHASE_SEG1)、相位段2(PHASE_SEG2)。10.1 CAN总线通用知识本章目录CAN总线通用知识10.1MSCAN模块简介10.2MSCAN模块的内存映射及寄存器定义10.3MSCAN模块双机通信测试实例10.4202022/8/28MSCAN模块的自环通信实例10.52110.2.1 MSCAN特性完全支持CAN协议 2.0A/B版5个具有FIFO存储机制的接收缓冲器3个具有 “本地优先级”的发送缓冲器灵活

11、的掩码标识符滤波器,可配置为2个32位或4个16位 或8个8位过滤掩码集成的可编程唤醒功能的低通滤波器支持自测操作的可编程闭环模式可编程仅作为CAN总线监听模式可编程总线脱离恢复功能10.2 MSCAN模块简介2210.2.1 MSCAN特性独立的信号中断功能适用于所有CAN接收机和发送机错误状态(警报、被动错误、掉线)可编程MSCAN时钟源,选择使用总线时钟或振荡器时钟内部计时器为接收和发送的报文提供时间戳三种低功耗模式:休眠模式、断电模式和MSCAN使能模式全局初始化配置寄存器10.2 MSCAN模块简介2310.2.2 报文存储结构、标识符验收过滤与时钟系统1.报文存储结构 MSCAN模

12、块使用了5个接收缓冲区和3个发送缓冲区。10.2 MSCAN模块简介2410.2.2 报文存储结构、标识符验收过滤与时钟系统2.标识符验收过滤MSCAN标识符验收寄存器(CANIDAC)用于标准帧标识符(ID10ID0)或扩展帧标识符(ID28ID0)的接收。在接收报文时,需要对哪些位进行验收比较,与当前的过滤器工作方式有关。MSCAN有4种过滤器工作方式:双标识符验收过滤器工作方式:每个验收过滤 器32位。四个标识符验收过滤器工作方式:每个标识符过滤器16位。八个标识符验收过滤器工作方式:每个标识符过滤器8位。关闭过滤器工作方式:报文不会被放入到接收前台缓冲区RxFG,RXF接收标志也不会被

13、置位。 10.2 MSCAN模块简介2510.2.2 报文存储结构、标识符验收过滤与时钟系统3.时钟系统 CANCTL1寄存器中的时钟源位(CLKSRC)决定内部CANCLK连接到晶体振荡器(振荡器时钟)输出还是连接到总线时钟。必须选择能满足CAN协议的振荡器精度要求(高达0.4%)的时钟源。此外,对于高CAN总线速率(1 Mbps)来说,要保证45%-55% 的时钟占空比。 10.2 MSCAN模块简介2610.2.3 CAN模块的主要运行模式、低功耗选项、中断与响应1. CAN模块的主要运行模式 正常模式 在正常模式下,CAN模块收发数据帧、远程帧以及错误帧时,CAN协议的所有功能全部是允

14、许状态。侦听模式 在可选的CAN总线侦听模式中,CAN节点能够接收有效数据帧和有效远程帧,但它只发送CAN总线上的“隐性”位。此外,它不能启动发送。MSCAN初始化模式 进入初始化模式时,用户要确定MSCAN不在工作态。在初始化模式中,正在进行的任何发送或接收行为都会立即中止,与CAN总线的同步丢失,并可能引起违反CAN 协议。 10.2 MSCAN模块简介2710.2.3 CAN模块的主要运行模式、低功耗选项、中断与响应2. CAN模块的低功耗选项MSCAN休眠模式 MSCAN进入休眠模式的时间取决于固定的同步时延及其当前状态。MSCAN断电模式 当CPU处于停止模式或CPU处于等待模式且设

15、置了CSWAI位时, MSCAN处于断电模式。禁止模式 在CANE=0时,复位后MSCAN进入禁止模式可编程唤醒功能 该功能可以用来防止由于CAN总线线路上的短脉冲而唤醒MSCAN。例如,嘈杂环境中的电磁干扰可以引起尖峰脉冲。 10.2 MSCAN模块简介2810.2.3 CAN模块的主要运行模式、低功耗选项、中断与响应3.中断 MSCAN支持四个中断矢量,任意一个矢量都可以单独屏蔽。 10.2 MSCAN模块简介中断源CCR掩码本地使能唤醒中断(WUPIF)I 位CANRIER (WUPIE)错误中断(CSCIF, OVRIF)I 位CANRIER(CSCIE, OVRIE)接收中断 (RX

16、F)I 位CANRIER(RXFIE)发送中断 (TXE2:0)I 位CANRIER (TXEIE2:0)本章目录CAN总线通用知识10.1MSCAN模块简介10.2MSCAN模块的内存映射及寄存器定义10.3MSCAN模块双机通信测试实例10.4292022/8/28MSCAN模块的自环通信实例10.53010.3.1 MSCAN模块内存映射寄存器的地址由基址和偏移量组成,基址在MCU中定义,而偏移量在模块内部定义。10.3 MSCAN模块的内存映射及寄存器定义3110.3.2 MSCAN模块寄存器控制寄存器MSCAN控制寄存器0(CANCTL0)MSCAN控制寄存器1(CANCTL1) 当

17、MSCAN处于初始化模式(INITRQ= 1,NITAK= 1)的特殊系统运行模式时,对该寄存器可以任意写入,除CANE在正常情况下只可写入一次例外。MSCAN总线定时寄存器0(CANBTR0) 可在任意时间对该寄存器读取;在INITRQ=1和INITAK=1时的初始化模式下的任意时间对该寄存器写入。10.3 MSCAN模块的内存映射及寄存器定义3210.3.2 MSCAN模块寄存器MSCAN总线定时寄存器1(CANBTR1) 可在任意时间对该寄存器读取;在INITRQ=1和INITAK=1时的初始化模式下的任意时间对该寄存器写入。MSCAN接收器标志寄存器(CANRFLG) 当处于初始化模式

18、(INITRQ=1,INITAK=1)时,CANRFLG寄存器保持复位状态。一旦退出初始化模式(INITRQ=0,INITAK=0),该寄存器即可重写。MSCAN 接收器中断使能寄存器(CANRIER) 当初始化模式处于有效状态时(INITRQ=1,INITAK=1),CANRIER寄存器保持复位状态。一旦退出初始化模式(INITRQ=0,INITAK=0),该寄存器是可读的。10.3 MSCAN模块的内存映射及寄存器定义3310.3.2 MSCAN模块寄存器MSCAN 发送器标志寄存器 (CANTFLG) 每个发送缓冲区空标志在CANTIER寄存器中都有相关的中断使能位。MSCAN 发送器中

19、断使能寄存器 (CANTIER) 该寄存器包含发送缓冲器空中断标志的中断使能位。MSCAN发送器报文中止请求寄存器 (CANTARQ) CANTARQ 寄存器中止队列报文的发送请求。MSCAN发送器报文中止确认寄存器(CANTAAK) 如果由CANTARQ寄存器中的适当位请求的话,CANTAAK寄存器表示成功中止报文发送队列的请求。10.3 MSCAN模块的内存映射及寄存器定义3410.3.2 MSCAN模块寄存器MSCAN 发送缓冲区选择寄存器(CANTBSEL) CANTBSEL允许实际发送报文缓冲区的选择,在CANTXFG寄存器空间访问。MSCAN 标识符验收控制寄存器(CANTBSEL

20、) CANIDAC寄存器用来标识符验收控制。MSCAN预留寄存器 该寄存器给厂家测试MSCAN模块预留的,在正常运行模式里是无效的MSCAN杂项寄存器(CANMISC) 该寄存器提供附加功能。10.3 MSCAN模块的内存映射及寄存器定义3510.3.2 MSCAN模块寄存器MSCAN接收错误计数器(CANRXERR) 该寄存器反映了MSCAN接收错误计数器的状态。MSCAN发送错误计数器(CANTXERR) 该寄存器反映了MSCAN发送错误计数器的状态。MSCAN标识符验收寄存器(CANIDAR0-7) 在扩展标识符中,所有这4个验收和屏蔽寄存器都会使用。在标准标识符中,只有前两个(CANI

21、DAR0/1,CANIDMR0/1)被使用。MSCAN标识符掩码寄存器(CANIDMR0-7)标识符掩码寄存器指定标识符验收寄存器的相应位与验收滤波器相关10.3 MSCAN模块的内存映射及寄存器定义3610.3.2 MSCAN模块寄存器报文存储机制 为了简化编程接口,接收和发送报文缓冲区采用统一的结构。每个缓冲区拥有16个字节,其中包括13个字节的数据结构。标识符寄存器(IDR03) 扩展帧格式的标识符由全部的32位组成。包括:ID28ID0、SRR、IDE和RTR。而标准帧格式的标识符由13位组成:ID10ID0、RTR和IDE数据段寄存器(DSR07) 此8个寄存器中包含实际发送或接收的

22、数据。10.3 MSCAN模块的内存映射及寄存器定义3710.3.2 MSCAN模块寄存器数据长度寄存器(DLR) 数据长度代码指示了数据场里的字节数量,取值范围08。发送缓冲区优先级寄存器(TBPR) 这个寄存器定义了相应发送缓冲区的局部优先级。较小的二进制数值具有较高的优先级。10.3 MSCAN模块的内存映射及寄存器定义本章目录CAN总线通用知识10.1MSCAN模块简介10.2MSCAN模块的内存映射及寄存器定义10.3MSCAN模块双机通信测试实例10.4382022/8/28MSCAN模块的自环通信实例10.53910.4 MSCAN模块双机通信测试实例10.4.1 测试模型 CA

23、N双机测试工程分两个主要部分,发送方Sender和接收方Receiver,Sender定期在CAN总线上发送广播帧,Receiver接收到总线上的广播帧后经过简单地解析,将接收到的帧信息通过串口发送到PC机,在PC机上运行的串口调试工具软件的显示界面中显示总线上帧的信息 4010.4 MSCAN模块双机通信测试实例10.4.2 编程要点初始化函数CANInit在初始化函数中需要完成的步骤有:(1)使能CAN模块(2)进入休眠模式(3)进入CAN模块初始化模式(4)置CAN模块过滤器与本地标识符ID(5)配置CAN总线时钟频率及时钟源(6)配置CAN模块工作方式(侦听,回环等)(7)配置CAN模

24、块中断(8)退出CAN模块初始化模式(9)等待CAN总线通信时钟同步 4110.4 MSCAN模块双机通信测试实例10.4.2 编程要点CAN发送帧函数CANSendFrame此函数完成通过CAN总线发送帧的功能,主要执行过程如下:(1)判断CAN总线上的同步状态,确保通信时总线是同步的。(2)查找并选中CAN模块中空闲的发送缓冲区以写入帧数据。(3)配置帧数据(标识符ID,数据段,数据长度,发送优先级)(4) 清TXEx标志位,通知CAN模块发送帧。 4210.4 MSCAN模块双机通信测试实例10.4.2 编程要点CAN发送帧函数CANSendFrame此函数完成通过CAN总线发送帧的功能

25、,主要执行过程如下:(1)判断CAN总线上的同步状态,确保通信时总线是同步的。(2)查找并选中CAN模块中空闲的发送缓冲区以写入帧数据。(3)配置帧数据(标识符ID,数据段,数据长度,发送优先级)(4) 清TXEx标志位,通知CAN模块发送帧。 4310.4 MSCAN模块双机通信测试实例10.4.2 编程要点 CAN接收帧函数CANReceiveFrame此函数完成从接收缓冲区中读取帧的功能,主要执行过程如下:(1)检测接收状态标志位RXF,若没有信息则退出。(2)判断帧类型(标准帧/扩展帧,数据帧/远程帧),以进行相应的处理。(3)处理标准数据帧,读取帧中数据段内容。(4)清RXF标志位,释放使用过的接收缓冲区封装帧结构函数CANFillFrame 在编写和使用CAN模块处理帧的程序时,用到的多是封装成帧数据结构类型CANFrame的变量。通过将帧信息(标识符ID,数据段,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论