RA4M2 SCI+DMA的中断设置

请帮忙再看看RA4M2的SCI设置成Uart+DMA的问题:

目前认为的流程,比如发100字节,操作DMA时,每发完一个字节还必须要进SCI中断,并使能enable 才能发第二个字节?这样会非常占用MCU资源,不知道是否还有更好的办法,还请建议。谢谢!

Parents
  • Hi George,

    使用DMA要進行相應的配置,依照您的例子已TX為例,配置一DMAC channel,然後將Length of each transfer配置為100,number of bytes to transfer at once 配置為1,則100byte資料傳送完才會進一次DMA Transfer Complete的中斷,而在下一次TX Transfer開始前在reset DMA就好,UART搭配DMA使用後,就不必要再進UART Driver裡面的 sci_uart_txi_isr() 了,所以可以透過ICU IELSR(ICU Event Link Setting Register) 禁用 UART TXI 和 NVIC的關聯,這樣就可以維持UART TXI (Transmit Data Empty) 做為DMAC activation source但卻不會觸發 sci_uart_txi_isr

    若需要example project,請提供你的email,謝謝

    Best Regards,

    CP

  • Hi George,

    Example project 已寄送,謝謝

  • 再请问一下,如何处理串口+DMA接收不定长度的数据?比如数据接收长度规定 2 to 500,如果把接收DMA的长度设置的100,某个时刻只收到40或60个字节,这个时候如何处理?

    之前采用其他MCU,其串口有空闲中断,在收到数据的情况下,要是串口有一段时间空闲就触发一次中断。不知道RA4M2的DMA有没有类似操作?谢谢

  • [email protected],帮忙分享一下例程,谢谢

Reply Children
No Data