Firefly开源社区

标题: 关于3568 串口问题 [打印本页]

作者: jishutao    时间: 2022-1-18 15:57
标题: 关于3568 串口问题
本帖最后由 jishutao 于 2022-1-18 16:32 编辑

您好:
    我按照Rockchip_Developer_Guide_UART_CN.pdf中的说明,在rk3568.dtsi中修改uart3的status = "okay";编译完内核出现 ttyS3设备结点,ttyS3和GMAC1是复用的,如果我用UART3的话还需要如何操作
作者: Liuth    时间: 2022-1-18 16:35
https://wiki.t-firefly.com/zh_CN/ROC-RK3568-PC/driver_uart.html
不要修改rk3568.dtsi文件,修改上层的rk3568-firefly-roc-pc.dtsi去覆盖
uart2、3、4已经默认打开了,不用你再改动,uart2作为了debug口,不建议当普通uart使用
uart9默认没打开,在rk3568-firefly-roc-pc.dtsi添加节点手动打开

综上,你可以使用uart3(rs232) uart4(485) uart9(普通uart)
作者: jishutao    时间: 2022-1-18 17:32
Liuth 发表于 2022-1-18 16:35
https://wiki.t-firefly.com/zh_CN/ROC-RK3568-PC/driver_uart.html
不要修改rk3568.dtsi文件,修改上层的 ...

您好:
    多谢回复,我用UART4真接就可以用了,只不过做板子时去掉485转换芯片就行了。
作者: Ender    时间: 2022-8-8 11:08
本帖最后由 Ender 于 2022-8-8 11:23 编辑
Liuth 发表于 2022-1-18 16:35
https://wiki.t-firefly.com/zh_CN/ROC-RK3568-PC/driver_uart.html
不要修改rk3568.dtsi文件,修改上层的 ...

您好!我想问几个问题可以吗?
1、要使能或者解除复用功能的话,在rk3568-firefly-roc-pc.dtsi里修改就可以了吗?对于GPIO来说,解除掉GPIO对应的所有复用功能,这个GPIO就可以正常使用了吗?比如:
&uart9{
     status = "okey";
};

&can1{
     status = "disabled";
};

2、我看到WIKI上说明在rk3568-firefly-roc-pc.dtsi上配置节点uart9:
&uart9 {
    status = "okay";
    pinctrl-0 = <&uart9m1_xfer>;
};
我添加的时候没有写上pinctrl-0这一句,也会出现/dev/ttyS9,它是必要的吗?

3、在其他的dtsi文件中(比如rk3568.dtsi或rk3568-firefly-port.dtsi),举个例子,对uart3是disabled,但是我们在rk3568-firefly-roc-pc.dtsi里设置了"okey",这会相互影响吗?
作者: Liuth    时间: 2022-8-8 11:49
Ender 发表于 2022-8-8 11:08
您好!我想问几个问题可以吗?
1、要使能或者解除复用功能的话,在rk3568-firefly-roc-pc.dtsi里修改就 ...

这3个问题相互关联,我一起回答
首先,dts/dtsi 存在 include 关系,上层的会覆盖掉下层的,比如
A include B include C,uart9 在 C 中是 enable,在 A 中是 disabled,那最终生效的结果是 disabled

其次,仅仅使能是不行的,还需要把复用的其他功能关闭,同时只能有一个功能开启
复用关系需要查看芯片的datasheet
pinctrl 很重要,它决定使用哪一个引脚

举例:
现在需要使用 UART9,查看硬件原理图,uart9 连接的引脚是 uart9_rx_m1 和 uart9_tx_m1
可以看到此处是 m1 ,查阅芯片手册 datasheet,uart9的m1组复用关系如下:
PWM12_M1/SPI3_MISO_M1/SATA1_ACT_LED/UART9_TX_M1/I2S3_SDO_M1/GPIO4_C5_d
PWM13_M1/SPI3_CS0_M1/SATA0_ACT_LED/UART9_RX_M1/I2S3_SDI_M1/GPIO4_C6_d

此时需要查看dts,pwm12是否开启?如果开启了,查看它的pinctrl是否使用了m1组?这里需要查看所有关联的dts和dtsi,不能只看一个,根据开头讲的include关系找出最终生效的结果:
假如pwm12最终生效是disable状态,那不管,不会起冲突
假如pwm12最终生效是enable状态,pinctrl是m0组,那不管,因为是m0组,也不会和uart9 m1起冲突
假如pwm12最终生效是enable状态,pinctrl是m1组,那就需要改为disabled才能使用uart9 m1
以此类推去排查pwm13,spi3,sata0,i2s3等等
排查结束,解决完冲突后,再把uart9 enable,并将pinctrl设置为m1,即
pinctrl-0 = <&uart9m1_xfer>;
所以pinctrl这句设置与否是根据实际情况来的
作者: Ender    时间: 2022-8-9 11:18
Liuth 发表于 2022-8-8 11:49
这3个问题相互关联,我一起回答
首先,dts/dtsi 存在 include 关系,上层的会覆盖掉下层的,比如
A inc ...

感谢答复!!经过您的指点我调通了uart9
但是在查找dtsi的途中衍生出一个问题:按照之前说的上层覆盖下层,那么如果在A中
&i2c1{
    status="okey";
}

而在C中
i2c1: i2c@fe5a0000 {
Compatible = "rockchip , rk3399-i2c";
reg = <0x0 0xfe5a0000 0x0 0x1000>;
clocks =<&cru CLK_I2C1>, <&cru PCLK_I2C1>;
clock- names = "i2c" , "pcik" ;
interrupts = <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH> ;
pinctrl-names = "default" ;
pinctrl-0 = <&i2c1_xfer>;
#address-cells = <1>;
#size-cells = <0>;
status = "disabled " ;
};

这里在A中status会把下层覆盖掉,但是A中没有定义其他属性的话,那么应该是沿用下层C中的设置对吧?

作者: Liuth    时间: 2022-8-9 11:29
Ender 发表于 2022-8-9 11:18
感谢答复!!经过您的指点我调通了uart9
但是在查找dtsi的途中衍生出一个问题:按照之前说的上层覆盖下 ...

对,A中没写的,就会沿用下层
作者: Ender    时间: 2022-8-9 14:43
Liuth 发表于 2022-8-9 11:29
对,A中没写的,就会沿用下层

那这样的话,我直接在最上层把不需要的disabled掉也是可行的吧?
作者: Liuth    时间: 2022-8-9 15:23
Ender 发表于 2022-8-9 14:43
那这样的话,我直接在最上层把不需要的disabled掉也是可行的吧?

可以
作者: Ender    时间: 2022-8-9 16:01
Liuth 发表于 2022-8-9 15:23
可以

多谢大佬,我自己再研究下
作者: Ender    时间: 2022-8-29 11:34
Liuth 发表于 2022-8-9 15:23
可以

您好!我这边出现了很奇怪的问题想咨询一下:
1、我这里使用了uart3和uart9,它们无论是自收发还是相互收发都是正常的,这应该说明串口是正常的。但是它们的电平是不同的,不应该会出问题吗?所以想问的是:uart3(rs232)不一定要接到rs232接口,uart9(普通uart)也不一定要接TTL吗?还想问下uart4是在RJ45口吗?
2、上述的两个串口一但连到我的笔记本的putty上无论收发都会有乱码,而且乱码是有规律的,比如发送7会固定收到d、发送9会固定收到c(我验证了是ascii码按位取反和右移)。也检查过波特率等设置,没发现有不一致的地方。试过了很多方法都没有用,所以想问问您的见解。
作者: Liuth    时间: 2022-8-29 14:47
本帖最后由 Liuth 于 2022-8-29 15:57 编辑
Ender 发表于 2022-8-29 11:34
您好!我这边出现了很奇怪的问题想咨询一下:
1、我这里使用了uart3和uart9,它们无论是自收发还是相互 ...

RS232的电平和TTL有重叠的地方
https://zhuanlan.zhihu.com/p/356679109

例如+5V在232里是1,在TTL里也是1,所以可能可以相互通信,可以用电表量一下具体电压
虽然可以通信,但不要这样混接,长期可能会烧坏

uart4是在RJ45,作为rs485

乱码我真不清楚。。
板子上的debug口是普通uart2,用来输出控制台信息,我们经常用这个,连接一个CP2104转USB到电脑,不会有乱码
作者: Ender    时间: 2022-8-29 15:59
Liuth 发表于 2022-8-29 14:47
RS232的电平和TTL有重叠的地方
https://zhuanlan.zhihu.com/p/356679109

明白了,我还得弄一弄多谢
作者: Ender    时间: 2022-9-15 23:39
Liuth 发表于 2022-8-29 14:47
RS232的电平和TTL有重叠的地方
https://zhuanlan.zhihu.com/p/356679109

您好!最近在使用RJ45接口的RS232_2串口时遇到了问题,WIKI上说RS232_2对应UART3,但是用RJ45转RS232连接PC通信不成功,UART3也换到了M1引脚组。所以想问:
1、要使用RS232_2的话,是UART3的M1引脚吗?
2、接线是直接用转接线就可以了吗?




欢迎光临 Firefly开源社区 (https://dev.t-firefly.com/) Powered by Discuz! X3.1