如何在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 - 配置串口为系统控制台。

,简单实用。

没用中断,

#include <reg52.h>

#define uchar unsigned char

#define uint unsigned int

uchar idata w[]="I Like You! " //数据定义

void delay(uchar)

void main(void)

{

uchar count

TMOD=0X20 //工作在方式2

TL1=0xfd //T1波特率9600bps

TH1=0xfd //串行工作在方式3

SCON=0xd8

TR1=1 //启动T1

while(1)

{

count=0

while(*(w+count)) //判断一串数据是否结束

{

SBUF=*(w+count) //发送数据

while(TI==0) //查询发送是否结束

TI=0 //清除发送一标志位

count++ //准备发送一个数据

}

delay(100)

}

}

void delay(uchar times) //延时子程序

{

uchar i

while(times--)

for(i=0i<120i++){}

}

另外,站长团上有产品团购,便宜有保证

Linux系统通过这两个号唯一的确定一个驱动实例。

一个实际存在的串口只能够存在一个驱动实例。大多数的驱动实例只支持单一现成的读写 *** 作,所以不允许多个程序同时打开设备文件,典型的一种就是串口,它只允许一个程序打开。

一个驱动实例对应一组唯一的主设备号和次设备号,多个设备节点可以指向同一组设备号。

下面是结论:

不论如何更改ttyS0,串口只能打开一次。

可以通过简单的cp /dev/ttyS0 /dev/ttyS4将设备节点的名称复制为/dev/ttyS4,或者使用mv命令对名称进行修改,但是不能改变串口只能打开一次的状况。


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

原文地址:https://54852.com/yw/8289561.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存