372****com
1.关于串口DMA,看默认配置,串口DMA发送时源地址是按照字节搬运,设置为按字搬运好像数据会错误,地址已经按照4字节对齐,并且长度也4字节对齐?
2.当发送完成时触发APP_UART_EVT_TX_CPLT事件时,是不是表示串口移位寄存器为空?我有个RS485,在收到该事件时将切换到接收状态,最后一个字节高4bit始终错误,需要加长一个字节才能正确
Darren
您好:
1.串口的硬件fifo深度是128,宽度是8bit。如果使用WORD方式的DMA搬运,那理论上只会搬运最后8bit到fifo中,并且只会占用fifo的1个深度。
2.APP_UART_EVT_TX_CPLT事件一般只tx_fifo的数据发空了,但是并不能说明串口移位寄存器为空。如果想避免该情况发生,可以调用 while((HAL_IS_BIT_SET(p_uart->p_instance->LSR, LL_UART_LSR_TEMT) ? SET : RESET) == RESET); 来保证tx_fifo和移位寄存器均为空。如截图:
打开微信,使用“扫一扫”即可关注