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,
浙公网安备 33010602011771号