linux-usart串口的使用记录

linux下,查询可用的串口的信息如下

root@NanoPi2:~# ls /proc/tty/driver/                                           
ttyAMA     usbserial 
root@NanoPi2:~# cat /proc/tty/driver/ttyAMA                                     
serinfo:1.0 driver revision:                                                    
0: uart:PL011 rev3 mmio:0xC00A1000 irq:7 tx:701 rx:38 RTS|DTR                   
1: uart:PL011 rev3 mmio:0xC00A0000 irq:6 tx:0 rx:0 DSR|CD                       
2: uart:PL011 rev3 mmio:0xC00A3000 irq:9 tx:0 rx:0                              
3: uart:PL011 rev3 mmio:0xC006D000 irq:10 tx:0 rx:0 
fa@NanoPi2:~/Desktop$ ls /dev/ttyAMA
ttyAMA0  ttyAMA1  ttyAMA2  ttyAMA3

找到对应的ttyAMA*串口,将UARTn_TXD,UARTn_RXD用线连接起来做下回循测试(就是自发自收),

串口的操作函数主要在termios.h中,下面是读取串口并显示接收到的信息。
编译完成后执行下,在另一端口使用echo msg > /dev/ttyAMAn向串口写信息(msg),这时执行程序会回显msg信息。

#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <termios.h>
#define USART_DEV "/dev/ttyAMA2"
void main(void)
{
        int fd = -1;
        fd = open(USART_DEV,O_RDWR|O_NOCTTY|O_NDELAY);
        if(-1==fd)
                return;
        printf("open %s success.\n",USART_DEV);
        struct termios opt;
        tcgetattr(fd,&opt);
        opt.c_cflag = B115200 | CS8 | CLOCAL | CREAD;
        opt.c_iflag = IGNPAR;
        opt.c_oflag = 0;
        opt.c_lflag = 0;
        opt.c_cc[VTIME] = 0;
        opt.c_cc[VMIN] = 1;
        tcflush(fd,TCIFLUSH);
        tcsetattr(fd,TCSANOW,&opt);
        unsigned char rx_buffer[512];
        while(1)
        {
                memset(rx_buffer,0,sizeof(rx_buffer));
                int len = read(fd,(void*)rx_buffer,sizeof(rx_buffer));
                if(len > 0 && strcmp(rx_buffer,"") )
                {
                        printf("%d bytes read:%s\n",len,rx_buffer);
                }
        }
        close(fd);
        return;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值