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

news/2024/10/30 17:23:10/

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);

推荐

给大家推荐一个学校嵌入式知识的网站,博主在大学时候学习嵌入式知识、找工作的时候都在用这个网站,网站里有C语言、Linux等等的笔试题、面试常问问题等等知识,无论是学习基础知识、面试刷题、交流工作经验都是不错的选择。大家一起进步,欢迎留言交流。
链接:学习神器跳转
在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/43922.html

相关文章

靶机精讲之CTF4

主机发现 靶机193 端口扫描 服务扫描 80&#xff0c;25&#xff08;明确版本&#xff09;攻击面更大 web渗透 blog是交互式的程序 发现index可进行手动爆破&#xff08;地址包含&#xff09; http://192.168.10.193/index.html?page../../../../../../../../etc/passwd 无发…

可视化图表API格式要求有哪些?Sugar BI详细代码示例(2)

Sugar BI中的每个图表可以对应一个数据 API&#xff0c;用户浏览报表时&#xff0c;选定一定的过滤条件&#xff0c;点击「查询」按钮将会通过 API 拉取相应的数据&#xff1b;前面说过&#xff0c;为了确保用户数据的安全性&#xff0c;Sugar BI上的所有数据请求都在Sugar BI的…

常用STM32F4HAL库函数及其示例

STM32F4HAL库函数是针对STM32F4系列微控制器的硬件抽象层&#xff0c;它封装了一些底层硬件操作&#xff0c;使程序员可以更方便地编写应用代码。以下是常用的一些STM32F4HAL库函数及其详细解释和示例。 GPIO库函数 HAL_GPIO_Init()&#xff1a;初始化GPIO口。 示例&#xff…

gru 串联LLm

单纯是为了降低大LLM 设计的结构 当前如果transformers 可以 输出一个状态也是可以的 这样串联的好处是每次运行知识一个小模型的计算量 时间换空间的概念 可以训练100个模型而后根据需要进行微调 从100 个中选择一个预测比较接近的进行微调预测 预测后继续进行从100中选择 而后…

从 Python 中的字典列表中删除重复项

要从字典列表中删除重复项&#xff1a; 使用字典推导来遍历列表。使用每个 id 属性的值作为键&#xff0c;使用字典作为值。使用 dict.values() 方法只获取唯一的字典。使用 list() 类将结果转换为列表。 list_of_dictionaries [{id: 1, site: jiyik.com},{id: 2, site: goo…

男生|女生漫画头像怎么制作,分享3种免费制作方法,不用求人

大家发现没有&#xff0c;最近特别流行卡通漫画头像&#xff01;一些小伙伴们通过处理自己的照片&#xff0c;把照片制作成漫画头像&#xff0c;让照片看起来更有趣。那么&#xff0c;男生、女生漫画头像怎么制作呢&#xff1f;需要用到哪些工具?今天给大家分享3种免费制作漫画…

【信息论】一、信息与信息论

“The fundamental problem of communication is that of reproducing at one point either exactly or approximately a message selected at another point.” —— Claude Elwood Shannon 1.1 信息的定义 什么是信息&#xff1f;它与消息、信号之间有什么区别和联系&#…

Java面向对象高级【类加载器】

目录 Java程序是怎样被运行的 类加载器的作用 加载类文件 链接类 定位类 类加载器间的委派 实现类的隔离 类加载器的类型 启动类加载器&#xff08;Bootstrap Class Loader&#xff09; 扩展类加载器&#xff08;Extension Class Loader&#xff09; 应用程序类加载器…