主题中讨论的其他器件: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.
大家好!
我不明白初始化 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。