Other Parts Discussed in Thread: SYSCONFIG
你好,工程师
我在将AWR2944的SPI按照例程mibspi_loopback_dma配置后发送数据时出现了以下错误
1.通过打印loopback的rxbuf的数据,发现AWR2944在刚上电或者reset复位后SPI发出来的第一帧数据全为0。在之后每帧用SPI传输的数据不全为0但也存在错误。
2.在1中接收到的非全0数据存在以下问题,测试时将txbuf中的数据全部赋值为0xAA,在使用SPI发送时会出现有一段正确发送数据,有一段数据全为0的现象,有时也会出现一段0xa5;
3.以上现象在不使用DMA的情况下不会出现,但是在不使用DMA的情况下只能发送128Bytes的倍数的字节数。(ig. 发送的字节数为200,只会发送前128字节,后面的72字节将被舍弃)
以下为测试时的代码:
uint8_t spi_txtestarray[512] = {0};
uint32_t test_cnt = 0;
while(test_cnt<512)
{
spi_txtestarray[test_cnt]=0xAA; //test data
test_cnt++;
}
MIBSPI_LoopBackType loopback;
loopback = MIBSPI_LOOPBK_DIGITAL;
MIBSPI_enableLoopback(gMibspiHandle[0],loopback);
int32_t transferOK=0;
MIBSPI_Transaction mibtrans;
memset(&mibtrans, 0, sizeof(mibtrans));
mibtrans.count = 512;
mibtrans.txBuf = (void *)(spi_txtestarray);
mibtrans.rxBuf = (void*)(spi_rxarray);
mibtrans.slaveIndex = 0;
mibtrans.arg = NULL;
transferOK=MIBSPI_transfer(gMibspiHandle[0],&mibtrans);
CLI_write("STATUS = %d\r\n",mibtrans.status);
test_cnt =0;
while(test_cnt<128)
{
CLI_write("spi_txtestarray[%d] = %x ",test_cnt,spi_txtestarray[test_cnt]);
CLI_write("spi_rxarray[%d]=%x ",test_cnt,spi_rxarray[test_cnt]);
if(spi_txtestarray[test_cnt]!=spi_rxarray[test_cnt])
{
CLI_write("ERROR READ\r\n");
}
else
{
CLI_write("\r\n");
}
test_cnt++;
}
MIBSPI通过sysconfig配置如下:

串口输出的现象如下

