OpenNuvoton / MA35D1_linux-5.10.y

MA35D1 Linux 5.10.y
Other
6 stars 9 forks source link

如果要启用串口DMA收发数据 应用程序 与 驱动程序需要做什么特别处理 #11

Open zwjin1210 opened 1 month ago

ychuang3 commented 1 month ago

都不需要,從 device tree 指定使用 PDMA 即可

zwjin1210 commented 4 weeks ago

image image 这个应该怎么指定

ychuang3 commented 4 weeks ago

只需要修改 uart node
pdma-enable = <1>;

zwjin1210 commented 3 weeks ago

是不是我不需要关心是哪个 PDMA 只需要pdma-enable = <1>;就可以

ychuang3 commented 3 weeks ago

是的,driver 會自動分配

zwjin1210 commented 2 weeks ago

我不开启DMA能正常收到 但是开启了DMA 就不正常 系统都会挂掉 image

image image image

zwjin1210 commented 2 weeks ago

是的,driver 會自動分配

我测试了好像不行

mjchen1 commented 2 weeks ago

可以參考,下面PDMA的設定, 需要指定pdma port(pdma0~3)及pdma channel.

uart1:serial@40710000 { compatible = "nuvoton,ma35d1-uart"; reg = <0x0 0x40710000 0x0 0x10000>; interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>; clocks = <&clk UART1_GATE>; port-number = <1>;

    /* PDMA Setting  */
    dmas = <&pdma0 0>,<&pdma0 1>;
    dma-names = "tx", "rx";
    pdma-enable = <1>; /* Enable PDMA */

    status = "disabled";

};

zwjin1210 commented 2 weeks ago

dmas = <&pdma0 0>,<&pdma0 1>; dma-names = "tx", "rx"; pdma-enable = <1>; / Enable PDMA /

这么配置DMA 是没问题但是串口485 好像只能收发一次 ,我显示串口收发控制脚是使用RTS引脚当普通引脚使用 不使用DMA情况下是可以正常收发的 ,但是如果使用DMA 只能收发一次

mjchen1 commented 2 weeks ago

你的RTS引腳,是s/w控制的嗎 ...??

zwjin1210 commented 2 weeks ago

你的RTS引腳,是s/w控制的嗎 ...??

是的 配置成普通GPIO 因为之前配置成RTS 时 485只能收发一次 然后看论坛里说是当普通GPIO用 可以

mjchen1 commented 1 week ago

使用DMA時,需要設置RTS pin,這樣硬體才會自動拉, 用s/w拉的話,可能會來不及

zwjin1210 commented 1 week ago

使用DMA時,需要設置RTS pin,這樣硬體才會自動拉, 用s/w拉的話,可能會來不及 但是我不使用DMA时 配置成RTS pin 就是收发一次

mjchen1 commented 1 week ago

main.zip image 我們試了一下設置硬件的RTS, 看起來並沒有什麼問題, 附件是我們的測試code,你可以參考一下

zwjin1210 commented 1 week ago

main.zip image 我們試了一下設置硬件的RTS, 看起來並沒有什麼問題, 附件是我們的測試code,你可以參考一下 是的我修改成RTS 就好了