你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32的CAN时间戳寄存器 (CAN_RDTxR)使用方法

[复制链接]
huangyanga 发布时间:2019-3-15 16:08
本帖最后由 huangyanga 于 2019-3-15 16:12 编辑

这个帖子https://www.stmcu.org.cn/module/forum/forum.php?mod=viewthread&tid=616508的问题,没有人回答,我后来自己大概搞清楚了:



原来所谓时间触发模式,就是开启CAN硬件中的一个16位计数器,这计数器在每个 CAN 位时间递增,用来形成时间戳,这样接收到的每一帧都会有一个16字节的计数器值,存在CAN_RDTxR寄存器里面。而这里的位时间 ,就是CAN发送每位数据的时间,也就是波特率。比如CAN配置的波特率1Mbps,那么位时间就是1us,CAN计数器的时间元就是1us。所以时间触发模式并不是字面意思,用时间触发CAN收发,而是对时间进行计数、记录。


而开启这个模式的方式是,将 CAN_MCR 寄存器的 NART 位置 1。

按照这个配置,目前测试发现,CAN启动后,该计数器就开始启动,到达65535就归零。实际如果跑1M波特率,65毫秒计数就复位了,这个时间戳能用的时间不长。另外启动一个TIM定时器,与CAN同步启动,记录时间戳的复位圈数,这样同时使用或许有实际应用效果。


QQ图片20190315154625.png
QQ图片20190315161021.png
收藏 评论8 发布时间:2019-3-15 16:08

举报

8个回答
any012 回答时间:2019-3-15 17:08:55
那么,请教,这个时间戳功能,应用在什么情况下?
watershade 回答时间:2019-3-16 10:33:24
TTC是CAN实时通信的一个重要功能,但遗憾的是STM32的之前的硬件的事件触发都有问题。你可以看一下相关系列的Errata sheet。以F072x8为例(其实之前的很多系列都是,除了最新的支持CAN-FD的除外) TTC.jpg

好消息是看介绍H7(如果记错了就是MP1或G0)的一些产品支持CAN-FD和一路TTC功能。
huangyanga 回答时间:2019-3-16 11:02:59
any012 发表于 2019-3-15 17:08
那么,请教,这个时间戳功能,应用在什么情况下?

有些应用需要知道每帧收发时的准确时间,比如我现在做一个CAN日志记录器,时间戳就很有用,比RTC要准,毕竟是CAN硬件层记录下来的时间。
huangyanga 回答时间:2019-3-16 11:10:38
watershade 发表于 2019-3-16 10:33
TTC是CAN实时通信的一个重要功能,但遗憾的是STM32的之前的硬件的事件触发都有问题。你可以看一下相关系列 ...

哦,还没用过H7TTC实时通讯听起来很厉害,大神介绍一下?
lscqu 回答时间:2019-7-5 09:13:52
TTC的确很少用,不知道新款上面用起来怎么样
Redbull! 回答时间:2019-7-29 14:18:59
学习一下
generalcircuits 回答时间:2019-7-29 16:39:04
还是没弄明白
can1init 回答时间:2020-4-9 16:18:12
作者您好,stm32有函数读取时间戳么?还是直接对寄存器读取?初学者,在帮助文档里没有找到。谢谢啊

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版