linux之UART

概述

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即可从中读取数据。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Linux中的UART是一种串口通信接口,用于在计算机和外部设备之间进行数据传输。在Linux中,可以通过打开串口设备文件(如/dev/ttyS0)来进行串口通信。可以使用open函数打开串口设备文件,并使用相应的参数(如O_RDWR、O_NOCTTY、O_NDELAY)来配置串口的工作方式。其中,O_NOCTTY表示程序不会成为串口的控制终端,O_NDELAY表示程序不关心DCD信号线的状态。接下来,可以使用相应的寄存器(如ULCONn、UCONx、UBRDIVn)来设置串口的传输格式、时钟源和波特率等参数。ULCONn寄存器用于设置传输格式,UCONx寄存器用于选择UART时钟源和设置中断方式,UBRDIVn寄存器用于设置比特率。通过配置这些寄存器,可以实现对串口的控制和数据传输。 #### 引用[.reference_title] - *1* *3* [linux之UART](https://blog.csdn.net/pengliang528/article/details/79847817)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Linux串口UART编程--C语言](https://blog.csdn.net/leumber/article/details/80105295)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值