一、概念
1.特点
串行接口 (Serial Interface) 是指数据一位一位地顺序传送,其特点是通信线路简单,只要一对传输线就可以实现双向通信(可以直接利用电话线作为传输线),从而大大降低了成本,特别适用于远距离通信,但传送速度较慢。
一条信息的各位数据被逐位 按顺序传送的通讯方式称为串行通讯。
串行通讯的特点是:
- 数据位的传送,按位顺序进行,最少只需一根传输线即可完成;
- 成本低但传送速度慢。串行通讯的距离可以从几米到几千米;
- 根据信息的传送方向,串行通讯可以进一步分为单工、半双工和全双工三种。
2.接口标准
3.串口通信协议
4.linux串口调试工具minicom
5.串口通信流程
二、串口内部
1.结构体
最基本的设置串口包括波特率设置,效验位和停止位设置。
串口的设置主要是设置struct termios
结构体的各成员值。
struct termio
{ unsigned short c_iflag; /* 输入模式标志 */
unsigned short c_oflag; /* 输出模式标志 */
unsigned short c_cflag; /* 控制模式标志*/
unsigned short c_lflag; /* local mode flags */
unsigned char c_line; /* line discipline */
unsigned char c_cc[NCC]; /* control characters */
};
2.串口控制函数
tcgetattr 取属性(termios结构)
tcsetattr 设置属性(termios结构)
tcdrain 等待所有输出都被传输
tcflow 挂起传输或接收
tcflush 刷清未决输入和/或输出
tcsendbreak 送BREAK字符
tcgetpgrp 得到前台进程组ID
tcsetpgrp 设置前台进程组ID
cfgetispeed 得到输入速度
cfgetospeed 得到输出速度
cfsetispeed 设置输入速度
cfsetospeed 设置输出速度