最近我们(UAES)在尝试利用sdk的实现基于DMA的UART通信功能,一直没有调通,大致遇到几个问题:
|
测试Case |
现象 |
问题 |
|
使用UART向外发送任意报文 |
如果使用uart_write接口,则UART口上可以检测到电平变化,但是并不是想发的数据;如果使用UARTCharPut接口,则数据可以正常发送 |
这两个接口用起来的区别是什么?事实上我们更想使用uart_write接口,想知道怎么用。 |
|
利用UART_socGetInitCfg/UART_socSetInitCfg打开DMA功能 |
以下是代码: UART_socGetInitCfg(TEST_UART_CHANNEL, &TSW_Uart_Cfg);
/* here is the changed value: */ TSW_Uart_Cfg.baseAddr = CSL_UART5_BASE; TSW_Uart_Cfg.intNum = CSLR_R5FSS0_CORE0_INTR_UART5_USART_IRQ_0; TSW_Uart_Cfg.enableInterrupt = FALSE; TSW_Uart_Cfg.dmaMode = TRUE;
/* Write back config */ UART_socSetInitCfg(TEST_UART_CHANNEL, &TSW_Uart_Cfg);
DMA功能似乎没有被正常使能,甚至在lauterbach调试时也没有找到这个函数:UART_configDMA |
我们发现驱动中有一个这个宏:UART_DMA_ENABLE,是不是库里面这个宏没有使能?
|
|
edma/udma/pdma有什么区别? |
edma/udma/pdma有什么区别? |
edma/udma/pdma有什么区别? |
是否有此芯片的基于UART+DMA的Demo软件?(sdk中的代码比较乱,drv/uart文件夹中也没有像一些组件一样的example文件夹,文档也比较简单,参考起来很困难)
p.s. 我们使用的调试器是LauterBach