Linux串口编程

在嵌入式应用领域中,串口是最为常见的一种硬件通信接口。因为其具备协议简单,硬件电路精简等优势使得串口基本成为MCU、计算机或嵌入式产品的标配接口。本文仅介绍在Linux系统下串口编程需要使用的API和一些应用技巧,关于串口的背景知识介绍,以及Windows系统下串口编程读者可以移步至其他文章。

Linux系统下串口的操作主要分为如下部分:

  • 串口打开、关闭
  • 串口参数设置
  • 串口数据发送与接收
  • 串口MODEM信号设置与读取
  • 串口Break信号发送

可以熟练掌握并应用以上串口功能已经可以应对Linux系统上串口应用的大多数场景了,针对更高级的串口用法可以阅读《Linux串口编程-进阶篇》,包含Linux系统使用非标准波特率、同步等待Modem信号变化、串口参数VTIME和VMIN的作用、RS485串口功能开关等。为方便用户使用我们将以上串口操作均封装成了独立的函数,可以极大的节约开发时间。

Note:

  • devname 参数为设备绝对路径,如:”/dev/ttyUSB0″
  • O_NOCTTY标志用于通知系统,这个程序不会成为对应这个设备的控制终端。如果没有指定这个标志,那么任何一个输入(如SIGINT等)都将会影响用户的进程;
  • O_NDELAY标志与O_NONBLOCK 等效,但这里不仅仅是设置为非阻塞,还用于通知系统,这个程序不关心 DCD 信号线所处的状态(即与设备相连的另一端是否激活或者停止)。如果用户指定了这一标志,则进程将会一直处在休眠状态,直到 DCD 信号线被激活;

常规串口参数的设置可以通过上述功能进行设置,说明更详细。

[En]

The settings of conventional serial port parameters can be set by the above function, and the notes are more detailed.

包括 串口波特率、数据位、停止位、硬件流控设置等。

MODEM输出信号包括DTR和RTS信号,这2个信号可以由串口应用进行控制,常用于下载或IO控制等。

针对TTL/CMOS串口,DTR和RTS无效时为高电平,有效时为高电平。

MODEM输出信号包括DSR、CTS、DCD和RI信号,这4个信号可以由串口应用主动读取其有效状态,常用于状态指示或同步等。

针对TTL/CMOS串口,DSR、CTS、DCD和RI无效时为高电平,有效时为高电平。

串口Break信号在一些特定场景下会使用到,针对TTL/CMOS串口而言,串口Break是指串口的TXD保持一定时间的低电平。常见于一些实验仪器需要使用Break信号作为有效的开始信号。需要注意:tcsendbreak的第二个参数填0,表示串口TXD持续低电平0.25s~0.5s,如果参数为非0值,则持续参数中指定的时间。

Original: https://www.cnblogs.com/WCH-SoftGroup/p/16516309.html
Author: WCH_SoftGroup
Title: Linux串口编程

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/523020/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球