I have a DT7 & DR16 RC System | DJI. The DR16 receiver use D-Bus protocol. For communicate with the receiver, the signals need to be negated. I use a transistor inverse circuit, the following is the schematic diagram.


I use UART receive trigger DMA. But UART don't trigger DMA. I did some tests:
1. UART interrupt receiver, in the interrupt handler of UART_Rx, the MCU receives correct data. so I think the transistor inverse circuit work.
2. UART receive trigger DMA, in this case, I use PC transmits and MCU receives, in the interrupt handler of DMA, the MCU receives correct data.
3. UART receive trigger DMA, I use other MCU transmit and this MCU receives by using 100k baud rate, in the interrupt handler of DMA, the MCU receives correct data.
4. UART receive trigger DMA, when I use the DR16 transmit and MCU receives(8bit), I find UART Rx don't trigger DMA.
5. UART receive trigger DMA, but when I use the DR16 transmit and MCU receives(9bit), I find UART Rx can trigger DMA.
I have checked my program for many times , but I still did't find why this happen, please help me.
Original Attachment has been moved to: UART_Remote_test.zip