Other Parts Discussed in Thread: SYSCONFIG,
你好,工程师
我使用SysConfig生成MIBSPI的相关代码,配置如下图所示
当使能DMA时,awr2944无法正常通过SPI发送数据,具体表现为在调用mibspi_transfer后没有响应,我把Transfer Timeout改为0xFFFF后,任然不能返回,即无法查看status。请问在使用Sysconfig配置了DMA后,还需要配置什么才能正常使用SPI?
当不使能DMA时,可以通过SPI发送数据,我测试SPI的代码如下所示
int32_t transferOK; MIBSPI_Transaction mibtrans; memset(&mibtrans, 0, sizeof(mibtrans)); mibtrans.count = 10000; mibtrans.txBuf = (void *)result->my_2DFFTBUF; mibtrans.rxBuf = NULL; mibtrans.slaveIndex = 0; mibtrans.arg = NULL; transferOK=MIBSPI_transfer(gMibspiHandle[0],&mibtrans); CLI_write("STATUS = %d\r\n",mibtrans.status); if(transferOK!=0||mibtrans.status!=MIBSPI_TRANSFER_COMPLETED) { CLI_write("MIBSPI TRANSFER FAILED\r\n"); }
但是也存在以下问题
1.我将测试发送的字节长度定为了10000,但实际上由示波器看到的波形是分多次进行发送的,每次128字节,在函数MIBSPI_dataTransfer中看到“ramLen = ptrMibspiDriver->params.u.masterParams.slaveProf[group].ramBufLen”,而这个ramBufLen的赋值为128,请问该值可以更改吗?
2.在1.情况下,每两组128字节的数据发送之间会有100us的延时,请问这段延时是必须的吗?可以去掉吗?
3.在函数MIBSPI_validateTransferParams中有比较要使用SPI传输的字节数和mibspiRamSize,如果大于mibspiRamSize返回failed,该值被初始化为128,为了传输10000字节,我将其改为了10000,请问该值是否每次都要更改为要传输的字节数?
谢谢