1.如果CANFestival想要周期性发送sync报文,要求1秒发送1次,如下应该怎么操作?
1.配置字典
CANopen知识、sync的索引
所有操作、配置、参数都是从字典中查找的。
首先根据CANopen协议Cia301,找到索引0x1005就是配置sync报文的。
根据协议如下:
index: 0x1005
index: 0x1006
对象字典代码如下
对象字典代码中的0xC350其实是计数,上面说0xC350单位是1微妙,这主要是靠时钟配置的。主要在TimeDispatch()函数中有个参数TIMEVAL_MAX
如果时钟是8MHZ,那么1秒时8000000次,1次是1/8000000秒,1妙是1000000微妙,所以1微妙需要 8000000 * 1/1000000 次。
TIMEVAL_MAX 是软件定时器的最大时钟。
index:0x1007
同步窗口好像可以不用配置,也可以配置成和发送周期同样大小的值。
如果窗口改为周期的一般,就意味着周期内前半部分是有效的,后半部分是无效的,所以一般是不用动的。
2.配置时钟
选择系统时钟、比如是84M,
分频操作,进行84分频。
定时器中断会进入TimeDispatch
can中断会进入canDispatch()函数,这个函数会对报文进行解析,解析是PDO还是SDO,
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】