如何在linux上使用串口设备

如何在linux上使用串口设备,第1张

简单的运行 dmesg 命令

$ dmesg | grep tty

输出:

[ 37.531286] serial8250: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[ 37.531841] 00:0b: ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A

[ 37.532138] 0000:04:00.3: ttyS1 at I/O 0x1020 (irq = 18) is a 16550A

setserial 命令

setserial 是一个程序用于设定并/或报告某个串口关联的配置信息。该信息包括串口用到的I/O 端口和中断号,以及Break键是否应被解释为Secure Attention Key 等等。 仅仅是输出如下的命令:

$ setserial -g /dev/ttyS[0123]

输出:

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4

/dev/ttyS1, UART: 16550A, Port: 0x1020, IRQ: 18

/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4

/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

带-g选项的setserial帮助找到你的Linux板子上的物理串口。

Linux 串口控制台程序

一旦串口被确定了,你就能使用许多的工具来配置Linux板子:

minicom- 用于控制modem和连接到dump 设备的最好的串口通信程序。

wvidial or other GUI dial up networking program - 一个内建智能PPP 拨号器。

getty / agetty - agetty 打开一个 tty 端口, 提示登录名称并调用 /bin/login 命令。

grub / lilo configuration - 配置串口为系统控制台。

首先,如果我们不是开发串口driver的,而只是用串口来传入自己定义格式的数据,然后根据得到的数据做相关的解释,我们需要设置这些,

options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG) /*Input*/

options.c_oflag &= ~OPOST /*Output*/

然后就是重点,如何设置software flow control,因为自己定义的数据格式中,一般会有标识标识数据开始和结束,如何定义,请看下面:

/* open soft flow control */

options.c_iflag |= (IXON | IXOFF | IXANY)

/* flow start with 0x11, end with 0x13 */

options.c_cc[VSTART] = 0x11

options.c_cc[VSTOP] = 0x13

这样,你往串口发送数据时,串口就会认出0x11和0x13之间的数据了。当然,如果你传输的不是ascii,你得控制数据中不会出现0x11和0x13。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7324161.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-04
下一篇 2023-04-04

发表评论

登录后才能评论

评论列表(0条)

保存