主题中讨论的其他器件:HALCOGEN
您好!
我们希望将多个传输组用于 Hercules MCU、但我们遇到了第二个 TG 的问题。
当前测试的方法是使用两个具有相同配置128字的 TG (TG0和 TG1)。
如果使用 TG0、则在传输128个字后传输会正确终止。
如果使用 TG1传输相同的数据、则发送的数据与预期的数据不相同(开头大部分为零)、并且作为从 MOSI 发送的零的无限循环继续、则代码保持循环检查传输是否完成。
while(!(mibspiIsTransferComplete(mibspiREG2, 1)));
在调试会话中、我注意到 了从 HalCoGen 生成的 mibspiSetData 函数中出现了意外行为。
void mibspiSetData(mibspiBASE_t *mibspi, uint32 group, uint16 * data)
{
/* USER CODE BEGIN (12) */
/* USER CODE END */
mibspiRAM_t *ram = mibspi == mibspiREG1 ? mibspiRAM1 :
(mibspi == mibspiREG2 ? mibspiRAM2 :
(mibspi == mibspiREG3 ? mibspiRAM3 :
(mibspi == mibspiREG4 ? mibspiRAM4 : mibspiRAM5)));
uint32 start = (mibspi->TGCTRL[group] >> 8U) & 0xFFU;
uint32 end = (group == 7U) ? (((mibspi->LTGPEND & 0x00007F00U) >> 8U) + 1U) : ((mibspi->TGCTRL[group+1U] >> 8U) & 0xFFU);
if (end == 0U) {end = 128U;}
while (start < end)
{
/*SAFETYMCUSW 45 D MR:21.1 <APPROVED> "Valid non NULL input parameters are only allowed in this driver" */
ram->tx[start].data = *data;
data++;
start++;
}
/* USER CODE BEGIN (13) */
/* USER CODE END */
}
TG1的"start"和"end"变量等于128和254、这意味着在本部分中"ram->TX[start].data =*数据; "它将数据写入一些未分配的空间。
TG0的"开始"和"结束"等于0和128。 它是 "ram->TX[start].data =*数据;"的预期范围
是否可能是 HalCoGen 发生器的一些错误、一些配置错误或解释错误?
谢谢你
Jiri Petrovsky