我使用来自 HalGen 的 MibSPI 框架、在这里我使用传输组0和1。 这些组使用16位数据格式设置为10上的长度。 这是我需要的最大长度。 但是传输可以是1到10个16位字、因此我需要动态更改传输长度。 为此、我在 MibSPI 传输命令之前编写了以下函数:
typedef 枚举{
QSPI_TRANSFS_OUTPUT 组、
QSPI_TRANSFS_INPUT_GROUP、
QSPI_TRANSFS_LAST_GROUP
}QSPI_TRANSFS_GROUK_ENUM;
#define QSPI_PORT MibspiREG5
void QSPI_TransferSetup (uint16_t u16Size、QSPI_transfer_Group_enum TransferGroup)
{
uint8_t loop;
uint32_t 缓冲区大小总计;
transferGroupSize[TransferGroup]=(uint32_t) u16Size;
QSPI_PORT->TGCTRL[QSPI_TRANSFER_INPUT_Group]&= 0xFFFFFF0000;
QSPI_PORT->TGCTRL[QSPI_TRANSFER_INPUT_Group]|=(transferGroupSize[QSPI_TRANSFER_OUTPUT_Group]<< 8);
BufferSizeTotal = transferGroupSize[QSPI_transfer_output_Group]+ transferGroupSize[QSPI_transfer_input_Group];
for (LOOP = QSPI_TRANSFS_LAST_GROUP;LOOP < 8;LOOP++)
{
QSPI_PORT->TGCTRL[LOOP]&= 0xFFFFFF0000;
QSPI_PORT->TGCTRL[LOOP]|=(BufferSizeTotal << 8);
}
QSPI_PORT->TGCTRL[8U]=缓冲区大小总计<< 8U;
QSPI_PORT->LTGPEND =(QSPI_PORT->LTGPEND & 0xFFFF00FFU)|((BufferSizeTotal - 1U)<< 8U);
}
数组传输组大小只是每个传输组新大小的本地分段。
但这不奏效。 观察示波器上的信号时、传输组大小始终为10。
我缺少什么?
但它没有帮助。
Andy

