Other Parts Discussed in Thread: HALCOGEN
主题中讨论的其他器件:HALCOGEN
大家好!
我不明白初始化 DCAN 模块上的设计策略。 我想 halcogen 自动分配的消息框 、具体取决于是奇数还是对 IF1和 IF2寄存器的偶数。
我是否只能将 IF1或 IF2寄存器用于比较? 。 如果我能做到这一点、为什么 halcogen 会生成如下代码? 实际上对我来说没有意义。
此致、
古坎

This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
Other Parts Discussed in Thread: HALCOGEN
大家好!
我不明白初始化 DCAN 模块上的设计策略。 我想 halcogen 自动分配的消息框 、具体取决于是奇数还是对 IF1和 IF2寄存器的偶数。
我是否只能将 IF1或 IF2寄存器用于比较? 。 如果我能做到这一点、为什么 halcogen 会生成如下代码? 实际上对我来说没有意义。
此致、
古坎

尊敬的 Furkan:
[QUOTE USERID="585479" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1315972/tms570ls3137-dcan-module-message-box-assigments-depending-on-parity 能否将 IF1或 IF2寄存器用于计算? 。 如果我能做到这一点、为什么 halcogen 会生成如下代码? 实际上对我来说没有意义。是的、如果您需要、则只能使用 IF1或 IF2。
HALCoGen 代码将按以下方式生成:所有奇数消息都将使用 IF1、所有偶数消息都将使用 IF2。 这只是为了加速初始化。
我的意思是、如果您按顺序选择所有消息编号、例如、这里我选择的是前4条消息。

我的初始化代码的生成方式如下:

如果您验证上述代码、在使用任何 IF 寄存器之前、我们是通过轮询 BUSY 位来验证相应的 IF 寄存器集是否可自由使用。

想象一下、如果您反复使用相同的 IF 寄存器、则需要一些时间才能在 IF 寄存器中传输控制数据到消息 RAM 中的消息对象位置。
因此要加快初始化过程、它们仅对奇数使用 IF1、对偶数使用 IF2。
请记住,只有当您仅按顺序选择留言号码时,此功能才起作用,但如果您再次只选择偶数或仅选择奇数留言号码,此过程会有点慢。
例如、我选择了仅奇数:

您可以看到我生成的代码:

现在仅使用 IF1、因此我的建议是按顺序尝试选择消息编号。
--
谢谢。此致、
Jagadish。
尊敬的 Furkan:
可否将0-32消息框分配给 IF1寄存器,其余消息框分配给 IF2寄存器? 如果使用此方法,是否可以加快进程?
您要在这里执行的操作是使用 HALCoGen 无法实现的(因为正如我们讨论过的、HALCoGen 将生成代码、用于将所有奇数消息框用于 IF1、偶数消息框用于 IF2)、但如果您手动编写代码、则是可行的。
此处您应该注意一件事、即即使您使用的是 IF1的前32个消息框、然后是 IF2的前32个消息框、但在执行点、您应该交替放置代码。 我的意思是
使用 IF1的消息框1初始化
消息框33使用 IF2进行初始化
使用 IF1的消息框2初始化
消息框-34 使用 IF2进行初始化
使用 IF1进行消息框3初始化
消息框-35使用 IF2进行初始化
。
。
。
。
消息框32 使用 IF1进行初始化
消息框- 使用 IF2进行64初始化
因为、如果您采用这种执行流程、那么如果 CPU 将 数据分配给 IF2、那么在后台 CAN 模块将使用 IF1控制数据并将其移动到 RAM 中的相应消息对象、反之亦然。
--
谢谢。此致、
Jagadish。