- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
stm32的can現场总线实验
STM32的can现场总线实验心得
最近在搞stm32实验板的can现场总线实验,之前只是搞过STC51的串口通信,相比之下,发觉can总线都挺复杂的。开始时,知道自己是新手,只知道can总线跟串行通信,485通信,I2C通信一样都是用来传输数据通信的,对其工作原理一窍不通,还是从基础开始看书看资料,先了解它的基本原理吧。
原来can总线有以下特点:
主要特点
?? 支持CAN协议2.0A和2.0B主动模式
?? 波特率最高可达1兆位/秒
?? 支持时间触发通信功能
发送
?? 3个发送邮箱
?? 发送报文的优先级特性可软件配置
?? 记录发送SOF时刻的时间戳
接收
?? 3级深度的2个接收FIFO
?? 14个位宽可变的过滤器组-由整个CAN共享
?? 标识符列表
?? FIFO溢出处理方式可配置
?? 记录接收SOF时刻的时间戳
可支持时间触发通信模式
?? 禁止自动重传模式
?? 16位自由运行定时器
?? 定时器分辨率可配置
?? 可在最后2个数据字节发送时间戳
管理
?? 中断可屏蔽
?? 邮箱占用单独1块地址空间,便于提高软件效率
看完这些特点后,疑问一个一个地出现,
什么是时间触发功能?
发送邮箱是什么来的?
报文是什么来的?
什么叫时间戳?
什么叫接收FIFO?
什么叫过滤器?
好了,带着疑问往下看,看完一遍后,
报文:
报文包含了将要发送的完整的数据信息
共有3个发送邮箱供软件来发送报文。发送调度器根据优先级决定哪个邮箱的报文先被发送。
接收过滤器:
共有14个位宽可变/可配置的标识符过滤器组,软件通过对它们编程,从而在引脚收到的报文中选择它需要的报文,而把其它报文丢弃掉。
接收FIFO
共有2个接收FIFO,每个FIFO都可以存放3个完整的报文。它们完全由硬件来管理
工作模式
bxCAN有3个主要的工作模式:初始化、正常和睡眠模式。
初始化模式
*软件通过对CAN_MCR寄存器的INRQ位置1,来请求bxCAN进入初始化模式,然后等待硬件对CAN_MSR寄存器的INAK位置1来进行确认
*软件通过对CAN_MCR寄存器的INRQ位清0,来请求bxCAN退出初始化模式,当硬件对
CAN_MSR寄存器的INAK位清0就确认了初始化模式的退出。
*当bxCAN处于初始化模式时,报文的接收和发送都被禁止,并且CANTX引脚输出隐性位(高电平)
正常模式
在初始化完成后,软件应该让硬件进入正常模式,以便正常接收和发送报文。软件可以通过
对CAN_MCR寄存器的INRQ位清0,来请求从初始化模式进入正常模式,然后要等待硬件对
CAN_MSR寄存器的INAK位置1的确认。在跟CAN总线取得同步,即在CANRX引脚上监测到11个连续的隐性位(等效于总线空闲)后,bxCAN才能正常接收和发送报文。
过滤器初值的设置不需要在初始化模式下进行,但必须在它处在非激活状态下完成(相应的FACT位为0)。而过滤器的位宽和模式的设置,则必须在初始化模式下,进入正常模式前完成。
睡眠模式(低功耗)
*软件通过对CAN_MCR寄存器的SLEEP位置1,来请求进入这一模式。在该模式下,bxCAN的时钟停止了,但软件仍然可以访问邮箱寄存器。
*当bxCAN处于睡眠模式,软件想通过对CAN_MCR寄存器的INRQ位置1,来进入初始化式,
那么软件必须同时对SLEEP位清0才行
*有2种方式可以唤醒(退出睡眠模式)bxCAN:通过软件对SLEEP位清0,或硬件检测CAN
总线的活动。
工作流程
那么究竟can是怎样发送报文的呢?
发送报文的流程为:
应用程序选择1个空发送邮箱;设置标识符,数据长度和待发送数据;
然后对CAN_TIxR寄存器的TXRQ位置1,来请求发送。TXRQ位置1后,邮箱就不再是空邮箱;而一旦邮箱不再为空,软件对邮箱寄存器就不再有写的权限。TXRQ位置1后,邮箱马上进入挂号状态,并等待成为最高优先级的邮箱,参见发送优先级。一旦邮箱成为最高优先级的邮箱,其状态就变为预定发送状态。一旦CAN总线进入空闲状态,预定发送邮箱中的报文就马上被发送(进入发送状态)。一旦邮箱中的报文被成功发送后,它马上变为空邮箱;硬件相应地对CAN_TSR寄存器的RQCP和TXOK位置1,来表明一次成功发送。
如果发送失败,由于仲裁引起的就对CAN_TSR寄存器的ALST位置1,由于发送错误引起的
就对TERR位置1。
原来发送的优先级可以由标识符和发送请求次序决定:
由标识符决定
当有超过1个发送邮箱在挂号时,发送顺序由邮箱中报文的标识符决定。根据CAN协议,标
识符数值最低的报文具有最高的优先级。如果标识符的值相等,那么邮箱号小的报文先被发
送。
由发送请求次序
您可能关注的文档
- SQLServer2000數据库应用教程-课后习题答案.doc
- sqlserver2005在IBMsystemx3650M3服務器上(win2003server或win2008系统)安装不成功的处理方法.doc
- SQLSERVER2005的安裝和设置.doc
- SQLServer2008安裝教程图解(佳佳作品).doc
- SQLserver實用教程第三版试题有及答案.doc
- SQLSERVER2008安裝的时候提示“该实例名称已在使用”解决办法.doc
- SQLserver數据库期末考试试题及答案.doc
- Sqlserver數据库课程设计图书馆管理系统.doc
- sqlserver組无项目的解决方法.doc
- SQL_Server_2000的安裝与完全卸载.doc
文档评论(0)