什么是接口
在嵌入式系统中,接口是指用于将各种集成电路与其他外围设备交互连接的通信通路或总线,是微处理器cpu与外部世界的连接部件,是cpu与外界进行信息交换的中转站。
为什么要在cpu与外设之间设置接口?在cpu与外设之间设置接口主要有4个原因:
1. cpu与外设二者的信号不兼容,包括信号线的功能定义、逻辑定义和时序关系。
2. cpu与外设的速度不匹配,cpu的速度快,外设的速度慢。
3. 若不通过接口,而由cpu直接对外设的操作实施控制,会使cpu处于穷于应付与外设打交道之中,大大降低cpu的效率。
4. 若外设直接由cpu控制,会使外设的硬件结构依赖于cpu,对外设本身的发展不利。
►►►
常见接口介绍
01
uart接口
通用异步收发传输器(universal asynchronous receiver-transmitter),通常称作uart,是一种全双工异步收发传输器,是电脑硬件的一部分。将数据在串行通信与并行通信间作传输转换,作为并行输入成为串行输出的芯片,通常集成于其它通讯接口的连结上。
uart最好的一点是它只使用两根线就可以在设备之间传输数据。在uart通信中,两个uart直接相互通信。发送uart将来自cpu等控制设备的并行数据转换为串行形式,并将其串行发送到接收uart上,接收uart然后将串行数据转换回接收设备的并行数据。在两个uart之间传输数据只需要两根线。数据从发送uart的tx引脚流向接收uart的rx引脚:如下图1
图 1 uart通信连接图
uart通信协议数据流描述如下:
(1)起始位:先发出—个逻辑“0”的信号,表示传输字符的开始。
(2)数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ascii码。
(3)奇偶校验位:数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
(4)停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平,停止位个数越多,数据传输越稳定,但是数据传输速度也越慢。
(5)空闲位:处于逻辑“1”状态,表示当前线路上没有数据传送。
(6)波特率:数据传输的速率。有以下几个档位: 300、600、1200、2400、4800、9600、19200、38400、43000、56000、57600、115200。在数据传输和接收双方,需要预先统—波特率,以便正确的传输数据。数据传输过程如下图2
图 2 uart协议数据流
uart通信原理:
发送数据过程:空闲状态,线路处于高电位,当收到发送数据指令后,拉低线路一个数据位的时间t,接着数据按低位到高位依次发送,数据发送完毕后,接着发送奇偶校验位和停止位(停止位为高电位),一帧数据发送结束。
接收数据过程:空闲状态,线路处于高电位;当检测到线路的下降沿(线路电位由高电位变为低电位)时说明线路有数据传输,按照约定的波特率从低位到高位接收数据,数据接收完毕后,接着接收并比较奇偶校验位是否正确,如果正确则通知后续设备准备接收数据或存入缓存。
在嵌入式设计中,uart用于主机与辅助设备通信,如汽车音响与外接ap之间的通信,与pc机通信包括与监控调试器和其他器件,如eeprom通信。在ble蓝牙模块中,uart透传几乎成为一个标配功能,串口透传蓝牙模块使用起来极其方便,开发人员不需要了解蓝牙协议栈是如何实现的,只需使用串口蓝牙模块就可以轻松开发蓝牙无线传输产品。深圳信驰达科技作为一家无线物联网模块厂商,提供基于ti cc264x、silicons labs efr32bg22、nordic nrf52832等方案的蓝牙串口透传模块,支持ble 4.2/5.0协议,具有工业级、小尺寸、低功耗的特点,可以帮助用户以最低的成本和最快的速度开发蓝牙应用。
02
i2c接口
i2c (inter integrated circuit)总线是飞利浦(philips)公司开发的两线式串行、半双工的总线,主要用于近距离、低速的芯片之间的通信。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小等优点。
i2c可在多个主站和多个从站之间仅使用两条线路传输信息,即sda(串行数据)和scl(串行时钟)。串行的8位双向数据传输速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4mbit/s。设备连接如图3
图 3 i2c总线主从设备连接
i2c通信协议工作原理:
i2c总线在进行数据传送时,时钟线scl为低电平期间发送器向数据线上发送一位数据,在此期间数据线上的信号允许发生变化,时钟线scl为高电平期间接收器从数据线上读取一位数据,在此期间数据线上的信号不允许发生变化,必须保持稳定。同步数据信号如下图4
图 4 同步数据信号
起始信号:scl线为高电平期间,sda线由高电平向低电平的变化表示起始信号。
终止信号:scl线为高电平期间,sda线由低电平向高电平的变化表示终止信号。
起始信号和停止信号都是由主机发出,起始信号产生后总线处于占用状态,停止信号产生后总线被释放,处于空闲状态。
空闲时,scl与sda都是高电平。过程如下图5
图 5 起始信号与终止信号
应答信号:出现在1个字节传输完成之后,即第9个scl时钟周期内,此时主机需要释放sda总线,把总线控制权交给从机,由于上拉电阻的作用,此时总线为高电平,如果从机正确的收到了主机发来的数据,会把sda拉低,表示应答响应。
非应答信号:当第9个scl时钟周期时,sda保持高电平,表示非应答信号。
每一个字节必须保证是8位长度。数据传送时,先传送最高位(msb),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位))。如果一段时间内没有收到从机的应答信号,则自动认为从机己正确接收到数据,主机就发送停止信号结束此次通信。数据传输格式如图6所示。
图 6 数据传输格式
i2c通常用于单片机外设或多个单片机之间通讯,i2c接口具有硬件简单、软件编程容易等特点。
03
usb接口
usb的英文全称为universal serial bus,中文是通用串行总线,它是一种快速双向的同步传输并可以进行热拔插的串行接口。
usb接口使用方便,它可以连接多个不同的设备,而过去的串口和并口只能接一个设备。速度快是usb技术的突出特点之一。全速usb接口的最高传输率可达12mb/s,比串口快了整整100倍,而执行usb 2.0标准的高速usb接口速率更是达到了480mb/s,最新的usb 3.1支持高达10gb/s的传输速率,usb发展历程如表所示。
表 1 usb发展历程
图 7 usb实物图
usb总线作为一种高速串行总线,它具有支持即插即用和热插拔功能、传送速度较快、使用方便、成本也相对低廉等特点,是近年来最流行的外围设备接口。usb接口技术被广泛地应用于计算机与外设的数据传输,尤其是仪表、仪器等便携式设备通常都采用usb接口。
04
spi接口
spi是serial peripheral interface的缩写,顾名思义就是串行外围设备接口。spi接口主要应用在eeprom、flash、实时时钟、ad转换器、还有数字信号处理器和数字信号解码器之间。
spi是一种高速全双工同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为pcb的布局上节省空间,提供方便。
它有四条主线,如下所述:
mosl -主输出从输入,用于将数据从主设备传输到从设备。
miso-主输入从输出,用于将数据从从设备传输到主设备。
sclk-串行时钟,它是主站输出的时钟,用于同步。
ss/cs-从设备选择,主设备使用它从多个从设备中选择一个从设备。它插入低电平有效信号以选择特定的从器件。设备连接如图8
图 8 spi主从设备连接
spi数据传输在一个spi时钟周期内,会完成如下操作:
1) 主机通过mosi线发送1位数据,从机通过该线读取这1位数据;
2) 从机通过miso线发送1位数据,主机通过该线读取这1位数据。
这是通过移位寄存器来实现的。主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。数据传输如图9
图 9 spi数据传输
在spi操作中,最重要的两项设置就是时钟极性(cpol)和时钟相位(cpha)。时钟极性设置时钟空闲时的电平,时钟相位设置读取数据和发送数据的时钟沿。
主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。所以为了保证主从机通信正确,应使得它们的spi具有相同的时钟极性和时钟相位。
如果cpol=0,串行同步时钟的空闲状态为低电平;
如果cpol=1,串行同步时钟的空闲状态为高电平。
如果cpha=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;
如果cpha=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。
spi主模块和与之通信的外设时钟相位和极性应该一致。下图为4种模式下的通信过程图。
图 10 cpol=0,cpha=0
图 11 cpol=0,cpha=1
图 12 cpol=1,cpha=0
图 13 cpol=1,cpha=1
spi接口主要应用在eeprom、flash、实时时钟、网络控制器、lcd显示驱动器、ad转换器,数字信号处理器、数字信号解码器等设备之间。
05
adc接口
在仪器仪表系统中,常常需要将检测到的连续变化的模拟量如:温度、压力、流量、速度、光强等转变成离散的数字量,才能输入到计算机中进行处理。这些模拟量通过传感器转变成电信号(一般为电压信号),经过放大器放大后,就需要经过一定的处理变成数字量。实现模拟量到数字量转变的设备通常称为模数转换器(adc),简称a/d。
a/d转换的过程是采样、保持、量化、编码的过程,构成adc的基本思想是将输入的模拟电压与基准电压相比较(直接或间接比较),转换成数字量输出。在adc中,有并联比较型、逐次逼近型、双积分三种adc。
使用adc时最关心的是转换精度和转换时间。转换精度受芯片外部影响的因素主要有:电源电压和参考电压的稳定度、运算放大器的稳定性、环境温度等,受芯片本身影响因素有:分辨率、量化误差、相对误差、线性误差等。
采样、保持:所谓采样就是将一个时间上连续变化的模拟量转化为时间上离散变化的模拟量。将采样结果储存起来,直到下次采样,这个过程叫做保持。
量化、编码:模拟信号通过adc转换成数字信号的这一过程称为量化,由于量化输出的数字信号位数有限,所以输出的数字信号和采样得到的模拟信号会有一个误差,称为量化误差,对于一个n位adc来说,假设其满量程电压为vref,vref被adc分为2n个区间,区间宽度用lsb表示lsb=vref/2n。
06
can总线接口
can总线全称controller area network,中文名控制器局域网络。是一种串行、同步、半双工的总线。由德国bosch公司开发的,是国际上应用最广泛的现场总线之一。
can总线主要特点如下:
► 两根信号线,差分信号。
► 最高速率可达到1mbps。
► can控制器内建了强大的检错和处理机制,容错能力强。
► 一帧can消息最多传输8字节用户数据。
► 具有总线仲裁机制,可以组建多主系统。
can通信协议如下:
can一共规定了5种类型的帧,帧也称为报文。数据帧在can通信中最主要,也最复杂。数据帧以一个显性位(逻辑0)开始,以7个连续的隐性位(逻辑1)结束。
载波侦听(csma):总线上的每一个节点在企图发送报文前,必须要监听总线,当总线处于空闲时,才可以发送。
仲裁(cd amp):通过预定编程好的报文优先级逐位仲裁来解决碰撞,报文优先级位于每个报文的标识域。更高级别优先级标识的报文总是能获得总线访问权,即:标识符中最后保持逻辑高电平的会继续传输,因为它具有更高的优先级。
图 14 can总线数据帧结构
标准can:只有11位标识符,用来确定报文的优先级,此域的数值越小,优先级越高。如图15
图 15 标准can-11位标识符
扩展can:具有29位标识符。如图16
图 16 扩展can-29位标识符
can总线在工控领域主要使用低速can 即iso11898-3标准,在汽车领域中使用125kbps的高速can。can协议广泛用于所有类型的汽车行业应用,包括乘用车、重型货车和多用途车辆以及农用车辆。
深圳市信驰达科技有限公司(rf-star)是一家专注于射频通信方案的高科技公司,2010年即获得美国ti德州仪器公司的认证,是其低功耗无线通信芯片的授权开发商。该公司提供物联网无线模块和完整应用方案,包括ble、wi-fi、wi-sun、lora、zigbee、thread等。欲了解更多信息,请访问公司网站www.szrfstar.com或关注微信公众号“信驰达科技”,购买样品请在淘宝app上搜索“信驰达科技”进入官方店铺购买。