串行通信概述:
常用的数据通信数据方式有并行和串行通信两种。当两台设备之间传输距离较远时,数据通信往往以串行方式传输。
串行通信的数据是一位一位地进行传输的,在传输中每一位数据都占据一个固定的时间长度。
串行通信具有传输线少,成本低等优点,适合远距离传送。
串行通信模式:单工,半双工,全双工。
单工:数据仅能从设备A到设备B进行单一方向的传输。
半双工:数据可以从设备A到设备B进行传输,也可以从设备B到设备A传输,但不能再同一时刻进行双向传输。
全双工:数据可以再同一时刻从设备A传输到设备B,或从设备B传输到设备A。
串行通信方式:同步通信和异步通信两种
异步方式:数据一帧一帧传送,每帧数据包含有起始位,数据位,奇偶校验位和停止位。每帧数据的传送靠起始位来同步。
一帧数据的各位代码间的时间间隔是固定的,而相邻两帧的数据其时间间隔是不固定的。在异步通信的数据传送中,传输线上允许空字符。
异步通信对字符的格式,波特率,校验位有确定的要求。
同步方式:同步传输采用字符块的方式传送,减少每一个字符的平均控制和错误检测数据位,因而具有较高的传输速率。
同步通信不仅在字符的本身之前是同步的,而且在字符与字符之间的时序仍然是同步的,即同步方式是将许多的字符聚集成一字符块后,
在每块信息之前加入1-2个同步字符,字符块之后再加入
适当的错误检测数据后才传输出去。同步通信时必须连续传输,不允许有间隙,在传输线上没有数据传输时,要发送专用的空闲字符或同步字符。
在同步方式中产生一种所谓的“冗余”字符,防止错误传送。
假设欲传输的数据被当做一个被除数。而发送器本身产生一个固定的除数。将前者除以后者所得的余数即为该“冗余”字符。
当数据和“冗余”字符被一起传送到接收器时,接收器产生和发送器相同的除数,如此即可检车出数据在传送过程中是否发生了错误。
RS-232串行接口介绍:
RS-232是美国电子工业协会EIA制定的一种串行通信接口标准。RS-232通常以正负12V的电压来驱动信号线,
TTL标准与RS-232标准之间的电平转换电路通常采用集成电路芯片实现如MAX232等。
EIA制定的RS-232接口与外界的相连采用25芯(DB-25)和9芯(DB-9)D型插接件,实际应用中,并不是每个引脚都必须用到。
RS-232 DB-9各引脚功能如下:
CD:载波检测。主要用于Modem通知计算机其处于在线状态,即Modem检测到拨号音。
RXD:接收数据线,用于接收外部设备送来的数据。
TXD:发送数据线,用于将计算机的数据线发送给外部设备。
DTR: 数据终端就绪,当次引脚高电平时,通知Modem可以进行数据传输,计算机已经准备好了。
SG:信号地
DSR:数据设备就绪,次引脚为高电平时,通知计算机Modem已经准备,可以进行数据通信。
RTS:请求发送。此引脚由计算机来控制,用以通知Modem马上传输数据至计算机,否则Modem将收到的数据暂时放入缓冲区中。
CTS:清除发送,此引脚由Modem控制,用以通知计算机将要传送的数据送至Modem。
RI:振玲提示。Modem通知计算机有呼叫进来。是否接听呼叫由计算机决定。
计算机利用RS-232接口进行串行通信,有简单连接和完全连接两种接线方式。简单连接又称三线连接,
即只连发送数据线,接收数据线和信号地。如果应用中需要使用RS-232的控制信号,则需采用完全连接。
RS-422串行通信接口:
RS-422标准是RS-232的改进型,RS-422全称为“平衡电压数字接口电路的电气特性”。允许在相同传输线上连接多个接收设备节点。最多可接10各。
即一个主设备,10个从设备。从设备之间不能通行。
RS-422支持一点对多点的双向通信。
RS-485串行总线接口:
在RS-422的基础上。为扩展应用范围,EIA定制了RS-485标准,增加了多点,双向通行能力。RS-485可以连接多达32个设备。
RS-485满足所有RS-422的规范,所以RS-485的驱动器可以在RS-422网络中应用。
UART介绍:
UART(通用异步收发器)主要由数据线接口,控制逻辑,配置寄存器,波特率发生器,发送部分和接收部分组成。采用异步串行同行方式,
采用RS-232 9芯接插件连接,是广泛使用的串行数据传输方式。
UART以字符为单位进行数据传输,每个字符的传输中包括起始位(低电平,线路空闲时为高电平),5-8位数据位,校验位(可选)和停止位。
通过起始位和停止位来实现字符的同步。
ARM9中的UART可运行于中断模式或DMA模式。UART可以产生中断请求或DMA请求。波特率发生器的时钟可以由PCLK或UEXTCLK提供,
发送器和接收器包含16字节的FIFO缓冲寄存器和数据一位寄存器。发送时,数据被写入FIFO,然后拷贝到发送移位寄存器然后数据通过
发送数据引脚TXD被发送出去。接收时,接收到的数据从接收引脚RxD移入,然后从移位器拷贝到FIFO中。
ARM中的UART操作:
数据发送:
发送的数据帧是可编程的。可通过控制寄存器设置数据格式。发送器还可以产生暂停状态,在一帧发送器件连续输出“0”,
在当前发送的字发送完成后发出暂停信号。暂停信号发出后(暂停信号发出使能位会被自动清零),
可继续发送数据到TX FIFO(发送保持寄存器在非FIFO模式)。
数据接收:
接收的数据帧也是可编程的。接收器可以检测溢出错误和帧错误。溢出错误时指新数据在旧数据还没有被读出之前就将其覆盖了。
这错误是指接收的数据没有有效的停止位。
自动流控:
ARM9中使用nRTS和nCTS信号支持自动流控(AFC)。在AFC状态下,nRTS根据接收器的状态和nCTS信号控制发送器的操作。
只有当nCTS信号是有效时(AFC状态下,nCTS有效表示其他UART的FIFO已经准备好接收数据),UART的发送器才发送在FIFO中的数据。
在UART接收数据之前,只要其接收FIFO具有多余2字节的空闲空间时,nRTS有效(表示自己现在可以就收数据)。否则nRTS无效.
RS-232接口
如果用户希望将UART连接到Moder接口,则需要使用nRTS,nCTS,nDSR,nDTR,nRI等信号。
该状态下用户可以使用通用的I/O接口来软件仿真这些控制信号。因为AFC不支持RS-232接口
中断DMA请求产生:
ARM9的每个UART有5个状态信号:溢出错误,帧错误,接收缓冲数据准备好,发送缓冲空和发送移位器空。这些状态课通过相关的状态寄存器指示。
溢出错误和帧错误指示接收数据时发生的错误状态。如果控制寄存器UOCNn中的接收错误状态中断使能位置1,
那么溢出错误和帧错误的任何一个都可以产生接收错误状态中断请求。当检测到接收错误状态中断请求时,
可以通过读UERSTSTn的值来确定引起请求的信号。
如果控制寄存器UCONn中的接收模式置为中断请求模式或查询模式。那么在FIFO模式,当接收器将移位器中的数据传送到接收FIFO寄存器中,
并且接收的数量达到RxFIFO的触发水平时,产生Rx中断。在非FIFO模式,如果采用中断请求和查询模式,
当把接收移位器中的数据传送到接收保持寄存器中时,将产生Rx中断。如果控制寄存器UCONn中的发送模式为中断请求模式或查询模式,
那么在FIFO模式,当发送器将发送FIFO寄存器中的数据传送到发送移位器中并且发送FIFO中剩余的发送数据量达到TxFIFO的触发水平时,
则产生Tx中断。在非FIFO模式下,如果采用中断请求或查询模式,当把发送保持寄存器中的数据传送到发送移位器时,将产生Tx中断。
如果在控制寄存器中的接收模式和发送模式选择了DMA请求模式,那么在上面提到的情况下将产生DMA请求而不是Rx或Tx中断。
波特率的产生:
每个UART的波特率发生器为发送器和接收器提供连续的时钟。波特率发生器的时钟可以选择使用ARM内部的系统时钟或UEXTCLK。
通过设置UCONn的时钟选择位可以选择不同的分频值。
回送模式:
ARM提供的一种测试模式,用于发现通信连接中的孤立错误。这种模式在结构上使UART的RXD和TXD连接。因此发送的数据通过RXD被自己接收。
I2C接口:
2C总线是Philips公司推出的二线制串行扩展总线,用于连接微控制器及其外围设备。
I2C总线是具备总线仲裁和高低速设备同步等功能的高性能多主机总线,直接用导线连接设备,通信时无需片选信号。
I2C总线上只需要两条线串行数据线SDA和串行时钟线SCL,他们用于总线上期间之间的信息传递。
SDA和SCL都是双向的。每个期间都有一个唯一的地址以供识别,而且各器件都可以作为一个发送器或接收器。
I2C总线的启动和停止信号:
当I2C接口处于从模式时,要想数据传输,必须检测SDA线上的启动信号,启动信号由主器件产生。SCL信号为高时,
SDA产生一个高到低的电平变化,即产生一个启动信号。当I2C总线上产生了启动信号后,那么这条总线就被发出启动信号的主器件占用了,
变成“忙”状态。
在SCL信号为高时,SDA产生一个由低电平到高电平的电平变化,即产生了停止信号。停止信号也由主器件产生,
作用是停止与某个从器件之间的数据传输。当I2C总线上产生了一个停止信号后,那么在几个时钟周期之后总线就被释放,变成“空闲”状态。
主器件产生一个启动信号后,它还会立即送出一个从地址,用来通知将与它进行数据通信的从器件。
1个字节的地址包括7位的地址信息和1位的传输方向指示位,如果第7位为0则表示一个写操作,如果为1则表示一个读操作。
数据传输格式:
SDA线上传输的每个字节长度都是8位,每次传输中字节的数量是没有限制的。在起始条件后面的第一个字节是地址域,
之后每个传输传输的字节后面都有一个应答位(ACK)。传输中串行数据的高位先发送。
应答信号:
为了完成一个字节的传输操作,接收器应该在接受完一个字节之后发送ACK信号到发送器,告诉发送器,已经收到了这个字节。
ACK脉冲信号SCL线上第9个时钟处发出。当发送器要接受ACK信号时,应该释放SDA线,即将SDA线置高。接收器在接受完前面八位数据后,
将SDA线拉低。
发送器探测到SDA线为低,就认为接收器成功接受了前面8为数据。
总线竞争的仲裁:
I2C总线上可以挂接有多个器件,有时会发生两个或多个主期间同时想占用总线的情况。I2C总线具有多主控能力,
可对发生在SDA线上的总线竞争进行仲裁,器原则是:当多个主器件同时想占用总线时,如果某个
主器件发送高电平,而另一个主器件发送低电平,则发送电平与此时SDA总线电平不符的那个器件将自动关闭其输出。
总线竞争仲裁是在两个层次上进行的,首先是地址位的比较,如果主器件寻址同一个从器件,则进入数据位的比较,从而确保了竞争仲裁的可靠性。
I2C总线的数据传输过程:
开始:主设备产生启动信号,表明数据传输开始。
地址:主设备发送地址信息,包含7位的从设备地址和1位的数据方向指示位
数据:根据指示位数据在主设备和从设备之间进行传输。数据一般以8位传输,最高位先传送。
接收器在每接收到一个字节后发送一位的ACK应答信号。传输过程中可以被中止和重新开始。
停止:主设备产生停止信号,结束数据传输。
USB接口:
USB(通用串行总线)是连接计算机与外围设备的几外总线。
USB总线的主要性能特点:
1热即插即用:
USB提供机箱外的热即插即用功能,连接外设不必在打开机箱,也不必关闭主机电源,USB可以智能的识别USB链上外围设备的动态插入活拆除,
具有自动配置和重新配置外设的能力。连接外设简单。
2可连接多个外部设备:
每个USB系统中有个主机,USB总线采用“级联”方式可连接多个外部设备。
每个USB设备用一个USB插头连接到上一个USB设备的USB插座上,而起本身又提供一或多个USB插座供下一个或多个USB设备连接使用。
这种多重连接通过集线器(HUB)来实现。整个USB网络中最多可连接127个设备,支持多个设备同时操作
3可同时支持同步异步传输和不同速率的设备:
4较强的纠错能力:
USB系统可实施地管理设备插拔,在USB协议中包含了传输错误管理,错误恢复等功能,同时根据不同的传输类型来处理传输错误。
5低成本的电缆和连接器:
USB采用统一的4引脚插头和一根四芯的电缆传送信号的电源,电缆长度可达5m
6总线供电:
USB总线可为连接在其上的设备提供5V电压/100mA电流供电,最大可提供500mA的电流。USB设备也可采用自供电方式。
USB系统结构:
一个USB系统可以由USB主机,USB设备和USB互连3部分来描述。
1:USB设备:
USB设备分为Hub(集线器)和Function(功能)两大类。Hub提供到USB的附加连接点,
Function为主机系统提供附加的性能。实际上Function就是可发送和接受USB数据的,可实现某种功能的USB设备。USB设备应具有标准的USB接口。
2:USB主机:
在任何一个USB系统中只有一个主机,到主计算机系统的USB接口被称作主控制器。
中控制器可采用硬件,固件或软件想结合的方式来实现,与HUB集成在主机系统内,向上与中线相连,向下可提供一或多个连接点。
3:USB互连:
USB互连是指USB设备与主机的连接和通信方式,它包括总线拓扑结构,内层关系,数据流模型和USB调度表。
总线协议:
USB是一种查询总线。由主控制器启动所有的数据传输,USB上所挂接的外设通过由主机调度的基于令牌环的协议来共享USB带宽。
大部分总线事物设计3个包的传输,当主控制器按计划地发出一个描述事物类型和方向,USB设备地址和端点号的USB包时,
就开始发起一个事务,这个包称作“令牌包”,它只是总线上要执行什么事务,欲寻址的USB设备及数据传送方向。
然后事务源发送一个数据包,或者指示它没有数据要传送。最后,目标一般还要用一个只是传输是否成功的握手包来响应。
主机与设备端点之间的USB数据传输模型被称作管道。管道有流和消息两种类型。消息数据具有USB定义的结构,而流数据没有。
管道与数据带宽,传输服务类型,端点特性有关。当USB设备被配置时,大多数管道就形成了。一旦设备加电,
总是形成一个被称作默认控制管道的消息管道,以便提供对设备配置,状态控制信息的访问。
事务调度表允许对某些流管道进行流量控制,在硬件级,通过使用NAK(否认)握手信号来调节数据传输率,以防止缓冲区上溢或下溢产生。
当被否认时,一旦总线时间可用会重试该总线事务。流量控制机制允许灵活的进行调度,一适应异类混合管道的同时服务,
因此,可以在不同的时间间隔,用不同规模的包为多个流管道服务。
健壮性:
使用差分驱动器和接收器以及屏蔽保护,以保证信号的完整性。
控制域和数据域的CRC保护校验
连接和断开检测及系统资源配置
协议的自我修复,对丢失包或毁坏包执行超时处理
对流数据进行流量控制,以保证对等步和硬件缓冲器维持正常的管理
采用流数据管道和控制管道结构,以保证功能之间的独立性
协议允许用硬件或软件的方法对错误进行处理,硬件错误处理包括对传输错误的报告和重发。
ARM9中的USB控制器:
ARM9芯片内包含有USB主机控制器和USB设备控制器。
USB主机控制器:支持两通道USB主机接口,兼容OHCI1.0规范,兼容USB1.1规范,具有两个向下数据流通道,支持低速和高速USB设备。
USB设备控制器:具有集成的USB收发器,批量传输的DMA接口,5个带FIFO的端口。可采用中断或者DMA方式。
SPI接口:
SPI(串行外围设备接口)是由Motorla公司开发的一个低成本,易使用的接口,主要用在微控制器和外围设备芯片之间进行连接。
SPI接口可以用来连接存储器,A/D转换器,D/A转换器,LCD驱动器,传感器等。
SPI是一个4线接口,主要使用4个信号:主机输出/从机输入MOSI,主机输入/从机输出MISO,串行SCLK或SCK,外设芯片片选。
与标准的串行接口不同,SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,这个同步时钟信号由主机(处理器)产生,
接受数据的外设(从设备)使用时钟来对串行比特流的接收进行同步化。可以将多个具有SPI接口的芯片连接到主机的同一个SPI接口上,
主机通过控制从设备的片选引脚来选择接收数据的从设备。
微处理器通过SPI接口与外设进行连接,主机和外设都包含一个串移位为寄存器,主机写入一个字节到它的SPI串行寄存器,
SPI寄存器是通过MOSI信号线将字节传送给外设。外设也可以将自己移位寄存器中的内容通过MISO信号线传送给主机。
外设也可以将自己移位寄存器中的内容通过MISO信号线传送给主机。外设的写操作和读操作是同步完成的,
主机和外设的两个移位寄存器中的内容被互相交换。
如果只是进行写操作,主机只需忽略收到的字节,反过来,如果主机要读取外设的一个字节,就必须发送一个空字节来出发从机的数据传输。
根据时钟极性和时钟相位的不同,SPI有4个工作模式。时钟极性有高电平,低电平两种。时钟极性为低电平时,
空闲时时钟SCK处于低电平,传输时跳转到高电平。时钟极性为高电平时,空闲时时钟处于高电平,传输时跳转到低电平。
时钟相位有两个:时钟相位0和时钟相位1.对于时钟相位0,如果时钟极性是低电平,MOSI和MISO输出在SCK的上升沿有效。
如果时钟电平极性为高,对于始终相位0,这些输出在SCK的下降沿有效。
ARM9中有两个串行外围设备接口SPI,具有8位预分频逻辑,查询,中断和DMA传送模式。
在每个SPI口都有两个分别用于发送和接收的8位移位寄存器,在一次SPI通信中,数据被同步发送(串行移出)和接收(串行移入).如果只想发送,
接收到的是一些虚拟的数据,如果只想接收,发送的数据也可以是一些虚拟的‘1’。
I2S接口:
数字音频集成电路通信总线(I2S)是Philip公司提出的音频总线协议,它是一种串行的数据音频总线协议,
是音频数据的编码或解码的常用串行音频数字接口。
I2S总线只处理声音数据,其他控制信号等则需要单独提供。
I2S总线使用3根串行总线:
提供分时复用功能的SD线(串行数据线),WS线(字段选择-声道选择)和SCK线(连续时钟信号)
数据的发送方和接受方需要采用相同的时钟信号来控制数据传输,数据传输方必须产生字段选择信号,时钟信号和需要传输的数据信号。
在一个复杂的数字音频系统中,可能会有多个发送方和接受方,通常采用系统主控制模式,
主控制模块控制数字音频数据在不同集成电路(设备)间的传输,
数据发送方就需要在主控制模块的协调下发送数据。
串行数据传输:
串行数据的传输由时钟信号同步控制,且串行数据线上每次传输一个字节的数据。当音频数据被数字化成二进制流后,
传输时先将数据分成字节,每个字节的数据传输从最高位开始,当接收放和发送方的数据字段宽度不一样时,发送方不考虑接收方的数据字段宽度。
如果发送方发送的数据字段宽度小于系统字段宽度,就在低位补0,如果发送方的数据宽度大于接受方的宽度,则超过LSB的部分被截断。
字段选择:
音频系统一般包含左右两个声道,字段选择WS用来选择左声道或者右声道,WS=0表示选择左声道,WS=1表示选择右声道。
如果不在外部加以控制,WS会在MSB传输前的一个时钟周期发生变化,使数据接收方和发送方保持同步。
此外,WS能让接受设备存储前一个字节,并且准备接受下一个字节。
时钟信号:
在I2S总线中,任何一个能产生时钟信号的电路都可以称为主设备,从设备从外部时钟输入得到时钟信号。
I2S的规范中规定了一系列关于时钟信号频率和延时的限制。
ARM9中的I2S接口:
ARM中的I2S总线接口是用来连接外部的标准编解码器(CODEC)的接口。ARM9提供了一个I2S总线接口,
能用来连接一个外部8/16位立体声音频CODEC,支持I2S总线数据格式和MSB-justified数据格式。
该接口对FIFO的访问提供DMA传输模式而不是采用中断模式。它可以同时发送数据和接受数据,也可以只发送或只接受数据。
在只发送和只接收模式下ARM9的I2S总线接口有3种工作方式。
1正常传输方式:
正常传输方式中,对于发送和接收FIFO,I2S控制寄存器有一个FIFO就绪标志位。
当FIFO准备发送数据时,如果发送FIFO不空,则FIFO就绪标志位为1,如果发送FIFO为空,该标志为0.在接受数据时,
当FIFO是不满时,FIFO就绪标志位为1,指示
可以接收数据,若接受FIFO满,则该标志为0,通过FIFO就绪标志位,可以确定CPU读/写FIFO的时间。
2DMA传输方式:
在DMA传输方式,利用DMA控制器来控制发送和接受FIFO的数据存取,由FIFO就绪标志来自动请求DMA的服务。
3发送和接收方式:
在发送和接收,I2S总线接口可以同时发送和接收数据。
ARM9中I2S总线接口内部模块:
BRFC:表示总线接口,寄存器区和状态机。总线接口逻辑和FIFO访问由状态机控制。
IPSR:表示两个5位的前置分频器IPSR_A和IPSR_B,一个前置分频器作为I2S总线接口的主时钟发生器,
另一个前置分频器作为外部CODEC的时钟发生器。
TxFIFO和RxFIFO:表示两个64字节的FIFO,在发送数据时,数据写到TxFIFO中,在接受数据时数据从RxFIFO中读取。
SCLKG:表示主IISCLK发生器。在主设模式时,由主时钟产生串行位时钟。
CHNC:表示通道发生器和状态机,通道状态机用于产生和控制IISCLK和IISLRCK。
SFTR:表示16位移位寄存器。在发送模式时,并行数据移入SFTR并转换成串行数据输出,
在接收模式时,串行数据移入SFTR并转换成并行数据输出。
I2S总线接口的启动与停止:
启动I2S操作需要执行如下过程:
1:允许IISFCON寄存器的FIFO
2:允许IISFCON寄存器的DMA请求
3:允许IISFCON寄存器的启动。
结束I2S操作,需要执行如下过程:
1:禁止IISFCON寄存器的FIFO,如果还想发送FIFO的剩余数据,跳过这一步。
2:禁止IISFCON寄存器的DMA请求
3:禁止IISFCON寄存器的启动
阅读(5289) | 评论(0) | 转发(2) |