我正在尝试 使用 UDMA 将数据从存储器传输到 GPIO。
我的目标是使用 uDMA 将几个字节从存储器(源)传输到 PORTD (目标)。
我使用 的是 TIvAware c_series_2_1_4_178库。
我修改 了 UDMA_DEMON.c 以实现上述目标。
当我尝试内存到内存传输时,它工作正常。 但是、当我将目的地址更改为 GPIO PORTD 时、不会生成 UDMA 中断。
我 进行了以下更改。
// mem 到 GPIO ControlSet
uDMAChannelControlSet (UDMA_CHANGE_SW | UDMA_PRI_SELECT、
UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE |
UDMA_ARB_1);
//内存到 GPIO TransferSet
uDMAChannelTransferSet (UDMA_CHANGE_SW | UDMA_PRI_SELECT、
UDMA_MODE_BASIC、g_ui32SrcBuf、(void *)(GPIO_PORTN_BASE+0x0)、
MEM_buffer_size);
我怀疑 在 uDMAChannelTransferSet 函数中使用的目标地址可能错误。 如何正确指定此.correctly。
Tivaware 外设驱动程序库在592页有以下注释
注:
当 GPIO_O_DATA 寄存器是源或目标时、应用程序代码必须
使用位段地址空间、而不是指定源地址或目标地址
GPIO_DATA。
如何处理上述问题?
提前感谢您的帮助。