嵌入式开发——串口常见问题和调试手段

1、串口介绍

参考博客:《ARM芯片(S5PV210芯片)——串口通信详解》《UART和RS232、RS485的联系和区别、以及对软件编程的影响》

2、串口常见问题

(1)内核没有开启串口,导致没有产生设备节点;
(2)上层应用通过设备节点操作串口,但是收发数据都没有;
(3)串口上有数据传送,但是乱码;

3、内核没有串口设备节点

/ {
	compatible = "rockchip,rk3368";
	interrupt-parent = <&gic>;
	#address-cells = <2>;
	#size-cells = <2>;

	aliases {
		ethernet0 = &gmac;
		i2c0 = &i2c0;
		i2c1 = &i2c1;
		i2c2 = &i2c2;
		i2c3 = &i2c3;
		i2c4 = &i2c4;
		i2c5 = &i2c5;
		mmc0 = &sdmmc;
		mmc1 = &sdio0;
		mmc2 = &emmc;
		serial0 = &uart0;
		serial1 = &uart1;
		serial2 = &uart2;
		serial3 = &uart3;
		serial4 = &uart4;
		spi0 = &spi0;
		spi1 = &spi1;
		spi2 = &spi2;
	};

(1)检查内核有没有开启对应串口。查看dts文件或者直接在虚拟文件系统(/proc/device-tree)中查看对应串口是否使能;
(2)如果内核串口已经使能,但还是没有产生设备节点,需要确认该串口引脚是否已经被复用为其他功能。可能查看内核启动是否有相关报错打印,或者直接用devmem命令查看对应的引脚控制寄存器,确认当前引脚被配置成何种模式;
(3)不同芯片平台的内核,串口设备节点的名字不相同。比如:串口名是/dev/ttyS4,ttyS这个前缀是在串口驱动代码里确定的,串口驱动代码在drivers/tty/serial/xxx.c,后缀4是设备树里串口的别名确认的,每个串口会被取一个别名;也就是时候串口4是可以不对应/dev/ttyS4,具体要看设备树里怎么取别名;
(4)串口驱动底层是调用tty子系统,想要深入了解串口驱动,就要先了解tty驱动框架;

4、内核有设备节点但是收发数据都没有

(1)首先确认你操作的串口是不是真的用于通信的串口;
(2)确认发送线和接收线有没有接反;
(3)用示波器或者逻辑分析仪查看数据线上是不是有真的发送接收数据;
(4)通过抓波形,你这端的数据发送是正常的,怀疑是串口对端有问题,可以通过将串口线引出,用串口转USB接在电脑上,用电脑上的串口仿真软件来通信,进行验证;

5、有收发数据但是乱码

(1)确认波特率、停止位、校验位等参数,双方是否一致;
(2)确认是否将流控功能关闭(RTS/CTS);

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正在起飞的蜗牛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值