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.

[参考译文] TMS570LS1227:Mibspi 模块动态修改数据传输长度

Guru**** 2386600 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1166906/tms570ls1227-mibspi-module-dynamically-modifies-the-data-transmit-length

器件型号:TMS570LS1227

大家好、

以下是客户提出的问题、可能需要您的帮助:

在 hal 代码生成器软件中、用户可设定 Mibspi 数据传输的长度、即组的长度。 但是、如果客户希望动态修改使用期间发送的每个数据的长度、该怎么办?

将长度设置为16并在发送数据时修改 TMS570_mibspiSetU8Data 函数。 客户希望能够在调用此函数时发送4字节数据。 但是、示波器捕获的波形发现发送的数据始终为16字节。

void tms570_mibspiSetU8Data(mibspiBASE_t *mibspi, uint32 group, uint8 * data,uint32_t u32DataLen)
{
mibspiRAM_t *ram = (mibspi == mibspiREG1) ? mibspiRAM1 : ((mibspi == mibspiREG3) ? mibspiRAM3 : 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;
}
if(end > start + u32DataLen)
{
end = start + u32DataLen;
}
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;
/*SAFETYMCUSW 567 S MR:17.1,17.4 <APPROVED> "Pointer increment needed" */
data++;
start++;
}
}

您可以帮助检查此案例吗? 谢谢。

此致、

樱桃

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Cherry、

    客户函数 TMS570_mibspiSetU8Data()只是将数据写入 MibSPI RAM 中的缓冲区,TG 大小不变。

    1. 应更新 TGxCTRL 寄存器的 PSTART

    2. TXRAM 的 CSHOLD 也应更新