“线程:C2000WARE”中讨论的其它部件
您好,
我 正在尝试使用'CAN.c'中的“CANMessageGet”函数来了解接收邮件的功能,该函数使用 IF2寄存器来读取邮箱邮件 RAM。
我知道 CPU 将写入 IF2CMD 寄存器。
问题1. 我们是否应该根据 CCS 寄存器窗口中邮箱的消息 RAM 更改 IF2ARB 和 IF2CTL 寄存器(如果未使用验收过滤)?
问题2. 如果是,那么这些寄存器是否会根据 该邮箱的消息 RAM 来反映这些值?
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.
您好,
我 正在尝试使用'CAN.c'中的“CANMessageGet”函数来了解接收邮件的功能,该函数使用 IF2寄存器来读取邮箱邮件 RAM。
我知道 CPU 将写入 IF2CMD 寄存器。
问题1. 我们是否应该根据 CCS 寄存器窗口中邮箱的消息 RAM 更改 IF2ARB 和 IF2CTL 寄存器(如果未使用验收过滤)?
问题2. 如果是,那么这些寄存器是否会根据 该邮箱的消息 RAM 来反映这些值?
很抱歉我不理解您的问题。 您正在尝试读取邮箱消息 RAM。 因此,该函数读取 IF2ARB 和 IF2CTL 寄存器以分别收集 ARBID (MSGID)和 DLC 值。 对于接收函数,您不需要更改任何寄存器,但 IF2CMD 寄存器除外,在该寄存器中,您可以定义要读取的邮箱和字段。
[引用 userid="439648" url="~/support/icros/c2000微控制器-group/c2000 /f/c2000微控制器-forume/1079369/tms320f28379d-hero-interface-regner-if-ge-gette-update-in-messageget-functions]Q2。 如果是,那么这些寄存器是否会根据 该邮箱的消息 RAM 来反映这些值?如果 IF2CMD 寄存器配置正确,其他寄存器将正确反映邮箱 RAM 的内容。
感谢您澄清我的理解。
我面临的情况是,IF2CMD 寄存器具有正确的信息,即邮箱号。
但是,IF2ARB 和 IF2DATA 寄存器分别填充了实际不适用于该邮箱的 ID 和数据。也就是说,邮箱消息 RAM 中未出现的 ID 和数据与 IF2ARB 和 IF2DATA 寄存器中的 ID 和数据不匹配。
请注意,邮箱未启用接受过滤。
下面是我如何配置邮箱的屏幕截图:
下面是我 如何读取两个邮箱的简化逻辑。
如果您可以参加电话/会议,那么我们可以讨论一下这一点,并看看这种情况吗?
谢谢,
Dhanashree
您的意思是说“但 IF2ARB 和 IF2DATA 寄存器分别填充 ID 和数据,而这些 ID 和数据不是接收邮箱的实际内容。”
[引用 userid="439648" url="~ë/support/ican/c2000微控制器-组/CC2000 /f/c2000-微控制器-论坛/1079369/tms320f28379d-接口-寄存器- if-gette-updated -消息交换功能/3998602#3998602数据不在信息库中,且信息库中不与 IFAT[数据 ID]信息不匹配,且 IF2IFATA/IFAT]信息不在信息库中。您的意思是说“邮箱消息 RAM 中不存在的 ID 和数据与 IF2ARB 和 IF2DATA 寄存器中存在的 ID 和数据不匹配。”
接待比较简单。 初始配置后(即 邮箱的 msgid,Mask 等)已完成,无需再次“配置”邮箱中的任何内容来读取内容。 假设已正确接收帧,则需要完成的所有操作都是通过写入 IFxCMD 寄存器来启动从邮箱 RAM 到 IFX 寄存器的传输。
请注意,从 不需要配置接收邮箱的 DLC 值,因为该字段将在接收时自动更新(基于接收的字节数)。 接收邮箱的 DLC 字段是“不在乎”