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