Other Parts Discussed in Thread: AM2732, SYSCONFIG
器件型号: AM2732-Q1
Thread 中讨论的其他器件: AM2732、 SysConfig
您好:
我在 AM2732 器件的 R5-0 处理器上实现了 MSS_MIBSPIB 控制器 FreeRTOS 工程。
我的代码正常运行、没有任何错误。 主代码如下所示:
void spi_master(void *args)
{
int32_t transferOK;
Drivers_open();
Board_driversOpen();
transferOK = spi_enable_tx_interrupt(gMibspiHandle[SPI_TX]);
if((SystemP_SUCCESS != transferOK))
{
DebugP_assert(FALSE); /* MIBSPI transfer failed!! */
}
while(1){;}
}
int32_t spi_enable_tx_interrupt(MIBSPI_Handle handle){
static MIBSPI_Transaction spiTransaction;
static int32_t status;
uint16_t enable_tx_interrupt[5]= {0x1008, 0x44A1, 0x0000, 0x0000, 0x0001};
CacheP_wbInv((void*)enable_tx_interrupt, sizeof(enable_tx_interrupt), CacheP_TYPE_ALLD);
/* Initiate transfer */
spiTransaction.count = sizeof(enable_tx_interrupt);
spiTransaction.txBuf = (void *)enable_tx_interrupt;
spiTransaction.rxBuf = NULL;
spiTransaction.peripheralIndex = 0U;
spiTransaction.arg = NULL;
status = MIBSPI_transfer(handle, &spiTransaction);
return status;
}
syscfg 如下所示: 

当我尝试将完全相同的代码和 syscfg 选项传输到 FreeRTOS 系统工程到完全相同的 R5-0 处理器时、该工程无法正常运行。 确切地说、MIBSPI_transfe 函数失败。
在 MIBSPI_transfe 函数内部进行了大量调试后、我看到在 FreeRTOS 系统工程中似乎是 icount 选项 未启用 进行了改进 传感器 。 但这毫无意义、因为当 SPI 配置为控制器时没有 icount 选项、此外、我在这 2 个工程中手动输入 syscfg 中完全相同的配置。 与 icount 选项的这种差异导致驱动程序代码的不同部分运行、并最终导致故障。
为什么会发生这种情况?


