SPI、I2C、UART、USART串行总线协议的区别
- 格式:doc
- 大小:36.00 KB
- 文档页数:4
SPI、I2C、I2S、UART、GPIO、SDIO、CAN的介绍,各自的特点是什么?SPI:SPI(SerialPeripheralInterface)是MOTOROLA公司提出的同步串行总线方式。
高速同步串行口。
3~4线接口,收发独立、可同步进行.因其硬件功能强大而被广泛应用。
在单片机组成的智能仪器和测控系统中。
如果对速度要求不高,采用SPI 总线模式是个不错的选择。
它可以节省I/O端口,提高外设的数目和系统的性能。
标准SPI总线由四根线组成:串行时钟线(SCK)、主机输入/从机输出线(MISO)。
主机输出/从机输入线(MOSI)和片选信号(CS)。
有的SPI接口芯片带有中断信号线或没有MOSI。
SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(SDO)、串行数据输入(SDI)。
SPI总线可以实现多个SPI设备互相连接。
提供SPI串行时钟的SPI设备为SPI主机或主设备(Master),其他设备为SPI从机或从设备(Slave)。
主从设备间可以实现全双工通信,当有多个从设备时,还可以增加一条从设备选择线。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一个输入口(SDI),另一个口则视实现的设备类型而定,如果要实现主从设备,则需输入输出口,若只实现主设备,则需输出口即可,若只实现从设备,则只需输入口即可。
I2C:(Inter-IntegratedCircuit)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备.I2C总线用两条线(SDA和SCL)在总线和装置之间传递信息,在微控制器和外部设备之间进行串行通讯或在主设备和从设备之间的双向数据传送。
I2C是OD输出的,大部分I2C都是2线的(时钟和数据),一般用来传输控制信号。
I2C是多主控总线,所以任何一个设备都能像主控器一样工作,并控制总线。
总线上每一个设备都有一个独一无二的地址,根据设备它们自己的能力,它们可以作为发射器或接收器工作。
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)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
SPI、I2C、I2S、UART、GPIO、SDIO、CAN的介绍;各自的特点是什么SPI:SPISerial Peripheral Interface是MOTOROLA公司提出的同步串行总线方式..高速同步串行口..3~4线接口;收发独立、可同步进行.因其硬件功能强大而被广泛应用..在单片机组成的智能仪器和测控系统中..如果对速度要求不高;采用SPI总线模式是个不错的选择..它可以节省I/O端口;提高外设的数目和系统的性能..标准SPI总线由四根线组成:串行时钟线SCK、主机输入/从机输出线MISO..主机输出/从机输入线MOSI和片选信号CS..有的SPI接口芯片带有中断信号线或没有MOSI..SPI总线由三条信号线组成:串行时钟SCLK、串行数据输出SDO、串行数据输入SDI..SPI 总线可以实现多个SPI设备互相连接..提供SPI串行时钟的SPI设备为SPI主机或主设备Master;其他设备为SPI从机或从设备Slave..主从设备间可以实现全双工通信;当有多个从设备时;还可以增加一条从设备选择线..如果用通用IO口模拟SPI总线;必须要有一个输出口SDO;一个输入口SDI;另一个口则视实现的设备类型而定;如果要实现主从设备;则需输入输出口;若只实现主设备;则需输出口即可;若只实现从设备;则只需输入口即可..I2C:Inter-Integrated Circuit总线是一种由PHILIPS公司开发的两线式串行总线;用于连接微控制器及其外围设备.I2C总线用两条线SDA和SCL在总线和装置之间传递信息;在微控制器和外部设备之间进行串行通讯或在主设备和从设备之间的双向数据传送..I2C是OD输出的;大部分I2C都是2线的时钟和数据;一般用来传输控制信号..I2C是多主控总线;所以任何一个设备都能像主控器一样工作;并控制总线..总线上每一个设备都有一个独一无二的地址;根据设备它们自己的能力;它们可以作为发射器或接收器工作..多路微控制器能在同一个I2C总线上共存..I2SInter-IC Sound Bus是飞利浦公司为数字音频设备之间的音频数据传输而制定的一种总线标准..I2S则大部分是3线的除了时钟和数据外;还有一个左右声道的选择信号;I2S主要用来传输音频信号..如STB、DVD、MP3等常用UART:通用异步串行口..按照标准波特率完成双向通讯;速度慢.UART总线是异步串口;因此一般比前两种同步串口的结构要复杂很多;一般由波特率产生器产生的波特率等于传输波特率的16倍、UART接收器、UART发送器组成;硬件上由两根线;一根用于发送;一根用于接收..UART是用于控制计算机与串行设备的芯片..有一点要注意的是;它提供了RS-232C数据终端设备接口;这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了..作为接口的一部分;UART还提供以下功能:将由计算机内部传送过来的并行数据转换为输出的串行数据流..将计算机外部来的串行数据转换为字节;供计算机内部使用并行数据的器件使用..在输出的串行数据流中加入奇偶校验位;并对从外部接收的数据流进行奇偶校验..在输出数据流中加入启停标记;并从接收数据流中删除启停标记..处理由键盘或鼠标发出的中断信号键盘和鼠标也是串行设备..可以处理计算机与外部串行设备的同步管理问题..有一些比较高档的UART还提供输入输出数据的缓冲区;现在比较新的UART是16550;它可以在计算机需要处理数据前在其缓冲区内存储16字节数据;而通常的UART是8250..现在如果您购买一个内置的调制解调器;此调制解调器内部通常就会有16550 UART..GPIO General Purpose Input Output 通用输入/输出或总线扩展器利用工业标准I2C、SMBus 或SPI 接口简化了I/O口的扩展..当微控制器或芯片组没有足够的I/O端口;或当系统需要采用远端串行通信或控制时;GPIO产品能够提供额外的控制和监视功能..每个GPIO端口可通过软件分别配置成输入或输出..Maxim的GPIO产品线包括8端口至28端口的GPIO;提供推挽式输出或漏极开路输出..提供微型3mm x 3mm QFN封装..GPIO的优点端口扩展器低功耗:GPIO具有更低的功率损耗大约1μA;μC的工作电流则为100μA..集成IIC从机接口:GPIO内置IIC从机接口;即使在待机模式下也能够全速工作..小封装:GPIO器件提供最小的封装尺寸― 3mm x 3mm QFN低成本:您不用为没有使用的功能买单快速上市:不需要编写额外的代码、文档;不需要任何维护工作灵活的灯光控制:内置多路高分辨率的PWM输出..可预先确定响应时间:缩短或确定外部事件与中断之间的响应时间..更好的灯光效果:匹配的电流输出确保均匀的显示亮度..布线简单:仅需使用2条IIC总线或3条SPI总线SDIOSDIO是SD型的扩展接口;除了可以接SD卡外;还可以接支持SDIO接口的设备;插口的用途不止是插存储卡..支持 SDIO接口的PDA;笔记本电脑等都可以连接象GPS接收器;Wi-Fi或蓝牙适配器;调制解调器;局域网适配器;条型码读取器;FM无线电;电视接收器;射频身份认证读取器;或者数码相机等等采用SD标准接口的设备..I2S和PCM接口都是数字音频接口;而蓝牙到cpu以及codec的音频接口都是用PCM接口;是不是两个接口有各自不同的应用呢先来看下概念..PCM PCM-clock、PCM-sync、PCM-in、PCM-out脉冲编码调制;模拟语音信号经过采样量化以及一定数据排列就是PCM了..理论上可以传输单声道、双声道、立体声和多声道..是数字音频的raw data..脉冲编码调制就是把一个时间连续;取值连续的模拟信号变换成时间离散;取值离散的数字信号后在信道中传输..脉冲编码调制就是对模拟信号先抽样;再对样值幅度量化;编码的过程PCM:pulse coded modulation脉冲编码调制;是将模拟信号抽样量化;然后使已量化值变换成代码..通常pcm有4跟信号线:pcm-clk;pcm-sync;pcm-in;pcm-out..在使用pcm之前;应该配置好pcm接口..通常会设定frame sync;bit samples;tristate edge;pcm -sync;Enable GCI mode;Mute等等..市面上有很多codec;分单声道和立体声..举个例子;mc14583是一种单声道的codec;它的作用就是将从mic进来的模拟信号;转换成pcm-in 信号;或者将pcm-out的信号变换为模拟信号从spk端输出..I2S是音频数字化后数据排列的一种格式;所传输的就是PCM;支持单声道和立体声..PCM是一个通称、混称;I2S是对原始PCM进行数据排序处理;本质就是PCM;可以说I2S 是PCM的子集..所以我想蓝牙芯片上的PCM接口同样可以用I2S来传输..CPU和codec上的PCM和I2S接口也是为支持更多硬件提供的资源..一般cpu到蓝牙的通话实时音频使用pcm;有的蓝牙芯片内置MP3codec;mp3走uart/usb 更合适..PCM和I2S的区别在于;pcm一般是固定8k的采样率的单声道音频;最早似乎和固定电话的编码有直接关系;之后所有的话音编码几乎都是在pcm编码基础上再次编码得到的..而I2S则多了一个专门的信号线;采样率也可以配置到较高的频率;如44k..手机通话时候的编码一般都会被解码成8k采样率的pcm码;高了也没有用..因为本来手机通话的话音频段就是300~3400Hz而已;编码也是按8k采样的..某些手机平台并没有I2S 接口;相对来说基本上都会有pcm接口..A2DP应该还是走的UART;8k的采样率; 而且很多蓝牙芯片都内置mp3 codec;走ACL的UART更合适目前很多蓝牙;芯片内置了mp3解码器;所以mp3格式的音频并不需要bb这边做解码;从我自己经验看;记得只有最开始的时候做蓝牙有考虑这方面问题;后来的蓝牙项目基本上只有话音走pcm;其他的走UART..CANCAN;全称为“Controller Area Network”;即控制器局域网;是国际上应用最广泛的现场总线之一..最初;CAN被设计作为汽车环境中的微控制器通讯;在车载各电子控制装置ECU之间交换信息;形成汽车电子控制网络..比如:发动机管理系统、变速箱控制器、仪表装备、电子主干系统中;均嵌入CAN控制装置..一个由CAN 总线构成的单一网络中;理论上可以挂接无数个节点..实际应用中;节点数目受网络硬件的电气特性所限制..例如;当使用Philips P82C250作为CAN收发器时;同一网络中允许挂接110个节点..CAN 可提供高达1Mbit/s的数据传输速率;这使实时控制变得非常容易..另外;硬件的错误检定特性也增强了CAN的抗电磁干扰能力..什么是CSMA/CDCSMA/CD是“载波侦听多路访问/冲突检测”Carrier Sense Multiple Access with Collision Detect的缩写..利用CSMA访问总线;可对总线上信号进行检测;只有当总线处于空闲状态时;才允许发送..利用这种方法;可以允许多个节点挂接到同一网络上..当检测到一个冲突位时;所有节点重新回到‘监听’总线状态;直到该冲突时间过后;才开始发送..在总线超载的情况下;这种技术可能会造成发送信号经过许多延迟..为了避免发送时延;可利用CSMA/CD方式访问总线..当总线上有两个节点同时进行发送时;必须通过“无损的逐位仲裁”方法来使有最高优先权的的报文优先发送..。
单片机中常见的接口标准与协议分析单片机作为嵌入式系统中的核心部件,广泛应用于各个领域。
在单片机的设计和应用过程中,接口标准和协议起到了至关重要的作用。
本文将对单片机中常见的接口标准和协议进行分析。
一、UART串口通信协议UART(Universal Asynchronous Receiver/Transmitter)是一种常见的串口通信协议。
它通过串行传输方式进行数据传输,一般用于单片机与外部设备之间的数据通信。
UART通信协议中包含了波特率、数据位、校验位等参数设置,以及数据帧的起始位、停止位和数据位等组成。
通过设置这些参数,可以实现单片机与其他设备的稳定通信。
二、I2C总线协议I2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接单片机与外部设备,如传感器、存储器等。
I2C总线协议允许多个设备共享同一根总线,通过设备地址进行寻址。
在I2C通信中,存在主设备和从设备的概念。
主设备负责发起通信和控制总线的访问,而从设备则被动响应主设备的命令。
通过I2C协议,可以在单片机系统中方便地实现多个设备之间的通信。
三、SPI串行外设接口SPI(Serial Peripheral Interface)是一种串行的外设接口,常用于单片机与外部设备之间的高速数据通信。
SPI通信协议中包含了四根线路:时钟线、主设备输出从设备输入线、主设备输入从设备输出线和片选线。
SPI协议不需要复杂的地址寻址操作,可以实现高速的全双工数据传输。
在单片机中,SPI接口常用于与FLASH存储器、SD卡、LCD显示器等外部设备的通信。
四、CAN总线协议CAN(Controller Area Network)是一种常用的工业总线标准,用于实时数据通信和控制。
CAN总线协议广泛应用于汽车、工业自动化等领域。
CAN总线协议使用双线双向通信,可连接多个节点设备,并支持优先级和错误检测机制。
在单片机系统中,通过CAN总线协议可以实现节点之间的可靠通信,并支持广播和单播等不同的通信模式。
UARTIICSPI通信协议UART(Universal Asynchronous Receiver Transmitter)是一种异步串行通信协议,它使用简单的电气和物理接口。
UART通信是双向的,即可以同时发送和接收数据。
在UART通信中,发送和接收数据的设备之间没有共享的时钟信号,所以数据传输的速率由设备的时钟精度和波特率决定。
UART通信只使用两根线来传输数据,分别是数据线(TX、RX)和地线。
UART通信广泛应用于各种串口设备,如计算机、微控制器、传感器等。
UART通信的简洁性和广泛适用性是它最大的优点,但它也有一些缺点,比如传输速率相对较低。
I2C(Inter-Integrated Circuit)是一种串行通信协议,用于连接微控制器和外围设备。
I2C通信是双向的,可以同时发送和接收数据。
在I2C通信中,数据传输通过两根线来完成,分别是串行数据线(SDA)和串行时钟线(SCL)。
I2C通信需要主设备和从设备之间的时钟同步,因此从设备无需使用独立的时钟源。
I2C通信具有多主机和多从机的能力,可以连接多个设备。
I2C通信广泛应用于各种外围设备,如传感器、存储器、显示屏等。
I2C通信的主要优点是使用的线数较少,可以连接多个设备,但传输速率较慢。
SPI(Serial Peripheral Interface)是一种串行通信协议,用于连接微控制器和外围设备。
SPI通信是全双工的,可以同时发送和接收数据。
在SPI通信中,数据传输通过四根线来完成,分别是主设备输出线(MOSI)、主设备输入线(MISO)、串行时钟线(SCK)和片选线(CS)。
SPI通信中的主设备通过片选线来选择从设备。
SPI通信可以实现高速数据传输,适用于要求实时性的应用。
SPI通信广泛应用于各种存储设备、显示器件和传感器等。
SPI通信的主要优点是传输速率较快,但需要的线数较多。
总的来说,UART、I2C和SPI是三种常用的串行通信协议,各自具有不同的特点和优缺点。
几种流行的串行通信协议串行通信协议是计算机和其他设备之间进行数据传输的一种方式。
它规定了在传输过程中数据的格式、传输速率、控制信号等细节。
在计算机网络和嵌入式系统中,有多种流行的串行通信协议被广泛应用。
本文将介绍几种常见的串行通信协议。
一、RS-232RS-232(Recommended Standard 232)是一种常见的串行通信协议,用于连接计算机和外部设备,例如调制解调器、终端和打印机等。
RS-232协议定义了数据的位数、校验位、波特率等参数,同时还规定了数据的传输方式和连接线路的信号。
RS-232协议使用点对点连接,即一对一的方式进行通信。
在RS-232中,数据被编码为电压的变化,负电压表示逻辑1,正电压表示逻辑0。
尽管RS-232在现代计算机领域逐渐被USB取代,但在某些设备中仍然广泛应用。
二、UARTUART(Universal Asynchronous Receiver/Transmitter)是一种常见的串行通信接口,常用于将并行数据传输转换为串行数据传输。
UART主要用于连接计算机和外部设备,例如单片机和传感器等。
UART通过波特率来控制数据传输的速率,通过使用起始位、数据位、校验位和停止位来定义数据的格式。
UART通信是全双工的,意味着可以同时进行发送和接收。
与RS-232不同,UART没有规定电压的变化表示逻辑高低,而是通过逻辑电平的升降沿来表示数据的传输。
三、SPISPI(Serial Peripheral Interface)是一种同步的串行通信协议,常用于连接主控制器和外围设备之间的通信。
SPI通信以主从模式进行,主设备通过控制时钟信号来同步外围设备的数据传输。
SPI使用四根信号线进行通信,包括时钟信号、主机输出/从机输入、主机输入/从机输出和片选信号。
SPI通信具有高速率和灵活性的特点,因此被广泛应用于存储器、传感器、显示器等外围设备的控制。
四、I2CI2C(Inter-Integrated Circuit)是一种串行通信协议,常用于连接微控制器和外围设备之间的通信。
SPI,UART,JTAG,I2C,CAN常用串行协议比较SPI(serial peripheral bus):与并行总线相比的优点:1. 更低的元件成本, 2. 更小的PCB,3. 简化设计, 4. 较低的功耗不足之处:串行总线是一根数据线传输数据,通常会是一根数据传输输入,一根输入;而并行总线的优点是同时会有多根数据线分别负责数据的输入和输出特点:数据由SO输出, 由SI输入,clk由master发出,可同时在SI和SO上进行数据的收发,但是数据只能在主从之间进行而不能在从与从间进行,在结构上包括SPI device包括了clk,so,si以及使能信号,有些厂家还设有SPI总线总裁端,但是这不是SPI总线规范所要求必须的。
可执行速率高至1Mbit/s的数据全双工传输率。
UART-通用异步收发器UART总线是异步串口,因此结构比较复杂很多,一般由波特率产生器(产生的波特率等于传输波特率的16倍)、UART接收器、UART发送器组成,硬件上由两根线,一根用于发送,一根用于接收。
如果用通用IO口模拟UART总线,则需一个输入口,一个输出口。
UART常用于控制计算机与串行设备的芯片。
有一点要注意的是,它提供了RS-232C数据终端设备接口,这样计算机就可以和调制解调器或其它使用RS-232C接口的串行设备通信了。
I2C/IIC- Inter IC bus:传输速度:standard I2C可达100kbps,fast I2C可达400kbps,high speed I2C可达3.4Mbps。
只有两线通信,SCL和SDA,SCL负责时钟和wait,SDA负责address和data,两线均是双向OC结构,所以是需要外部上拉电阻的。
由于只有一条数据线SDA,所以也就不能实现全双工通信!I2C没有地址选通信号,所以只能在使用之前对其唯一编址,地址编址可多达127个。
JTAG- joint test action group,又名JTAG Boundary Scan。
UARTIICSPI通信协议一、UART通信协议UART(通用异步收发传输)是一种简单的串行通信协议,用于在电子设备中进行数据传输。
它由一个数据线和一个时钟线组成,数据通过数据线一位一位地传输,时钟线用于同步数据的传输。
UART的特点:1.异步通信:数据以不定时的方式传输,发送端和接收端通过开始位和停止位来识别数据的起始和终止。
2.支持多种波特率:波特率是指每秒传输的位数,UART可以根据需要选择合适的波特率进行数据传输。
3.简单实现:UART协议的实现相对简单,适用于资源有限的嵌入式系统。
UART的应用:UART广泛应用于各种电子设备中,如计算机、嵌入式系统、通信设备等。
常见的应用包括串口通信、数据采集、数据传输等。
二、IIC通信协议IIC(Inter-Integrated Circuit)是由飞利浦公司推出的一种串行通信协议,用于在电子设备中进行数据传输。
它采用双线制,包括一根数据线(SDA)和一根时钟线(SCL)。
IIC的特点:1.主从结构:IIC通信中有一个主设备和一个或多个从设备,主设备负责发起和控制通信,而从设备负责接收和响应。
2.多设备共享:多个从设备可以共享同一条总线,通过设备地址来区分不同的从设备。
3.双向数据传输:SDA线既可以作为数据线,也可以作为应答线,从设备通过拉低SDA线来发送应答信号。
IIC的应用:IIC广泛应用于数字电路芯片之间的数据交换,如存储器芯片、传感器、模拟到数字转换器等。
它也常用于连接微控制器和外围设备,如显示器、触摸屏、温度传感器等。
SPI(Serial Peripheral Interface)是一种串行通信协议,用于在电子设备中进行数据传输。
它通常包括一个主设备和一个或多个从设备之间的通信。
SPI的特点:1.同步通信:SPI通信是基于时钟同步的,主设备通过时钟线控制数据的传输速度和时序。
2.多设备共享:多个从设备可以共享同一条总线,每个从设备都有一个片选信号,通过片选信号来选择特定的从设备。
I2C与SPI的区别⽂章引⽤skyflying的博客⼀IIC总线I2C--INTER-IC串⾏总线的缩写,是PHILIPS公司推出的芯⽚间串⾏传输总线。
它以1根串⾏数据线(SDA)和1根串⾏时钟线(SCL)实现了双⼯的同步数据传输。
具有接⼝线少,控制⽅式简化,器件封装形式⼩,通信速率较⾼等优点。
在主从通信中,可以有多个I2C 总线器件同时接到I2C总线上,通过地址来识别通信对象。
IIC接⼝的协议⾥⾯包括设备地址信息,可以同⼀总线上连接多个从设备,通过应答来互通数据及命令。
但是传输速率有限,标准模式下可达到100Kbps,快速模式下可达到400Kbps(我们开发板⼀般在130Kbps),⾼速模式下达到4Mbps,不能实现全双⼯,不适合传输很多的数据。
IIC总线是⼀个真正的多主机总线,总线上多个主机初始化传输,可以通过传输检测和仲裁来防⽌数据被破坏。
下来详细了解IIC总线时序:1.1总线数据有效性IIC总线是单⼯,因此同⼀时刻数据只有⼀个流向,因此采样有效时钟也是单⼀的,是在SCL时钟的⾼电平采样数据。
IIC总线上SDA数据在SCL时钟低电平是可以发⽣变化,但是在时钟⾼电平时必须稳定,以便主从设备根据时钟采样数据,如下图:1.2总线空闲条件IIC总线上设备都释放总线(发出传输停⽌)后,IIC总线根据上拉电阻变成⾼电平,SDASCL都是⾼电平。
1.3总线数据传输起始和结束条件IIC总线SCL⾼电平时SDA出现由⾼到低的跳变,标志总线上数据传输的开始条件IIC总线SCL⾼电平时SDA出现由低到⾼的跳变,标志总线上数据传输的结束条件1.4总线数据传输顺序以及ACK应答IIC总线上数据传输是MSB在前,LSB在后,从⽰波器上看,从左向右依次读出数据即可IIC总线传输的数据不受限制,但是每次发到SDA上的必须是8位,并且主机发送8位后释放总线,从机收到数据后必须拉低SDA⼀个时钟,回应ACK表⽰数据接收成功,我们如果⽰波器上看到的波形就是每次9位数据,8bit+1bitack。
【整理】常用通信接口二(CAN/I2C/SPI/UART/GPIO原理与区别)上一篇整理了常用通信接口一(RS232/RS485/USB/TYPE-C原理与区别),这篇我们接着整理CAN、I2C、SPI、UART、GPIO原理与区别;1.CAN总线接口1)定义CAN是控制器局域网络(Controller Area Network,CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO11898),是ISO国际标准化的串行通信协议,是国际上应用最广泛的现场总线之一。
CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。
较之许多RS-485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:A.网络各节点之间的数据通信实时性强B.开发周期短C.已形成国际标准的现场总线D.最有前途的现场总线之一与一般的通信总线相比,CAN总线的数据通信具有突出的可靠性、实时性和灵活性。
2)运用A.CAN总线是为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。
通信速率最高可达1Mbps。
B.CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码。
使网络内的节点个数在理论上不受限制。
C.CAN总线采用了多主竞争式总线结构,具有多主站运行和分散仲裁的串行总线以及广播通信的特点。
CAN总线上任意节点可在任意时刻主动地向网络上其它节点发送信息而不分主次,因此可在各节点之间实现自由通信。
D.结构简单,只有2根线与外部相连,并且内部集成了错误探测和管理模块。
E.CAN总线特点:(1)数据通信没有主从之分,任意一个节点可以向任何其他(一个或多个)节点发起数据通信,靠各个节点信息优先级先后顺序来决定通信次序,高优先级节点信息在134μs通信;(2)多个节点同时发起通信时,优先级低的避让优先级高的,不会对通信线路造成拥塞;(3)通信距离最远可达10KM(速率低于5Kbps)速率可达到1Mbps(通信距离小于40M);(4)CAN总线传输介质可以是双绞线,同轴电缆。
第一个区别当然是名字:
SPI(Serial Peripheral Interface:串行外设接口);
I2C(INTER IC BUS)
UART(Universal Asynchronous Receiver Transmitter:通用
异步收发器)
第二,区别在电气信号线上:
SPI总线由三条信号线组成:串行时钟(SCLK)、串行数据输出(
SDO)、串行数据输入(SDI)。SPI总线可以实现 多个SPI设备互
相连接。提供SPI串行时钟的SPI设备为SPI主机或主设备(Mast
er),其他设备为SPI从机或从设备(Slave)。主从设备间可以
实现全双工通信,当有多个从设备时,还可以增加一条从设备
选择线。
如果用通用IO口模拟SPI总线,必须要有一个输出口(SDO),一
个输入口(SDI),另一个口则视实现的设备类型而定,如果要
实现主从设备,则需输入输出口,若只实现主设备,则需输出
口即可,若只实现从设备,则只需输入口即可。
I2C总线是双向、两线(SCL、SDA)、串行、多主控(multi-mas
ter)接口标准,具有总线仲裁机制,非常适合在器件之间进
行近距离、非经常性的数据通信。在它的协议体系中,传输数
据时都会带上目的设备的设备地址,因此可以实现设备组网。
如果用通用IO口模拟I2C总线,并实现双向传输,则需一个输
入输出口(SDA),另外还需一个输出口(SCL)。(注:I2C资料
了解得比较少,这里的描述可能很不完备)
UART总线是异步串口,因此一般比前两种同步串口的结构要复
杂很多,一般由波特率产生器(产生的波特率等于传输波特率
的16倍)、UART接收器、UART发送器组成,硬件上由两根线,
一根用于发送,一根用于接收。
显然,如果用通用IO口模拟UART总线,则需一个输入口,一个
输出口。
第三,从第二点明显可以看出,SPI和UART可以实现全双工,
但I2C不行;
第四,看看牛人们的意见吧!
wudanyu:I2C线更少,我觉得比UART、SPI更为强大,但是技
术上也更加麻烦些,因为I2C需要有双向IO的支持,而且使用
上拉电阻,我觉得抗干扰能力较弱,一般用于同一板卡上芯片
之间的通信,较少用于远距离通信。SPI实现要简单一些,UAR
T需要固定的波特率,就是说两位数据的间隔要相等,而SPI则
无所谓,因为它是有时钟的协议。
quickmouse:I2C的速度比SPI慢一点,协议比SPI复杂一点,
但是连线也比标准的SPI要少。
UART UART: Universal Asynchronous
Receiver/Transmitter,通用异步接收/发送装置,UART是一
个并行输入成为串行输出的芯片,通常集成在主板上,多数是
16550AFN芯片。因为计算机内部采用并行数据,不能直接把数
据发到Modem,必须经过UART整理才能进行异步传输,其过程
为:CPU先把准备写入串行设备的数据放到UART的寄存器(临
时内存块)中,再通过FIFO(First Input First Output,先
入先出队列)传送到串行设备,若是没有FIFO,信息将变得杂
乱无章,不可能传送到Modem。
它是用于控制计算机与串行设备的芯片。有一点要注意的
是,它提供了RS-232C数据终端设备接口,这样计算机就可以
和调制解调器或其它使用RS-232C接口的串行设备通信了。作
为接口的一部分,UART还提供以下功能:将由计算机内部传送
过来的并行数据转换为输出的串行数据流。将计算机外部来的
串行数据转换为字节,供计算机内部使用并行数据的器件使用
。在输出的串行数据流中加入奇偶校验位,并对从外部接收的
数据流进行奇偶校验。在输出数据流中加入启停标记,并从接
收数据流中删除启停标记。处理由键盘或鼠标发出的中断信号
(键盘和鼠标也是串行设备)。可以处理计算机与外部串行设
备的同步管理问题。有一些比较高档的UART还提供输入输出数
据的缓冲区,现在比较新的UART是16550,它可以在计算机需
要处理数据前在其缓冲区内存储16字节数据,而通常的UART是
8250。现在如果您购买一个内置的调制解调器,此调制解调器
内部通常就会有16550 UART。
什么是 UART
UART是一种通用串行数据总线,用于异步通信。该总线双
向通信,可以实现全双工传输和接收。在嵌入式设计中,UART
用来与PC进行通信,包括与监控调试器和其它器件,如EEPROM
通信。
UART通信
UART首先将接收到的并行数据转换成串行数据来传输。消
息帧从一个低位起始位开始,后面是7个或8个数据位,一个可
用的奇偶位和一个或几个高位停止位。接收器发现开始位时它
就知道数据准备发送,并尝试与发送器时钟频率同步。如果选
择了奇偶,UART就在数据位后面加上奇偶位。奇偶位可用来帮
助错误校验。
在接收过程中,UART从消息帧中去掉起始位和结束位,对
进来的字节进行奇偶校验,并将数据字节从串行转换成并行。
UART也产生额外的信号来指示发送和接收的状态。例如,如果
产生一个奇偶错误,UART就置位奇偶标志。
数据方向和通信速度
数据传输可以首先从最低有效位(LSB)开始。然而,有些U
ART允许灵活选择先发送最低有效位或最高有效位(MSB)。
微控制器中的UART传送数据的速度范围为每秒几百位到1.
5Mb。例如,嵌入在ElanSC520微控制器中的高速UART通信的速
度可以高达1.1152Mbps。UART波特率还受发送和接收线对距离
(线长度)的影响。
目前,市场上有只支持异步通信和同时支持异步与同步通
信的两种硬件可用于UART。前者就是UART名字本身的含义,在
摩托罗拉微控制器中被称为串行通信接口(SCI);Microchip微
控制器中的通用同步异步收发器(USART)和在富士通微控制器
中的UART是后者的两个典型例子。UART是通用异步收发器(异
步串行通信口)的英文缩写,它包括了RS232、RS499、RS423
、RS422和RS485等接口标准规范和总线标准规范,即UART是异
步串行通信口的总称。
而RS232、RS499、RS423、RS422和RS485等,是对应各种异步
串行通信口的接口标准和总线标准,它规定了通信口的电气特
性、传输速率、连接特性和接口的机械特性等内容。实际上是
属于通信网络中的物理层(最底层)的概念,与通信协议没有
直接关系。而通信协议,是属于通信网络中的数据链路层(上
一层)的概念。 COM口是PC(个人计算机)上,异步串行通信
口的简写。由于历史原因,IBM的PC外部接口配置为RS232,成
为实际上的PC界默认标准。所以,现在PC机的COM口均为RS232
。若配有多个异步串行通信口,则分别称为COM1、COM2...
USART USART:(Universal Synchronous/Asynchronous
Receiver/Transmitter)通用同步/异步串行接收/发送器
USART是一个全双工通用同步/异步串行收发模块,该接口
是一个高度灵活的串行通信设备。
其主要特点如下:
#全双工操作(相互独立的接收数据寄存器和发送数据寄
存器);
#支持同步和异步操作;
#同步操作时,可主机时钟同步,也可从机时钟同步;
#独立的高精度波特率发生器,不占用定时/计数器;
#支持5、6、7、8和9位数据位,1或2位停止位的串行数据
桢结构;
#由硬件支持的奇偶校验位发生和检验;
#数据溢出检测;
#桢错误检测;
#包括错误起使位的检测噪声滤波器和数字低通滤波器;
#三个完全独立的中断,TX发送完成、TX发送数据寄存器
空、RX接收完成;
#支持多机通信模式;
#支持倍速异步通信模式。
USART收发模块一般分为三大部分:时钟发生器、数据发
送器和接收器。控制寄存器为所有的模块共享。时钟发生器由
同步逻辑电路(在同步从模式下由外部时钟输入驱动)和波特
率发生器组成。发送时钟引脚XCK仅用于同步发送模式下,发
送器部分由一个单独的写入缓冲器(发送UDR)、一个串行移
位寄存器、校验位发生器和用于处理不同浈结构的控制逻辑电
路构成。使用写入缓冲器,实现了连续发送多浈数据无延时的
通信。接收器是USART模块最复杂的部分,最主要的是时钟和
数据接收单元。数据接收单元用作异步数据的接收。除了接收
单元,接收器还包括校验位校验器、控制逻辑、移位寄存器和
两级接收缓冲器(接收UDR)。接收器支持与发送器相同的桢
结构,同时支持桢错误、数据溢出和校验错误的检测。