工具/软件:TI-RTOS
大家好、
我正在使用 tm4c1294ncppdt 板。我想将 UART 与 uDMA 配合使用。数据表显示: 具有由 uDMA 处理的 FIFO 的外设来发送或接收数据。因此我想使用 UART Rx FIFO 来触发 传输请求。 我的问题是 tm4c 没有可用 的 UART FIFO 地址。 FIFO 传输和接收数据的目的是读取和操作 UARTDR 寄存器。 那么,我如何在函数:uDMAChannelTransferSet()中填充 SCR 地址;我只需用 UARTDR 寄存器的地址填充它。我的程序如下所示:
BIOS_getCpuFreq (&sysfreq);
/* UART7 AS RS485_3 */
SysCtlPeripheralEnable (SYSCTL_Periph_UART7);
GPIOPinConfigure (GPIO_PC4_U7RX);
GPIOPinConfigure (GPIO_PC5_U7TX);
GPIOPinTypeUART (GPIO_PORTC_BASE、GPIO_PIN_4 | GPIO_PIN_5);
UARTConfigSetExpClk (UART7_BASE、sysfreq.lo、波特、(UART_CONFIG_WLEN_8 | UART_CONFIG_STOP_ONE | UART_CONFIG_PAR_NONE));
UARTEnable (UART7_BASE);
UARTIntEnable (UART7_BASE、UART_INT_DMARX);
UARTFIFOLevelSet (UART7_BASE、UART_FIFO_TX1_8、UART_FIFO_RX4_8);
IntEnable (INT_UART7);
UARTDMAEnable (UART7_BASE、UART_DMA_RX);
UARTIntClear (UART7_BASE、UART_INT_DMARX);
SysCtlPeripheralEnable (SYSCTL_Periph_UDMA);
uDMAEnable();
uDMAControlBaseSet (&MyDMAControlTable[0]);
uDMAChannelAssign (UDMA_CH20_UART7RX);
uDMAChannelAttributeEnable (UDMA_CH20_UART7RX、UDMA_ATTR_USEBURST | UDMA_ATTR_HIGH_PRIORITY);
uDMAChannelControlSet (UDMA_CH20_UART7RX | UDMA_PRI_SELECT、UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_8 | UDMA_ARB_8 | UDMA_NEW_USEBURST);
uDMAChannelTransferSet (UDMA_CH20_UART7RX | UDMA_PRI_SELECT、UDMA_MODE_BASIC、(void *)(UART7_BASE + UART_O_DR)、receivebuffer_runtime、UDMA_size_8);
uDMAChannelEnable (UDMA_CH20_UART7RX);
uDMAChannelRequest (UDMA_CH20_UART7RX);
如何使用 UART FIFO 访问 udam SCR 地址?
如何正确使用带有 UART FIFO 的 UAM? 外设 FIFO 是在突发模式下触发 UDMA 的有效方法、因此我需要提高 UART UDMA 效率的方法。