各种串口SPI&UART&I2C&CAN&RS232比较!

各种串口SPI&UART&I2C&CAN&RS232比较!

I2C,SPI,UART 和CAN 的区别

SPI--Serial Peripheral Interface,(Serial Peripheral Interface:串行外设接口)串行外围
设备接口,是Motorola 公司推出的一种同步串行通讯方式,是一种三线同步总线,因其硬
件功能很强,与 SPI 有关的软件就相当简单,使CPU 有更多的时间处理其他事务。
I2C--INTER-IC(INTER IC BUS:意为IC 之间总线)串行总线的缩写,是PHILIPS 公司推出
的芯片间串行传输总线。它以1 根串行数据线(SDA)和1 根串行时钟线(SCL)实 现了
双工的同步数据传输。具有接口线少,控制方式简化,器件封装形式小,通信速率较高等优
点。在主从通信中,可以有多个I2C 总线器件同时接到I2C 总线 上,通过地址来识别通信
对象。
能用于替代标准的并行总线,能连接的各种集成电路和功能模块。I2C 是多主控总线,所以
任何一个设备都能像主控器一样工作,并控制总线。总线上每一个设备 都有一个独一无二
的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。多路微控制器能在
同一个I2C 总线上共存。
最主要的优点是其简单性和有效性。它支持多主控(multimastering), 其中任何能够进行
发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在
任何时间点上只能有一个主控。
UART(Universal Asynchronous Receiver Transmitter:通用异步收发器):单端,远距离
传输。大多数计算机包含两个基于RS232 的串口。串口同时也是仪器仪表设备通用的通信
协议;很 多GPIB 兼容的设备也带有RS-232 口。同时,串口通信协议也可以用于获取远
程采集设备的数据。串口通信的概念非常简单,串口按位(bit)发送和接 收字节。尽管比
按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接
收数据。它很简单并且能够实现远距离通信。比如 IEEE488 定义并行通行状态时,规定设
备线总常不得超过20 米,并且任意两个设备间的长度不得超过2 米;而对于串口而言,长
度可达1200 米。
区别在电气信号线上:
SPI 总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入
(SDI)。 SPI 总线可以实现 多个SPI 设备互相连接。提供SPI 串行时钟的SPI 设备为SPI
主机或主设备(Master),其他设备为SPI 从机或从设备(Slave)。主从设备 间可以实现全双
工通信,当有多个从设备时,还可以增加一条从设备选择线。
如果用通用IO 口模拟SPI 总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口
则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需
输出口即可,若只实现从设备,则只需输入口即可。
I2C 总线是双向、两线(SCL、SDA)、串行、多主控(multi-master)接口标准,具有
总线仲裁机制,非常适合在器件之间进行近距离、非经常性的数据通信。在它的协议体系中,
传输数据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO 口模拟I2C 总线,并实现双向传输,则需一个输入输出口(SDA),另外还
需一个输出口(SCL)。(注:I2C 资料了解得比较少,这里的描述可能很不完备)
UART 总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特
率产栺器(产栺的波特率等于传输波特率的16 倍)、UART 接收器、UART 发送器组成,硬
件上由两根线,一根用于发送,一根用于接收。
显然,如果用通用IO 口模拟UART 总线,则需一个输入口,一个输出口。
从以上很明显可以看出,SPI 和UART 可以实现全双工,但I2C 不行;
第四,看看牛人们的意见吧!
A:I2C 线更少,我觉得比UART、SPI 更为强大,但是技术上也更加麻烦些,因为I2C
需要有双向IO 的支持,而且使用上拉电阻,我觉得抗干扰能力较 弱,一般用于同一板卡
上芯片之间的通信,较少用于远距离通信。SPI 实现要简单一些,UART 需要固定的波特率,
就是说两位数据的间隔要相等,而SPI 则 无所谓,因为它是有时钟的协议。
B:I2C 的速度比SPI 慢一点,协议比SPI 复杂一点,但是连线也比标准的SPI 要少。
SPI 是一种允许一个主设备启动一个与从设备的同步通讯的协议,从而完成数据的交换。
也就是SPI 是一种规定好的通讯方式。这种通信方式的优点是占用端口较少, 一般4 根就
够基本通讯了。同时传输速度也很高。一般来说要求主设备要有SPI 控制器(但可用模拟方
式),就可以与基于SPI 的芯片通讯了。
SPI 的通信原理很简单,它需要至少4 根线,事实上3 根也可以。也是所有基于SPI 的
设备共有的,它们是SDI(数据输入),SDO(数据输出),SCK(时 钟),CS(片选)。
其中CS 是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电
位或低电位),对此芯片的操作才有效。这就允许 在同一总线上连接多个SPI 设备成为可
能。
接下来就负责通讯的3 根线了。通讯是通过数据交换完成的,这里先要知道SPI 是串行
通讯协议,也就是说数据是一位一位的传输的。这就是SCK 时钟线存在的 原 因,由SCK
提供时钟脉冲,SDI,SDO 则基于此脉冲完成数据传输。数据输出通过SDO 线,数据在时
钟上沿或下沿时改变,在紧接着的下沿或上沿被读取。 完成一位数据传输,输入也使用同
样原理。这样,在至少8 次时钟信号的改变(上沿和下沿为一次),就可以完成8 位数据
的传输。
要注意的是,SCK 信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于
SPI 的设备中,至少有一个主控设备。
这样传输的特点:这样的传输方式有一个优点,与普通的串行通讯不同,普通的串行通
讯一次连续传送至少8 位数据,而SPI 允许数据一位一位的传送,甚至允许 暂停,因为SCK
时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备
通过对SCK 时钟线的控制可以完成对通讯的控制。
SPI 还是一个数据交换协议:因为SPI 的数据输入和输出线独立,所以允许同时完成数
据的输入和输出。
不同的SPI 设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号
上沿或下沿采集有不同定义,具体请参考相关器件的文档。
I2C
• 只要求两条总线线路:一条串行数据线SDA 一条串行时钟线SCL
• 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机从机关系软件设
定地址主机可以作为主机发送器或主机接收器
• 它是一个真正的多主机总线如果两个或更多主机同时初始化数据传输可以通过冲突检测
和仲裁,防止数据被破坏
• 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达
400kbit/s 高速模式下可达3.4Mbit/s
• 片上的滤波器可以滤去总线数据线上的毛刺波保证数据完整
• 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制
UART
UART 总线是异步串口,因此一般比前两种同步串口的结构要复杂很多,一般由波特率产栺
器(产栺的波特率等于传输波特率的16 倍)、UART 接收器、UART 发送器组成,硬件上由
两根线,一根用于发送,一根用于接收。
显然,如果用通用IO 口模拟UART 总线,则需一个输入口,一个输出口。
UART 常用于控制计算机与串行设备的芯片。有一点要注意的是,它提供了RS-232C 数据
终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C 接口的串行设备通信
了。
明显可以看出,SPI 和UART 可以实现全双工,但I2C 不行。
什么是CAN 总线?
CAN 全称为Controller Area Network,即控制器局域网,由德国Bosch 公司最先提出,
是国际上应用最广泛的现场总线之一。CAN 是一种多主方式的串行通讯总线,基本设计规
范要求有高的位速率、高抗电磁干扰性,而且要能够检测出总线的任何错误。当信号传输距
离达10Km 时CAN 仍可提供高达50Kbit/s 的数据传输速率。CAN 具有十分优越的特点:
A、较低的成本与极高的总线利用率;
B、 数据传输距离可长达10Km,传输速率可高达1Mbit/s;
C、可靠的错误处理和检错机制,发送的信息遭到破坏后可自动重发;
D、节点在错误严重的情况下具有自动退出总线的功能;
E、报文不包含源地址或目标地址仅用标志符来指示功能信息和优先级信息;
由于人为、自然、其它外界环境的影响和人们对公交系统的安全可靠性、真实、实时性的追
求,使得我们对通信方式,通信设备有了更高的要求,基于CAN 总线的网络则成为我们最
佳的选择
CAN 总线
现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的
出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有 力的技术支持。
CAN(Controller Area Network)属于现场总线的范畴,它是一种有效支持分布式控制或实
时控制的串行通信网络。较之目前许多RS-485 基于R 线构建的分布式控制系统而 言, 基
于CAN 总线的分布式控制系统在以下方面具有明显的优越性:
首先,CAN 控制器工作于多主方式,网络中的各节点都可根据总线访问优先权(取决于
报文标识符)采用无损结构的逐位仲裁的方式竞争向总线发送数据,且 CAN 协议废除了站
地址编码,而代之以对通信数据进行编码,这可使不同的节点同时接收到相同的数据,这些
特点使得CAN 总线构成的网络各节点之间的数据通 信实时性强,并且容易构成冗余结构,
提高系统的可靠性和系统的灵活性。而利用RS-485 只能构成主从式结构系统,通信方式也
只能以主站轮询的方式进行, 系统的实时性、可靠性较差;
其次,CAN 总线通过CAN 控制器接口芯片82C250 的两个输出端CANH 和CANL 与
物理总线相连,而CANH 端的状态只能是高电平或悬浮状 态,CANL 端只能是低电平或悬
浮状态。这就保证不会出现象在RS-485 网络中,当系统有错误,出现多节点同时向总线发
送数据时,导致总线呈现短路,从 而损坏某些节点的现象。而且CAN 节点在错误严重的
情况下具有自动关闭输出功能,以使总线上其他节点的操作不受影响,从而保证不会出现象
在网络中,因个别 节点出现问题,使得总线处于“死锁”状态。
而且,CAN 具有的完善的通信协议可由CAN 控制器芯片及其接口芯片来实现,从而大
大降低系统开发难度,缩短了开发周期,这些是只仅仅有电气协议的RS- 485 所无法比拟
的。另外,与其它现场总线比较而言,CAN 总线是具有通信速率高、容易实现、且性价比
高等诸多特点的一种已形成国际标准的现场总线。这些 也是目前 CAN 总线应用于众多领
域,具有强劲的市场竞争力的重要原因。
CAN (Controller Area Network)即控制器局域网络,属于工业现场总线的范畴。与一
般的通信总线相比,CAN 总线的数据通信具有突出的可靠性、实时性和灵活性。由于其良
好 的性能及独特的设计,CAN 总线越来越受到人们的重视。它在汽车领域上的应用是最广
泛的,世界上一些著名的汽车制造厂商,如BENZ(奔驰)、BMW(宝 马)、PORSCHE(保时
捷)、ROLLS-ROYCE(劳斯莱斯)和JAGUAR(美洲豹)等都采用了CAN 总线来实现汽车内部
控制系统与各检测和执 行机构间的数据通信。同时,由于CAN 总线本身的特点,其应用
范围目前已不再局限于汽车行业,而向自动控制、航空航天、航海、过程工业、机械工业、
纺织机 械、农用机械、机器人、数控机床、医疗器械及传感器等领域发展。CAN 已经形成
国际标准,并已被公认为几种最有前途的现场总线之一。其典型的应用协议有: SAE
J1939/ISO11783、CANOpen、CANaerospace、DeviceNet、NMEA 2000 等。
什么是CAN 总线?
CAN 意为Controller Area Network 的缩写,意为控制区域网络。是国际上流行的现场总
线中的一种。是一种特别适合于组建互连的设备网络系统或子系统。
2. CAN 总线特点?
l CAN 是到目前为止为数不多的有国际标准的现场总线
l CAN 通讯距离最大是10 公里(设速率为5Kbps),或最大通信速率为1Mbps(设通信距离
为40 米)。
CAN 总线上的节点数可达110 个。通信介质可在双绞线,同轴电缆,光纤中选择。
CAN 采用非破坏性的总线仲裁技术,当多个节点同时发送数据时,优先级低的节点会
主动退出发送,高优先级的节点可继续发送,节省总线仲裁时间。
CAN 是多主方式工作,网上的任一节点均可在任意时刻主动地向网络上其他节点发送
信息。
CAN 采用报文识别符识别网络上的节点,从而把节点分成不同的优先级,高优先级的节点
享有传送报文的优先权。
报文是短帧结构,短的传送时间使其受干扰概率低,CAN 有很好的效验机制,这些都保证
了CAN 通信的可靠性。
-------------------------------------------------------------------------------
SPI 通常有SCK 时钟,STB 片选,DATA 数据信号三个信号。 I2C 通常有 SDA 数据和SCL
时钟两个信号。
SPI:Motorola 推出的同步串行通讯方式,三线同步总线,硬件强大,软件相对简单,cpu
有更多时间处理其他事务。SCK 时钟,STB 片选,DATA 数据信号三信号。多了一个片选
信号
I2C:PHilips 推出的串行总线,一根SDA 串行数据线,一根串行时钟线SCL。按照地址来计
算的
-------------------------------------------------------------------------------
UART
Universival Asychronous Receiver/Transmitter(通用异步串行口),UART 是一种较为
通用的数据传输的方法(即Start Bit+Data+Check+StopBit),而COM 口中Rx、Tx
的数据格式即为UART。UART 和RS232 是两种异步数据传输标准.计算机 中的COM1 和
COM2 都是RS232 串行通信标准接口。当Uart 接口连到PC 机上时,需要接RS232 电平
转换电路。
UART 使用发送数据线TXD 和接收数据线RXD 来传送数据,接收和发送可以单独进行也可
以同时进行。它传送数据的格式有严格的规定,每个数据以相同的位 串形式传送,每个串
行数据由起始位,数据位,奇偶校验位和停止位组成。从起始位到停止位结束的时间称为一
帧(frame),即一个字符的完整通信格式。
SPI
Serial Perheral Interface,是一种全双工同步串行接口标准,串行通信的双方用四根线进
行通信,这四根连线分别是:片选信号,I/O 时钟,串行输入,串行输出,这 种接口的特
点是快速,高效,并且操作起来比I2C 要简单一些,接线也比较简单,TLC2543 提供SPI
接口。
I2C
Inter-Integrated Circuit(集成电路之间), I2C 总线是一种由PHILIPS 公司开发的两线
式双向串行总线,用于连接微控制器及其外围设备。I2C 总线产栺于在80 年代,最初为音
频和视频设备开 发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如
管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风
扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管
理。I2C 属于两线式串行总线,它由数据线SDA 和时钟SCL 构成的 串行总线,可发送和
接收数据。在CPU 与被控IC 之间、IC 与IC 之间进行双向传送,最高传送速率100kbps。
各种被控制电路均并联在这条总线上,但 就像电话机一样只有拨通各自的号码才能工作,
所以每个电路和模块都有唯一的地址,在信息的传输过程中,IC2 总线上并接的每一模块电
路既是主控器(或被控 器),又是发送器(或接收器),这取决于它所要完成的功能。CPU
发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确
定 控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,
各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
CAN
Controller Area Network(区域网络控制器),CAN 全称为Controller Area Network,
即控制器局域网,由德国Bosch 公司最先提出,是国际上应用最广泛的现场总线之一。CAN
是一种多主方式的串行通讯总线,基本设计规范要求有高的位速率、高抗电磁干扰性,而且
要能够检测出总线的任何错误。当信号传输距离达10Km 时CAN 仍可提供高达50Kbit/s
的数据传输速率。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计
算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数 据通信提供了强
有力的技术支持。CAN 属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的
串行通信网络。较之目前许多RS-485 基于R 线构建 的分布式控制系统而言, 基于CAN
总线的分布式控制系统具有明显的优越性。
RS232 与RS485,422 的基本区别
一、RS232:
一般用于计算机9 针串口或25 针串口。
1、电平定义:
RS-232c 电平有时也成为串口电平,采用对地负逻辑表示,
逻辑1:-15V ~ -3V
逻辑0:+3V ~ +15V
2、引脚定义图:
图一 串口引脚定义图
3、信号电平转换
(1)、232 <-> TTL
平时应用中,在单片机与计算机通信时,时常应用MAX232,它是双通道的信号转换芯片,
使信号在TTL 和232 信号间相互转换。
下面是典型的串口连接图:
图二 MAX232 典型连接图
4、通信方式
RS232 可做到双向传输,全双工通讯,最高传输速率 20kbps
二、RS485 与RS422:
RS485 与RS422 均采用差分平衡传输的方式,所以他们的电平方式,一般采用A、B 引脚
的方式。
1、电平定义:
以U = A - B 的电压值为划分依据
发送端:
逻辑1:+2V ~ +6V
逻辑0:-6V ~ -2V
接收端:
逻辑1:>= 200mv
逻辑0:<= -200mv
2、信号电平转换
(1)、485 <-> TTL
在单片机设计系统中,常把信号电平在TTL 与485 之间转换,已获得良好的传输质量,并
使MCU 更好的处理信号。
下面是典型的RS485 芯片75LBC184 的连线图:
图三 75LBC184 典型连接图
3、通信方式
RS422 可做到单向传输,半双工通讯,最高传输速率 10Mbps
RS485 可做到双向传输,半双工通讯, 最高传输速率 10Mbps
SPI I2C 具体工作原理
1.关与总线:
1.1SPI 总线:
SPI:高速同步串行口。3~4 线接口,收发独立、可同步进行.
SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可
以使MCU 与各种外围设备以串行方式进行通信以交换信息。外围设置FLASHRAM、网络
控制器、LCD 显示驱动器、A/D 转换器和MCU 等。SPI 总线系统可直接与各个厂家栺产的
多种标准外围器件直接接口,该接口一般使用4 条线:串行时钟线(SCK)、主机输入/从
机输出数据线MISO、主机输出/从机输入数据线MOST 和低电平有效的从机选择线SS(有
的SPI 接口芯片带有中断信号线INT 或INT、有的SPI 接口芯片没有主机输出/从机输入数
据线MOSI)。
II
SPI: Software Process Improvement. 软件过程改进。是软件企业项目过程质量的改进,
CMM,ISO9000-3 说的就是这个。
一 SPI 协议概括
SPI,是英语Serial Peripheral interface 的缩写,顾名思义就是串行外围设备接口。是
Motorola 首先在其MC68HCXX 系列处理器上定义的。SPI 接口主要应用在 EEPROM,
FLASH,实时时钟,AD 转换器,还有数字信号处理器和数字信号解码器之间。SPI,是一
种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管
脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来
越多的芯片集成了这种通信协议,比如AT91RM9200.
SPI 的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设
备,需要至少4 根线,事实上3 根也可以(单向传输时)。也是所有基于SPI 的设备共有
的,它们是SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)。
(1)SDO – 主设备数据输出,从设备数据输入
(2)SDI – 主设备数据输入,从设备数据输出
(3)SCLK – 时钟信号,由主设备产栺
(4)CS – 从设备使能信号,由主设备控制
其中CS 是控制芯片是否被选中的,也就是说只有片选信号为预先规定的使能信号时(高电
位或低电位),对此芯片的操作才有效。这就允许在同一总线上连接多个SPI 设备成为可能。
接下来就负责通讯的3 根线了。通讯是通过数据交换完成的,这里先要知道SPI 是串行通
讯协议,也就是说数据是一位一位的传输的。这就是SCK 时钟线存在的原因,由SCK 提供
时钟脉冲,SDI,SDO 则基于此脉冲完成数据传输。数据输出通过 SDO 线,数据在时钟上
升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用
同样原理。这样,在至少8 次时钟信号的改变(上沿和下沿为一次),就可以完成8 位数
据的传输。
要注意的是,SCK 信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI
的设备中,至少有一个主控设备。这样传输的特点:这样的传输方式有一个优点,与普通的
串行通讯不同,普通的串行通讯一次连续传送至少8 位数据,而SPI 允许数据一位一位的
传送,甚至允许暂停,因为SCK 时钟线由主控设备控制,当没有时钟跳变时,从设备不采
集或传送数据。也就是说,主设备通过对SCK 时钟线的控制可以完成对通讯的控制。SPI
还是一个数据交换协议:因为SPI 的数据输入和输出线独立,所以允许同时完成数据的输入
和输出。不同的SPI 设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟
信号上沿或下沿采集有不同定义,具体请参考相关器件的文档。
在点对点的通信中,SPI 接口不需要进行寻址操作,且为全双工通信,显得简单高效。在多
个从设备的系统中,每个从设备需要独立的使能信号,硬件上比I2C 系统要稍微复杂一些。
最后,SPI 接口的一个缺点:没有指定的流控制,没有应答机制确认是否接收到数据。
AT91RM9200 的SPI 接口主要由4 个引脚构成:SPICLK、MOSI、MISO 及 /SS,其中SPICLK
是整个SPI 总线的公用时钟,MOSI、MISO 作为主机,从机的输入输出的标志,MOSI 是
主机的输出,从机的输入,MISO 是主机的输入,从机的输出。/SS 是从机的标志管脚,在
互相通信的两个SPI 总线的器件,/SS 管脚的电平低的是从机,相反/SS 管脚的电平高的是
主机。在一个SPI 通信系统中,必须有主机。SPI 总线可以配置成单主单从,单主多从,互
为主从。
SPI 的片选可以扩充选择16 个外设,这时PCS 输出=NPCS,说NPCS0~3 接4-16 译码器,
这个译码器是需要外接4-16 译码器,译码器的输入为NPCS0~3,输出用于16 个外设的
选择。
二 SPI 协议举例
SPI 是一个环形总线结构,由ss(cs)、sck、sdi、sdo 构成,其时序其实很简单,主要是
在sck 的控制下,两个双向移位寄存器进行数据交换。
假设下面的8 位寄存器装的是待发送的数据10101010,上升沿发送、下降沿接收、
高位先发送。
那么第一个上升沿来的时候 数据将会是sdo=1;寄存器=0101010x。下降沿到来的
时候,sdi 上的电平将所存到寄存器中去,那么这时寄存器=0101010sdi,这样在 8 个时
钟脉冲以后,两个寄存器的内容互相交换一次。这样就完成里一个spi 时序。
举例:
假设主机和从机初始化就绪:并且主机的sbuff=0xaa,从机的sbuff=0x55,下面将
分步对spi 的8 个时钟周期的数据情况演示一遍:假设上升沿发送数据
这样就完成了两个寄存器8 位的交换,上面的上表示上升沿、下表示下降沿,sdi、sdo 相
对于主机而言的。其中ss 引脚作为主机的时候,从机可以把它拉底被动选为从机,作为从
机的是时候,可以作为片选脚用。根据以上分析,一个完整的传送周期是16 位,即两个字
节,因为,首先主机要发送命令过去,然后从机根据主机的命令准备数据,主机在下一个8
位时钟周期才把数据读回来。 SPI 总线是Motorola 公司推出的三线同步接口,同步
串行3 线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;
用于CPU 与各种外围器件进行全双工、同步串行通讯。SPI 主要特点有:可以同时发出和接
收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束 中断标志;写冲突保护;
总线竞争保护等。下图示出SPI 总线工作的四种方式,其中使用的最为广泛的是SPI0 和SPI3
方式 (实线表示):
SPI 总线四种工作方式 SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串
行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如
果 CPOL="0",串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲
状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传
输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果
CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI 主模块和与之
通信的外设备时钟相位和极性应该一致。
SPI 总线包括1 根串行同步时钟信号线以及2 根数据线。
SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和
相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行
同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟
相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,
在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步
时钟的第二个跳变沿(上升或下降)数据被采样。SPI 主模块和与之通信的外设音时钟相位
和极性应该一致。SPI 接口时序如图3、图4 所示。
补充:
上文中最后一句话:SPI 主模块和与之通信的外设备时钟相位和极性应该一致。个人理解这
句话有2 层意思:其一,主设备SPI 时钟和极性的配置应该由外设来决定;其二,二者的
配置应该保持一致,即主设备的SDO 同从设备的SDO 配置一致,主设备的SDI 同从设备
的SDI 配置一致。因为主从设备是在SCLK 的控制下,同时发送和接收数据,并通过2 个
双向移位寄存器来交换数据。工作原理演示如下图:
上升沿主机SDO 发送数据1,同时从设备SDO 发送数据0;紧接着在SCLK 的下降沿的时
候从设备的SDI 接收到了主机发送过来的数据1,同时主机也接收到了从设备发送过来的数
据0.
三 SPI 协议心得
SPI 接口时钟配置心得:
在主设备这边配置SPI 接口时钟的时候一定要弄清楚从设备的时钟要求,因为主设备这边的
时钟极性和相位都是以从设备为基准的。因此在时钟极性的配置上一定要搞清楚从设备是在
时钟的上升沿还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据。但要注意的是,
由于主设备的SDO 连接从设备的SDI,从设备的SDO 连接主设备的SDI,从设备SDI 接
收的数据是主设备的SDO 发送过来的,主设备SDI 接收的数据是从设备SDO 发送过来的,
所以主设备这边SPI 时钟极性的配置(即SDO 的配置)跟从设备的SDI 接收数据的极性是
相反的,跟从设备SDO 发送数据的极性是相同的。下面这段话是Sychip Wlan8100
Module Spec 上说的,充分说明了时钟极性是如何配置的:
The 81xx module will always input data bits at the rising edge of the clock, and the
host will always output data bits on the falling edge of the clock.
意思是:主设备在时钟的下降沿发送数据,从设备在时钟的上升沿接收数据。因此主设备这
边SPI 时钟极性应该配置为下降沿有效。
又如,下面这段话是摘自LCD Driver IC SSD1289:
SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of
data bit 7, data bit 6 …… data bit 0.
意思是:从设备SSD1289 在时钟的上升沿接收数据,而且是按照从高位到地位的顺序接收
数据的。因此主设备的SPI 时钟极性同样应该配置为下降沿有效。
时钟极性和相位配置正确后,数据才能够被准确的发送和接收。因此应该对照从设备的SPI
接口时序或者Spec 文档说明来正确配置主设备的时钟
1.2 I2C(Inter-Integrated Circuit)总线是一种由PHILIPS 公司开发的两线式串行总线,
用于连接微控制器及其外围设备。I2C 总线产栺于在80 年代,最初为音频和视频设备开发,
如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进
行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、
硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
1 I2C 总线特点
I2C 总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此I2C 总线占用
的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高
达25 英尺,并且能够以10Kbps 的最大传输速率支持40 个组件。I2C 总线的另一个优点
是,它支持多主控(multimastering), 其中任何能够进行发送和接收的设备都可以成为主
总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
2 I2C 总线工作原理
2.1 总线的构成及信号类型
I2C 总线是由数据线SDA 和时钟SCL 构成的串行总线,可发送和接收数据。在CPU 与被
控IC 之间、IC 与IC 之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联
在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有
唯一的地址,在信息的传输过程中,I2C 总线上并接的每一模块电路既是主控器(或被控器),
又是发送器(或接收器),这取决于它所要完成的功能。CPU 发出的控制信号分为地址码
和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定
该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总
线上,却彼此独立,互不相关。
I2C 总线在传送数据过程中共有三种类型信号, 它们分别是:开始信号、结束信号和应答
信号。
开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的IC 在接收到8bit 数据后,向发送数据的IC 发出特定的低电平脉冲,
表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU
接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判
断为受控单元出现故障。
目前有很多半导体集成电路上都集成了I2C 接口。带有I2C 接口的单片机有:CYGNAL 的
C8051F0XX 系列,PHILIPSP87LPC7XX 系列,MICROCHIP 的PIC16C6XX 系列等。很多
外围器件如存储器、监控芯片等也提供I2C 接口。
3 总线基本操作
I2C 规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则
定义为接收器。主器件和从器件都可以工作于接收和发送状态。 总线必须由主器件(通常
为微控制器)控制,主器件产栺串行时钟(SCL)控制总线的传输方向,并产栺起始和停止
条件。SDA 线上的数据状态仅在SCL 为低电平的期间才能改变,SCL 为高电平的期间,SDA
状态的改变被用来表示起始和停止条件。
3.1 控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型
有不同的定义,EEPROM 一般应为1010),接着三位为片选,最后一位为读写位,当为1
时为读操作,为0 时为写操作
3.2 写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。
关于页面写的地址、应答和数据传送的时序
3.3 读操作
读操作有三种基本操作:当前地址读、随机读和顺序读。图4 给出的是顺序读的时序图。
应当注意的是:最后一个读操作的第9 个时钟周期不是“不关心”。为了结束读操作,主
机必须在第9 个周期间发出停止条件或者在第9 个时钟周期内保持SDA 为高电平、然后发
出停止条件。
写用写(L)给出地址,然后用当前读的模式读出数据,返回NOACK 及STOP
STAR7bir 器件编号—WRITE(H 电平)-> 7bit ADDRESS->ack ->STAR7bir 器件编
号—read (L )->8bit 数据->noack-stop
顺序随机读:就是制定地址读之后在顺序读
STAR7bir 器件编号—WRITE(H 电平)-> 7bit ADDRESS->ack ->STAR7bir 器件编
号—read (L )->8bit 数据->ack-8bit 数据->ack….noack---STOP

你可能感兴趣的:(嵌入式)