大家好!
如何配置 DMA 以便在不使用函数 uart2_open()的情况下发送数据?
目前我在没有 uart2_open()的情况下配置自己的 UART 读回调,所以我不使用 DMA。 原因如下:
我正在尝试使用 CC2340 UART 进行 LIN 通信。 我需要使用读回调完成 LIN 消息的接收。
SDK 7.10中提供了一个示例 uart2callback,但由于在函数 uart2_open()中启用了 DMA,读取回调具有延迟。
此延迟 P0对于 LIN 通信非常糟糕。
在 LIN 通信中、我只需要接收1个字节、因此不需要 DMA 和 FIFO、但它们的启用 会导致接收延迟。
但是,在使用 HwiP_create()函数时,我成功地配置了一个没有 DMA 和 FIFO 的 UART 读回调。 它工作正常、 没有长接收延迟。
对于 UART 发送, 在 SDK 7.10中有一个函数 UARTPutChar ()。 (路径:simplelink_lowpower_f3_sdk_7_20_00_01_eng\source\ti\devices\cc23x0r5\driverlib)
//***************************************************************************** // // Blocks until there is space in the data register, and writes a byte to it // //***************************************************************************** void UARTPutChar(uint32_t base, uint8_t data) { // Wait until space is available. while (HWREG(base + UART_O_FR) & UART_FR_TXFF) {} // Send the char. HWREG(base + UART_O_DR) = data; }
奇怪的是、我的代码已经在 while 循环中卡住了2次。
我从来没有发现为什么,非常害怕再次发生这种情况。
所以是否可以将 UART 发送分别配置为 DMA 发送而不使用 uart2_open ()函数?
是否有任何信息可用?
谢谢!
此致、
彼得