我们知道任何一个设备都有它的外围接口,比如我们拷贝文件需要用U盘通过USB口进行操作,我们的电脑连接因特网时需要根网线通过RJ45网口进行连接;设备的内部CPU与FLASH、外围器件等交互时需要通过各种总线来完成。今天我们就来浅谈一下关于Linux系统的的常用接口与总线,其中主要包括RS-232、RJ45、I²C、SPI、USB等等。
以太网网口(RJ45)、串口(RS-232)
以太网口以太网口是由媒体接入控制器和物理接口收发器构成,传输协议符合IEEE802.3以太网标准协议以实现数据链路层。目前接入的速度最高可达1000Mbit/s。它的数据流主要是CPU通过数据、地址、控制总线控制媒体接入控制器(MAC)控制器,MAC通过MII接口与物理接口收发器(PHY)进行通信,这些通信的串行信号通过以太网隔离变压器给到RJ45来实现数据流的传送。
串口对于串口来讲,我们大家都很熟悉了,因为它不管在任何一台电子设备上都是必备的。最简单的串口可以只连接RxD、TxD、SG等这三根信号线。同样的串口的通信是CPU通过数据、地址、控制总线控制通用异步接收发送器(UART),由于UART发出的信号是TTL/CMOS电平此时需要外围接入电平转换芯片,然后才能经电平信号转换成RS-232的电平。
I²C、SPI、USB
I²C总线是由Philips公司推出的两线制串行总线,主要由数据线SDA和时钟线SCL组成。数据线上的数据传输内容是根据时钟的频率实现的。
SPI是另一种串行接口,它比I²C多了两根线。它是由串行时钟(SCLK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)、从机选择线(SS)等组成。它与外围设备进行数据交换的时候是根据时钟极性(CPOL)和相位(CPHA)进行设置的。
usb是应用最广泛的通用串行总线,从最早的USB1.1到USB2.0再到USB3.0的发展。它的组成主要有电源线、地线、一对差分线(D+、D-)。我们只需掌握它的常用的数据传输方式即可,主要有控制、同步、中断、批量等传输方式。
对于Linux而言任何一种总线,都有它的底层驱动程序,就像Windows一样,当我们安装完系统之后需要安装相应的驱动程序。Linux主要对这几种总线的驱动进行了封装,修改他们的配置需要在arch/arm/mach-xxx或者arch/arm/boot/dts等文件修改。这几种常用总线的函数如下
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』