linux之UART

本文介绍了Linux下UART的原理,包括UART的结构、波特率计算、相关寄存器及通信流程。UART是一种串行数据传输协议,常用于设备间的简单通信。在S3C2440中,UART包含三个端口,可通过中断或DMA方式传输数据,并具有FIFO功能。软件操作涉及初始化设置,如波特率、传输格式和工作模式,以及中断服务函数的配置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

linux下设备分几种:

    1.协议类:UART,I2C,SPI,NAND,LCD

    2.类似内存的接口:NOR,SDRAM,网卡

    针对协议类设备,那么需要满足2个要求:

    1.双方约定信号的协议

    2.双方满足时序的要求

一.UART原理简介

        通用异步收发器简称UART,即Universal Asynchronous Receiver/Transmitter,用来传输串行数据,发送数据时,CPU将并行数据写入UART,UART按照一定格式在TxD线上串行发出;接收数据时,UART检测到RxD线上的信号,将串行收集放到缓冲区中,CPU即可读取UART获得的这些数据。

        UART最精简的连线形式只有3根线,TXD用于发送,RXD用于接收,GND用于提供参考电平。UART之间以帧作为数据传输单位,帧由具有完整意义的若干位组成,它包含开始位、数据位、校验位和停止位。发送数据之前,互相通信的UART之间要约定好数据传输速率(波特率的倒数)、数据的传输格式(多少个数据位、是否使用校验位、奇校验还是偶校验、多少个停止位)

        S3C2440提供了三个UART端口,它们都可以通过查询、中断和DMA方式传输数据,而且每个UART都分别有一个64个字节的接收FIFO和一个64个字节的发送FIFO。UART由波特率发生器、发送器、接收器和控制逻辑组成,使用系统时钟可以达115.2Kbit/s。如果使用UEXTCLK引脚提供的外部时钟,则可以达到更高的波特率,波特率可以通过编程进行控制。UART的结构示意图如下所示:


UART的工作原理是:当发送数据时,CPU先将数据写入发送FIFO中,然后UART会自动将FIFO中的数据复制到“发送移位器”中,发送移位器将数据一位一位(先发最低位)地发送到TXDn数据线上(根据设定的格式、插入开始位。校验位和停止位)。接收数据时,“接收移位器”将RXDn数据线上的数据一位一位(同样是先发最低位)接收进来,然后复制到接收FIFO中,CPU即可从中读取数据。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值