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配置如下:
串口输出的现象如下