uart参数详细说明

一、串口应用编程

串口编写应用的流程,引用链接的图片:
在这里插入图片描述

二、设置校验位

校验相关的宏

PARENB:是否启用校验
PARODD:是否启用奇校验,不起用奇校验即使用偶校验
CSTOPB:是否启用space/mark校验,如果启用,结合PARODD确定校验位置1或置0

CSTOPB:置位表示使用2位停止位,否则1位

无校验

options.c_cflag &= ~PARENB
options.c_cflag &= ~CSTOPB

奇偶校验

奇校验

options.c_cflag |= PARENB;
options.c_cflag &= ~CSTOPB
options.c_cflag |= PARODD

偶校验

options.c_cflag |= PARENB
options.c_cflag &= ~CSTOPB
options.c_cflag &= ~PARODD

伪装方式实现space和mark校验

使用停止位总为1的特性,实现mark校验(待补充)

space和mark校验(需要内核支持)

Linux串口通讯(mark, space校验方式的实现)

space校验

options.c_cflag |= PARENB;
options.c_cflag |= CMSPAR;
options.c_cflag &= ~PARODD;

mark校验

options.c_cflag |= PARENB;
options.c_cflag |= CMSPAR;
options.c_cflag |= PARODD;

设置数据位

# 这里为什么要先清CSIZE?先清除其他标志,然后才设置位数
opt.c_cflag &= ~CSIZE;
# 设置数据位为8位,也可以是 CS5,CS6,CS7
opt.c_cflag |= CS8;

三、VMIN和VTIME

VMIN:[0-255]
VTIME:[0-255]
VMIN =0,VTIME=0:读不到数据,read立即返回。
VMIN!=0,VTIME=0:读到VMIN个数据才返回,否则阻塞等待。
VMIN!=0,VTIME!=0:读到VMIN个数据,或者从进入read后读第一个数据VTIME时间,任一满足返回,单位为0.1S。没有数据会阻塞。
VMIN=0,VTIME!=0:读不到数据,read阻塞vtime时间返回

串口VMIN VTIME 详解

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值