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.
尊敬的支持部门:
我在示例中发现 Waiting MEM_init_done!= 0是 MCAN 配置序列中最先执行的操作之一。
但我在 TRM 中找不到 MsgRam 初始化是如何启动的以及 MCAN 软复位(链接到 MCANSS_STAT.RESET)是如何启动的。
谢谢
尊敬的 Davide:
针对 MCAN 模块的初始化和复位、这些示例按照表29-4中概述的步骤来配置 MCAN。 与 DCAN 一样、消息 RAM 不会被初始化、而是被配置为发送/接收/过滤数据长度。。 消息 RAM 配置是示例中使用函数 mlan_msgRAMConfig ()的 MCANConfig()函数的一部分。 您能解释一下消息 RAM 初始化是什么意思吗? 任何 C2000外设(如 MCAN)的软复位都通过 SOFTPRESx 寄存器完成。 这在用户明确希望重置模块的情况下使用、例如当它停止响应时。 上电时、包括 MCAN 在内的所有模块被初始化、并且无需在模块(SOFTPRES10.MCAN)上执行软复位、因此表29-4中概述的初始化例程就足够了。
此致、
约瑟
Joseph、您好!
"您能解释一下消息 RAM 初始化是什么意思吗?"
在 MCAN 示例中、我看到在将外设设置为初始化模式之前执行以下代码
//
//等待内存初始化发生。
//
while (false == MCAN_isMemInitDone (MCANA_DRIVER_BASE))
{
}
查看驱动器、我看到了说明
/**
*\简短 此函数检查内存初始化是否完成
* MCAN 模块。
*
*\param baseAddr MCAN 寄存器的基地址。
*
*\retval 状态 在内存初始化完成时返回 true。
* 否则返回 false。
*/
uint32_t mcu_isMemInitDone (uint32_t baseAddr);
因此,我的问题是:
此处检查了哪种 MCAN 存储器初始化?
何时进行此初始化以及如何触发它?
是用户启动的吗?
Joseph、您好!
你那有新消息吗?
也许我的问题可以总结为:
当 MCAN 存储器初始化发生时? 仅在唤醒/复位时?
是 MCAN 模块的自动程序,还是由操作某个寄存器的用户启动?
尊敬的 Davide:
初始化 MCAN 模块不会初始化消息 RAM。 不过、通过设置和清零 SOFTPRES10.MCAN 来执行软复位会初始化消息 RAM。 我将与我们的设计团队进行核实、以了解这种行为是否正常、或者是否有其他方法可以初始化 MCAN 消息 RAM。
此致、
约瑟
Joseph、您好!
你在上一次答复中说过
"通过设置和清除 SOFTPRES10.MCAN 来执行软复位会初始化消息 RAM"
新问题是:
在 TRM 中、SOFTPRES10.MCANA 字段定义为"只读"。 该位被置位和复位怎么可能发生呢?
关于我的最初问题、关于 MEM_INIT_DONE、我可以理解关于在配置 MCAN 模块之前等待 MEM_INIT_DONE!= 0的建议、但我仍然不了解将 MEM_INIT_DONE 值从0更改为1的机制。
是否为 MCAN 模块的自动程序?
尊敬的 Davide:
SOFTPRES10.MCANA 位的好去处。 应为 R/W 源文件已更新、这应该会反映在下一个 TRM 出版物中。 我正在等待我们的设计团队对启动消息 RAM 初始化序列的其他内容的回复。 请在几天内回复。
谢谢。
约瑟
尊敬的 Davide:
在上电复位(POR)或系统复位(CPU.SYSRSN)时、将发生自动存储器初始化。 MEM_INIT_DONE 的轮询目的是确保消息 RAM 在初始化 MCAN 模块之前已完成。
此致、
约瑟