目前我们平台T507使用的驱动是kernel/linux-4.9/drivers/tty/serial/sunxi-uart.c。
目前我的是修改是在tx发送的时候拉高GPIO,stop的时候拉低,但是发现发送字符超过一定数据的会有必现发送数据丢失,看起来的原因是GPIO拉早了,需要去判断fifo为空的时候才能拉低GPIO,我参考了 https://whycan.com/t_4012.html 这个提问加了下面的修改,机器都不能开机了,串口也用不了,请问有没有大神指点下,谢谢!
while (port->ops->tx_empty(port) != TIOCSER_TEMT)
;
}
离线
全志官方SDK已经支持四线UART,
dts配置一下就可以了。
离线
全志官方SDK已经支持四线UART,
dts配置一下就可以了。
我是T507平台,我的驱动没支持,我们没有直接对接原厂。朋友你的驱动也是用sunxi-uart.c。这个的吗?
离线
首先看下硬件datasheet,这组UART是不是4线的?
离线
首先看下硬件datasheet,这组UART是不是4线的?
是四线的。
离线
是哪一组串口,我帮你看下。
离线
首先看下硬件datasheet,这组UART是不是4线的?
能不能贴一下你的dts是怎么配置的?
离线
是哪一组串口,我帮你看下。
uart2 。
离线
tigger 说:是哪一组串口,我帮你看下。
uart2 。
找到 dts 文件,看下是不是四线配置。
离线
swhkt 说:tigger 说:是哪一组串口,我帮你看下。
uart2 。
找到 dts 文件,看下是不是四线配置。
uart2_pins_a: uart2@0 {
allwinner,pins = "PH5", "PH6", "PH7", "PH8";
allwinner,pname = "uart2_tx", "uart2_rx",
"uart2_rts", "uart2_cts";
allwinner,function = "uart2"
allwinner,muxsel = <3>;
看dts是有配置的,但是PH8被我们已经用来当485的power了。PH7是就是那个控制脚。按你刚刚跟我讨论的话,是不是我在dts里面打开这个东西就可以实现485了?
linux,rs485-enabled-at-boot-time
离线
应该是PH8 CTS控制RS485收发。
那按硬件的接法我们已经没有办法用全志现成的dts配置了? 只能把这个控制当是普通的GPIO来控制了,回到我一开始的问题了。
离线
哇酷小二 说:应该是PH8 CTS控制RS485收发。
那按硬件的接法我们已经没有办法用全志现成的dts配置了? 只能把这个控制当是普通的GPIO来控制了,回到我一开始的问题了。
你现在硬件用哪个IO控制485收发?
离线
swhkt 说:哇酷小二 说:应该是PH8 CTS控制RS485收发。
那按硬件的接法我们已经没有办法用全志现成的dts配置了? 只能把这个控制当是普通的GPIO来控制了,回到我一开始的问题了。
你现在硬件用哪个IO控制485收发?
之前的贴错了 都是用PI,IO控制用的 P17(UART2-RTS)。
离线
@swhkt
那先飞线测试吧,你的dts如果配了四线,那么按理CTS就是控制485的收发。等你好消息。
硬件改不了。如果能修改硬件,我们都可以直接把485芯片的ID直接接到TX去,让硬件自己控制。
离线
这是个硬件的连接图
离线