您好!
我正在尝试执行 MIBSPI DMA 回送示例。 我在传输时未成功接收到数据。
我检查了 e2e 论坛并尝试解决问题。 没有成功。
我将项目附加在这里。 请告诉我、这里发生了什么问题。
e2e.ti.com/.../1104.MIBSPI_5F00_DMA.zip
Chandra
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我正在尝试执行 MIBSPI DMA 回送示例。 我在传输时未成功接收到数据。
我检查了 e2e 论坛并尝试解决问题。 没有成功。
我将项目附加在这里。 请告诉我、这里发生了什么问题。
e2e.ti.com/.../1104.MIBSPI_5F00_DMA.zip
Chandra
您好 Chandra、
请尝试以下函数来配置 DMACTL 寄存器。 RXDMA_MAP 应位于第20位而不是第4位。
void mibspiDmaConfig (mibspi_t * mibspi、uint32通道、uint32 txchannel、uint32 rxchannel)
{
uint32 bufid;
//uint32 bufid =(通道+ 1)* E_COUNT - 1;
if (mibspi =mibspiREG1){
bufid = tgPSTART1[通道]+ E_COUNT - 1;
}否则{
bufid = tgPSTART3[通道]+ E_COUNT - 1;
}
/*设置发送和接收通道*/
mibspi->DMACTRL[通道]|=(rxchannel << 20)|(txchannel << 16);
如果(F_COUNT > 1){
mibspi->TGCTRL[通道]&= 0xBFFFFFFF;//禁用 OneShot
}否则{
mibspi->TGCTRL[通道]|= 0x40000000;//启用 OneShot
}
/*启用发送和接收 DMA */
mibspi->DMACTRL[通道]|= 0x8000C000;
/*设置 DMA 传输的初始计数和用于 DMA 传输的缓冲区*/
mibspi->DMACTRL[通道]|=(bufid=24);
/*启用大计数传输*/
mibspi->DMACNTLEN = 0x1;
mibspi->DMACOUNT[通道]=(F_COUNT - 1)<< 16;
}
感谢王先生分享了该示例项目。
查看代码后、我假设 SPI1配置为主模式、SW 回路模式、SPI3配置为从模式。
有三个主文件、我使用了 HL_SYS_MAIN 文件、将另外两个文件排除在工程之外。
我尚未连接 SPI1和 SPI3、只想检查 SPI1回路。
看起来在执行 main 之后它不起作用。 连接 TX 和 RX 存储器部分的屏幕截图。
请检查一次并帮助我。
Chandra