- 1、本文档共63页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
16.8 CAN控制器初始化
16.8.1 CAN模块的初始化
在使能CAN模块操作之前,需通过软件设置C0GMCS寄存器的CCP[3:0]位来决定CAN模块系统时钟。 使能CAN模块操作之后不要改变CAN模块系统时钟的设置。
通过设置C0GMCTRL寄存器的GOM位使能CAN模块。
关于CAN模块的初始化步骤,参见16.16 CAN控制器的操作。
16.8.2 报文缓存器的初始化
CAN模块使能后,报文缓存器包含不确定的值。 在CAN模块从初始化模式转换至一种操作模式之前,所有的报文缓存器,即使是应用中没有使用的报文缓存器也应进行最小值初始化。
- 将C0MCTRLm寄存器的RDY、TRQ和DN位清除为 0。
- 将C0MCONFm寄存器的MA0位清除为0。
备注 m = 0 至 15
16.8.3 报文缓存器的重新定义
重新定义报文缓存器意味着在接收或发送报文时改变报文缓存器的ID和控制信息,而不影响其它的发送/接收操作。
(1) 在初始化模式下重新定义报文缓存器
将CAN模块置于初始化模式,然后在初始化模式中改变报文缓存器的ID和控制信息。 改变了ID和控制信息后,将CAN模块设为操作模式。
(2) 接收期间重新定义报文缓存器
如图16-40中所示进行重新定义。
(3) 发送期间重新定义报文缓存器
为了重写已经设置了发送请求的发送报文缓存器的内容,执行发送中止处理(参见16.10.4 (1) 利用自动块传输(ABT)的正常操作模式之外的发送中止处理 和16.10.4 (2) 利用自动块传输(ABT)的正常操作模式下除了ABT发送之外的发送中止处理。 确定已经中止或完成了发送,然后重新定义报文缓存器。 重新定义发送报文缓存器之后,用如下所述的步骤设置发送请求。 然而,当向一个未中止当前发送就重新定义的报文缓存器设置发送请求时,不需要1位等待时间。
图 16-27. 报文缓存器重新定义之后发送请求(TRQ)的设置
注意事项 1. 接收报文时,按照ID和每一个接收缓存器的屏蔽设置进行接收过滤。 如果不遵守图16-40中的步骤,则已重新定义之后的报文缓存器的内容可能会同接收结果(接收过滤后的结果)相矛盾。 如果发生这种情况,则检查报文缓存器重新定义后首先接收并存储的ID和IDE是否为报文缓存器已重新定义之后的ID和IDE。 如果重新定义之后没有存储ID和IDE,则再次重新定义报文缓存器。
2. 发送报文时,按照由设定了发送请求的各发送报文缓存器设置的ID,IDE和RTR位检查发送优先级。 选择具有最高优先级的发送报文缓存器进行发送。 如果不遵守图 16-41中的步骤,那么重新定义之后可能会发送一个不具有最高优先级ID的报文。
16.8.4 从初始化模式转换到操作模式
CAN模块可转换到下列操作模式。
- 正常操作模式
- 使用ABT的正常操作模式
- 只收模式
- 单次模式
- 自检模式
图 16-28. 到操作模式的转换
初始化模式至一种操作模式的转换由C0CTRL寄存器中的位串OPMODE[2:0]控制。
将某一操作模式变为另一操作模式时,需要中间切换为初始化模式。 不要直接将操作模式转换为另一操作模式,否则操作得不到保证。
当CAN总线不在帧间间隔(即:正在进行帧接收或帧发送)时,从操作模式到初始化模式的请求被挂起待决,且CAN模块在帧间间隔的第1位进入初始化模式(OPMODE[2:0]的值变为00H)。 产生将模式变为初始化模式的请求后,在OPMODE[2:0]位的值变为000B后读取它们的值以确认模块已进入初始化模式(参见图 16-37)。
16.8.5 复位CAN模块的错误计数器C0ERC
当重新初始化或从掉线状态强制恢复时,如果需要复位CAN错误计数器C0ERC和CAN模块信息寄存器C0INFO,则应在初始化模式下将C0CTRL寄存器的CCERC位设为1。 当该位设为1时,CAN模块错误计数器C0ERC和CAN模块信息寄存器C0INFO被清除为它们的默认值。
16.9 报文接收
16.9.1 报文接收
在所有操作模式下分析全部的报文缓存区域,以定位适于存储新接收的报文的缓存器。 测评中包含的所有报文缓存器都满足以下条件(RX-查找处理)。
- 用作报文缓存器
(C0MCONFm寄存器的MA0位设为1B。)
- 设置为接收报文缓存器
(C0MCONFm的MT[2:0]位设为001B、010B、011B、100B或101B。)
- 准备接收
(C0MCTRLm寄存器的RDY位设为1。)
当CAN模块的两个或更多报文缓存器接收同一个报文时,该报文按照下面说明的优先级存储
文档评论(0)