UART3和UART4无法通信

  • 您好,根据您的测试程序的输出结果,程序虽然使用了time.sleep将UART3线程挂起了0.5秒,但是显示根据您的程序设计UART4的线程需要经过初始化等步骤再开始接收在0.5s内无法完成所有操作,所以很快又切回UART3线程,UART4线程没有运行的机会。
    这涉及到多线程设计的内容,建议从线程同步的角度来解决问题,比如使用互斥锁(threading.Lock())来完善您的测试程序。
  • Crocodile wrote: 2024-04-07 1:52 您好,根据您的测试程序的输出结果,程序虽然使用了time.sleep将UART3线程挂起了0.5秒,但是显示根据您的程序设计UART4的线程需要经过初始化等步骤再开始接收在0.5s内无法完成所有操作,所以很快又切回UART3线程,UART4线程没有运行的机会。
    这涉及到多线程设计的内容,建议从线程同步的角度来解决问题,比如使用互斥锁(threading.Lock())来完善您的测试程序。
    我通过一种很奇怪的方式解决了这个问题,UART3.RX连接UART4.RX,UART3.TX连接UART4.TX。最终可以正常通讯。不知道是端口标识搞错了,还是必须是这样。
  • ezreal wrote: 2024-04-08 8:10
    Crocodile wrote: 2024-04-07 1:52 您好,根据您的测试程序的输出结果,程序虽然使用了time.sleep将UART3线程挂起了0.5秒,但是显示根据您的程序设计UART4的线程需要经过初始化等步骤再开始接收在0.5s内无法完成所有操作,所以很快又切回UART3线程,UART4线程没有运行的机会。
    这涉及到多线程设计的内容,建议从线程同步的角度来解决问题,比如使用互斥锁(threading.Lock())来完善您的测试程序。
    我通过一种很奇怪的方式解决了这个问题,UART3.RX连接UART4.RX,UART3.TX连接UART4.TX。最终可以正常通讯。不知道是端口标识搞错了,还是必须是这样。
    我UART3/4也不能用,都没编程,之间用的例程 echo 都不行。看起来得试验一下
  • ezreal wrote: 2024-04-08 8:10
    Crocodile wrote: 2024-04-07 1:52 您好,根据您的测试程序的输出结果,程序虽然使用了time.sleep将UART3线程挂起了0.5秒,但是显示根据您的程序设计UART4的线程需要经过初始化等步骤再开始接收在0.5s内无法完成所有操作,所以很快又切回UART3线程,UART4线程没有运行的机会。
    这涉及到多线程设计的内容,建议从线程同步的角度来解决问题,比如使用互斥锁(threading.Lock())来完善您的测试程序。
    我通过一种很奇怪的方式解决了这个问题,UART3.RX连接UART4.RX,UART3.TX连接UART4.TX。最终可以正常通讯。不知道是端口标识搞错了,还是必须是这样。
    您好,luckfox-pico mini 的引脚图确实出现了标记错误的情况,在wiki上已经做了更新,商店页面后在后续更正,以wiki上的为准。
  • zgsxtyzgd wrote: 2024-04-29 8:29
    ezreal wrote: 2024-04-08 8:10
    Crocodile wrote: 2024-04-07 1:52 您好,根据您的测试程序的输出结果,程序虽然使用了time.sleep将UART3线程挂起了0.5秒,但是显示根据您的程序设计UART4的线程需要经过初始化等步骤再开始接收在0.5s内无法完成所有操作,所以很快又切回UART3线程,UART4线程没有运行的机会。
    这涉及到多线程设计的内容,建议从线程同步的角度来解决问题,比如使用互斥锁(threading.Lock())来完善您的测试程序。
    我通过一种很奇怪的方式解决了这个问题,UART3.RX连接UART4.RX,UART3.TX连接UART4.TX。最终可以正常通讯。不知道是端口标识搞错了,还是必须是这样。
    我UART3/4也不能用,都没编程,之间用的例程 echo 都不行。看起来得试验一下
    您好,请问您遇到的问题是类似题主用两个串口进行互相通讯还是单个串口功能无法实现。如果是前者,题主的程序线程只是测试使用,在实际运行下UART3线程较早运行然后连续发送(没有调度到串口4线程),串口4需要过段时间调度到后才能开始接收程序,实验现象并不是一接一收。
    如果是后者请先确定好是否存在/dev/ttyS3和/dev/ttyS4 设备,如果使用串口转USB请确定波特率是否设置正确。
  • Crocodile wrote: 2024-04-29 10:54
    zgsxtyzgd wrote: 2024-04-29 8:29
    ezreal wrote: 2024-04-08 8:10

    我通过一种很奇怪的方式解决了这个问题,UART3.RX连接UART4.RX,UART3.TX连接UART4.TX。最终可以正常通讯。不知道是端口标识搞错了,还是必须是这样。
    我UART3/4也不能用,都没编程,之间用的例程 echo 都不行。看起来得试验一下
    您好,请问您遇到的问题是类似题主用两个串口进行互相通讯还是单个串口功能无法实现。如果是前者,题主的程序线程只是测试使用,在实际运行下UART3线程较早运行然后连续发送(没有调度到串口4线程),串口4需要过段时间调度到后才能开始接收程序,实验现象并不是一接一收。
    如果是后者请先确定好是否存在/dev/ttyS3和/dev/ttyS4 设备,如果使用串口转USB请确定波特率是否设置正确。
    您好,我仅仅修改了 文件 rv1106g-luckfox-pico-pro-max.dts
    把pwm全部注释了,包括 I2C 的部分 。
    UART部分如下
    &uart3 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&uart3m1_xfer>;
    };
    &uart4 {
    status = "okay";
    pinctrl-names = "default";
    pinctrl-0 = <&uart4m1_xfer>;
    };
    其中 uart3m1_xfer和 uart4m1_xfer
    在文件 rv1106-pinctrl.dtsi 的定义中
    uart3m1_xfer: uart3m1-xfer {
    rockchip,pins =
    /* uart3_rx_m1 */
    <1 RK_PD1 5 &pcfg_pull_up>,
    /* uart3_tx_m1 */
    <1 RK_PD0 5 &pcfg_pull_up>;
    };
    uart4m1_xfer: uart4m1-xfer {
    rockchip,pins =
    /* uart4_rx_m1 */
    <1 RK_PC4 4 &pcfg_pull_up>,
    /* uart4_tx_m1 */
    <1 RK_PC5 4 &pcfg_pull_up>;
    };
    分别是
    uart3m1_xfer:针脚是 GPIO1_D0/GPIO1_D1 上拉高电平 (开发板针脚19/20)
    uart4m1_xfer:针脚是 GPIO1_C5/GPIO1_C4 上拉高电平
    编译后烧入系统,电脑通过ch340连接到相关针脚(20/19)后使用 波特率 9600 用 echo hello > /dev/ttyS3 后 电脑端没有反应。用万用表测量 20/19 针脚电压(相对GND)为0。 如果我理解的没错, <1 RK_PD1 5 &pcfg_pull_up> 应该是表示 GPIO1_D1 上拉,应该能检测到3.3伏的电压
    至少我的开发板不能使用 uart
    开发板后标识为 LCPI-RV1106_V1.2(303RV1106G1)
    最后,用uart2是可以登录入终端的,证明ch340没有问题
    希望您能给予解答
    Last edited by zgsxtyzgd on 2024-05-01 14:02, edited 1 time in total.
  • Crocodile wrote: 2024-04-29 10:54
    zgsxtyzgd wrote: 2024-04-29 8:29
    ezreal wrote: 2024-04-08 8:10

    我通过一种很奇怪的方式解决了这个问题,UART3.RX连接UART4.RX,UART3.TX连接UART4.TX。最终可以正常通讯。不知道是端口标识搞错了,还是必须是这样。
    我UART3/4也不能用,都没编程,之间用的例程 echo 都不行。看起来得试验一下
    您好,请问您遇到的问题是类似题主用两个串口进行互相通讯还是单个串口功能无法实现。如果是前者,题主的程序线程只是测试使用,在实际运行下UART3线程较早运行然后连续发送(没有调度到串口4线程),串口4需要过段时间调度到后才能开始接收程序,实验现象并不是一接一收。
    如果是后者请先确定好是否存在/dev/ttyS3和/dev/ttyS4 设备,如果使用串口转USB请确定波特率是否设置正确。
    找到原因了,我的板子的引脚和你们标准文档不一样,我的板子版本是 “(303RV1106G1)” 很多引脚是悬空的,没接入主控芯片。
    同时,我想知道这些不同板子之间的差异
  • 可以自己对比官网的数据手册。
    https://wiki.luckfox.com/zh/Luckfox-Pico/Datasheets
  • Luckfox Taylor wrote: 2024-05-04 12:54 可以自己对比官网的数据手册。
    https://wiki.luckfox.com/zh/Luckfox-Pico/Datasheets
    望告知具体型号
    Attachments
    长这样
    长这样