Openharmony南向研究—Linux驱动框架-串口


Openharmony南向研究—Linux驱动框架-串口

文章插图
?
驱动开发 -串口和串行总线基本知识一般情况下,设备间的通信方式可以划分为串行通行方式和并行通信方式两种 。在linux字符设备、块设备、网络设备分类方式下,该外设分类划分于字符设备当中 。本章节主要指导基于LINUX驱动完成串口驱动开发并调用串口与USB接口与外设完成有效通信 。
串行通信的分类按照数据传输方向按照数据传输的方向可以划分为 单工,半双工和全双工 。单工通信允许数据在同一方向上进行传输,半双工则允许数据双向传输但是在同一时刻仅允许一个方向的数据传输吗,不需要独立的接收端和放松端,两者可以合并使用相同端口 。全双工通信则包含两个方向上的同时传输,全双工通信是两个半双工的通信方式的拼接,从而完成的独立接收端和发送端 。
Openharmony南向研究—Linux驱动框架-串口

文章插图
按照通信方式而按照通信方式的不同,可以划分为同步通信和异步通信两种,同步通信是需要带时钟信号进行互相时钟同步从而解析电平信号的,如SPI,IIC,而异步通信是无需时钟同步信号的,如UART等 。
在同步通讯中,收发设备的上方会使用一根信号线传输信号,在时钟信号的驱动下双方进行数据的同步,通常会在收发两端规定在时钟信号的上升沿和下降沿对数据线进行采样 。
在异步通讯中,不适用时钟信号进行数据同步,直接在数据信号中穿插一些用于数据同步的信号位,或通过指定数据协议进行数据打包,以数据帧的方式传输数据,通讯中需要约束传输速率波特率,常见波特率有 4800 9600 115200等 。
UART连接方式存在两个引脚:
  • RX接收引脚
  • TX发送引脚

Openharmony南向研究—Linux驱动框架-串口

文章插图
在连接时如图,两个芯片的GND引脚共地 。
按照电平标准在嵌入式开发领域通常描述串口按照电平标准划分由USB设备,RS485,RS-422,D-USB接口为主流的差分电平信号,双端电平信号包括LVDS,LVPECL等 。另外一类是单片机上使用为主的单端信号,其传输电平标准为TTL,RS-232,CMOS等 。普通单端信号无法连接差分信号,如上文中描述的Tx,Rx 传输的TTL电平信号无法连接LVDS信号,在使用时需要使用到转换模块 。
本文中将会以讲解USB接口在Linux驱动中的使用,以及一些单端信号的使用为主 。
在标准系统使用的开发板上包括了RS-485和USB2.0,USB3.0接口 。
单端信号 UART单端UART全称 通用异步收发传输器,是一种串行异步收发协议 。UART的工作原理是将数据的二进制格式数据帧一位一位进行传输,在UART中使用TTL电平为主,在阈值电平以上规定为高电平1,阈值电平以下规定为低电平0.
关于串口传输速率: bps就是比特每秒,115200bps就是每秒传输115200比特(115200bit),1kb=1024bit 。注意,大写的B表示字节,1[Byte]=8bit 。或者说1B=8b.所以115200bps=每秒112.5kb=每秒14.0625kB 。
USB接口 USB,是英文Universal Serial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规范电脑与的连接和通讯 。是应用在[PC]领域的接口技术 。
USB的电源线是5V,为USB设备提供最大500mA的电流,它与数据线上的电平无关,数据线是差分信号,通常D+和D-在+400mV~-400mV间变化,在传统的单端(Single-ended)通信中,一条线路来传输一个比特位 。高电平表示1,低电平表示0 。倘若在数据传输过程中受到干扰,高低电平信号完全可能因此产生突破临界值的大幅度扰动,一旦高电平或低电平信号超出临界值,信号就会出错 。在差分传输电路中,输出电平为正电压时表示逻辑“1”,输出负电压时表示逻辑“0”,而输出“0”电压是没有意义的,它既不代表“1”,也不代表“0” 。而差分通信中,干扰信号会同时进入相邻的两条信号线中,在信号接收端,两个相同的干扰信号分别进入差分放大器的两个反相输入端后,输出电压为0 。所以说,差分信号技术对干扰信号具有很强的免疫力 。对于串行传输来说,LVDS能够低于外来干扰;而对于并行传输来说,LVDS可以不仅能够抵御外来干扰,还能够抵御数据传输线之间的串扰 。因为上述原因,实际电路中只要使用低压差分信号(Low Voltage Differential Signal,LVDS),350mV左右的振幅便能满足近距离传输的要求 。假定负载电阻为100Ω,采用LVDS方式传输数据时,如果双绞线长度为10m,传输速率可达400 Mbps;当电缆长度增加到20m时,速率降为100 Mbps;而当电缆长度为100m时,速率只能达到10 Mbps左右 。


推荐阅读