全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

串口数据错乱?从标志位设置入手

时间:2025-02-11 11:35

人气:

作者:admin

导读:导读在串口通信开发中,数据错乱是常见问题。本文将快速介绍串口标志位的作用及配置方法,帮助解决数据传输错误。有用户反馈“串口应用层数据错乱、与发送端发送的字节数不匹...

导读

在串口通信开发中,数据错乱是常见问题。本文将快速介绍串口标志位的作用及配置方法,帮助解决数据传输错误。

有用户反馈“串口应用层数据错乱、与发送端发送的字节数不匹配”,简单来说就是接收和发送的数据不对,而且还存在帧数据错乱的情况。经排查,是程序没用设置ISIG标志位设置引起的。本节以此为切入点进行展开,对串口设置的一些标志位进行简单说明。

1. c_cflag:可以设置波特率、字符大小、数据位、停止位、奇偶校验位和硬软流控等

1.1 波特率

4aba9ac6-e829-11ef-9434-92fbcf53809c.png

1.2 其它

4ad2ece8-e829-11ef-9434-92fbcf53809c.png

初始化c_flag时,不能直接对 c_cflag 成员进行赋值,而是需要通过“与”、“或”操作使用其中的某些选项,例如:

  • 设置硬件流控制

c_cflag |= CNEW_RTSCTS

无硬件流控制

c_cflag &= ~CNEW_RTSCTS

2. c_iflag:用于控制端口接收端的字符输入处理

4ae9ddb8-e829-11ef-9434-92fbcf53809c.png

禁用软件流控制是禁止上面的选项。

c_iflag &= ~(IXON | IXOFF | IXANY);

3. c_oflag:用于控制终端端口发送出去的字符处理

4b15f902-e829-11ef-9434-92fbcf53809c.png

因为现在终端的速度比以前快得多,所以大部分延时掩码几乎没什么用途。

启用输出处理需要在 c_oflag 成员中启用 OPOST 选项。

c_oflag |= OPOST;

使用原始输出,就是禁用输出处理,使数据能不经过处理过滤的完整地输出到串口。当 OPOST 被禁止,c_oflag 其它选项也被忽略。

c_oflag &= ~OPOST;

4. c_lflag:用于控制控制终端的本地数据处理和工作模式

4b2a6888-e829-11ef-9434-92fbcf53809c.png

4.1 选择规范模式

c_lflag |= (ICANON | ECHO | ECHOE);

4.2 选择原始模式

c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

5. c_cc:定义特殊控制特性

4b49c6d8-e829-11ef-9434-92fbcf53809c.png

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信