单片机通信协议有几种 单片机串口通信协议实验I2C总线SPI总线UART1-Wire接口并行接口

在嵌入式系统中,板载通信接口是指用于连接各种集成电路和其他外围设备的通信通道或总线。以下是常用的板载通信接口:I2C、SPI、UART和单线:I2C公共汽车I2C总线是一种同步、双向、半双工双线串行接口总线。在这里,半双工意味着在任何给定的时刻,只能进行一个方向的通信。I2C...

在嵌入式系统中,板载通信接口是指用于连接各种集成电路和其他外围设备的通信通道或总线。以下是常用的板载通信接口:I2C、SPI、UART和单线:

I2C公共汽车

I2C总线是一种同步、双向、半双工双线串行接口总线。在这里,半双工意味着在任何给定的时刻,只能进行一个方向的通信。I2C总线是由飞利浦半导体公司在20世纪80年代首次开发和销售的。I2C最初的设计目标是为微处理器/微控制器系统和电视外围芯片之间的连接提供一种简单的方法。I2C总线由两条总线组成:串行时钟线SCL和串行数据线SDA。SCL-负责产生同步时钟脉冲。SDA线——负责在设备之间传输串行数据。I2C总线是一个共享总线系统,因此多个I2C设备可以连接到该系统。连接到I2C总线的设备既可以用作主机,也可以用作从机。主机负责控制通信、发送数据,并通过初始化/终止数据传输来产生所需的同步时钟脉冲。从设备等待来自主设备的命令,并响应命令接收。主设备和从设备都可以用作发送设备或接收设备。无论主设备是发送设备还是接收设备,同步时钟信号只能由主设备产生。在同一总线上,I2C支持多个主设备同时存在。图1-1显示了I2C总线上主设备和从设备之间的连接关系。

当bus 空空闲时,SDA和SCL都处于高电平。当主机要和从机通信时,会先发送一个起始条件,然后发送从机的地址和读写控制位,再传输数据(主机发送或接收数据)。数据传输结束时,主机将发送停止条件。传输的每个字节为8位,最高位在前,最低位在后。

开始条件:SCL 为高电平时,主机将SDA 拉低,表示数据传输即将开始。 从机地址:主机发送的第一个字节为从机地址,高7 位为地址,最低位为R/W 读写控制位,1 表示读操作,0 表示写操作。

一般来说,从机地址有两种:7位地址模式和10位地址模式。如果是10位地址模式,第一个字节的前7位是11110XX的组合,其中最后两位(XX)是10位地址的最高两位,第二个字节是10位从机地址的剩余8位,如下图所示:

应答信号:每传输完成一个字节的数据,接收方就需要回复一个ACK(acknowledge)。写数据时由从机发送ACK,读数据时由主机发送ACK。当主机读到最后一个字节数据时,可发送NACK(Notacknowledge)然后跟停止条件。 数据:从机地址发送完后可能会发送一些指令,依从机而定,然后开始传输数据,由主机或者从机发送,每个数据为8 位,数据的字节数没有限制。 重复开始条件:在一次通信过程中,主机可能需要和不同的从机传输数据或者需要切换读写操作时,主机可以再发送一个开始条件。 停止条件:在SDA 为低电平时,主机将SCL 拉高并保持高电平,然后在将SDA 拉高,表示传输结束。

SPI总线

SPI总线是一种同步、双向、全双工4线串行接口总线,由摩托罗拉首先提出。SPI是由“单个主设备+多个从设备”组成的系统。应当注意,在系统中,只要任何时候只有一个主机有效,就可以有多个SPI主机。常用于EEPROM、FLASH、实时时钟、AD转换器、数字信号处理器、数字***中实现通信。为了实现通信,SPI有四条信号线,即:

(1)主输出从输入(MOSI):从主向从传输数据的信号线,也称为从输入/从数据输入(SI/SDI)。(2)主机输入从机输出(MISO):从机向主机传输数据的信号线,也称为从机输出/从机数据输出(SO/SDO)。(3)串行时钟(SCLK):传输时钟信号的信号线。(4)从机选择(SS):用于选择从机的信号线,低电平有效。SPI的使用:

上图所示的芯片有两个SPI控制器,SPI控制器对应SPI主器件,每个SPI控制器可以连接多个SPI从器件。安装在同一SPI控制器上的从机共用三个信号引脚:SCK、MISO和MOSI,但每个从机的CS引脚是独立的。主器件芯片通过控制CS引脚来选择从器件,该引脚通常在低电平有效。任何时候,SPI主机上只有一个CS引脚处于有效状态,与有效CS引脚相连的从机此时可以与主机通信。因此,SPI通信模式可以采用“一主多从”的结构进行通信。连接到总线的每个设备都有一个唯一的地址。主设备开始数据传输并产生时钟信号,从设备由主设备寻址。同一时间只允许一个主设备。从设备的时钟由主设备通过SCLK提供,MOSI和MISO基于该脉冲完成数据传输。SPI的工作时序模式由CPOL(时钟极性)和CPHA(时钟相位)之间的相位关系决定。CPOL表示时钟信号初始电平的状态,CPOL 0表示时钟信号初始状态为低,1表示时钟信号初始电平为高。CPHA表示在哪个时钟沿采样数据,CPHA 0表示在第一个时钟变化沿采样数据,CPHA 1表示在第二个时钟变化沿采样数据。根据CPOL和CPHA的不同组合,有四种工作计时模式:CPOL=0,CPHA=0,CPOL=0,CPHA=1,CPOL=1,CPHA=0,CPOL=1,CPHA=1。

UART

通用异步收发器。作为一种异步串行通信协议,UART的工作原理是逐位传输数据的每个字符。在应用开发过程中使用高频数据总线。基于UART的数据传输是异步串行数据传输。基于UART的串行数据传输不需要使用时钟信号来同步发送器和接收器,而是取决于发送器和接收器之间的预定义配置。对于发送设备和接收设备,串行通信配置(波特率、每单位字的位数、奇偶校验、起始位和结束位、流量控制)应设置为完全相同。通过在数据流中插入特定的比特序列,可以指示通信的开始和结束。当发送一个字节的数据时,需要在比特流的开头添加一个起始位,在比特流的结尾添加一个结束位。数据的最低位紧跟在起始位之后。UART的特点是按顺序逐位传输数据,只需要两条传输线就可以实现双向通信。一条线路发送数据,另一条线路接收数据。UART串行通信有几个重要参数,即波特率、起始位、数据位、停止位和奇偶校验位。对于使用UART串行通信的两个端口,这些参数必须匹配,否则它们将通过。

起始位:表示数据传输的开始,电平逻辑为“0” 。 数据位:可能值有5、6、7、8、9,表示传输这几个bit 位数据。一般取值为8,因为一个ASCII 字符值为8 位。 奇偶校验位:用于接收方对接收到的数据进行校验,校验“1” 的位数为偶数(偶校验) 或奇数(奇校验),以此来校验数据传送的正确性,使用时不需要此位也可以。 停止位:表示一帧数据的结束。电平逻辑为“1”。 波特率:串口通信时的速率,它用单位时间内传输的二进制代码的有效位(bit) 数来表示,其单位为每秒比特数bit/s(bps)。常见的波特率值有4800、9600、14400、38400、115200 等,数值越大数据传输的越快,波特率为115200 表示每秒钟传输115200 位数据。

单线接口

1-Wire接口是Maxim Dallas半导体公司开发的异步半双工通信协议(首页为http://***.***xim-ic.com),也称为Dallas 1-Wire ®协议。根据主从通信模型,仅使用单信号线DQ来实现通信。1-Wire总线的一个重要特征是它允许能量在信号线上传输。单线接口支持总线上单个主器件和一个或多个从器件的连接。

并行接口

板载并行接口通常用于系统与外围设备之间的通信,其中外围设备通过存储器映射到系统的主控终端。只要嵌入式系统的主处理器/控制器包含并行总线,支持并行总线的设备就可以直接连接到总线系统。外围设备和主控终端之间有一个控制信号接口,可以控制并行总线上的数据通信。这里,用于通信的控制信号包括读/写信号和设备选择信号。一般来说,外围设备都有设备选择线;只有当主控处理器选通线路时,装置才有效。数据传输的方向可以是从主控终端到外围设备或从外围设备到主控终端;这由读和写控制信号线控制。只有主控制处理器可以控制读控制信号和写控制信号。一般来说,外围设备通过内存映射到主机处理器,这样就可以访问分配的地址范围。此时,设备需要使用地址解码电路来产生芯片选择信号。当处理器选择的地址在器件的指定范围内时,解码电路触发片选线,从而激活器件。然后,处理器可以使能相应的控制线(分别为RD和WD ),以便从器件读取数据或向器件写入数据。为了实现并行通信,系统需要严格遵循时序规范。如前所述,并行通信由主控制处理器发起。如果外设想要初始化通信,它可以向处理器发送一个中断来通知相关信息。为了实现上述功能,需要将设备的中断线路连接到处理器的中断线路上,主控处理器需要触发相应的中断。需要注意的是,主控处理器的数据总线宽度决定了并行接口的宽度,可以是4位、8位、16位、32位、***位等。设备支持的总线宽度应该与主机处理器的完全相同。

声明:本文内容来源于网络,主办方为李逍遥;文章版权归原作者所有,意在传播相关技术知识&行业动态,供大家学习交流。如涉及作品版权问题,请联系删除或授权。

本文来自吃鸡只用平底锅投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/476253.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 03-26
下一篇 03-26

相关推荐

  • 通信大数据行程卡没有找到行程数据解决方法

    1.大数据中找不到出行信息的原因有以下几点:1。用户过去14天的常驻通话有效数据不足,用户需要记录过去14天内单日在一个城市的数据。最早和最晚的间隔可以超过4小时,以显示旅行路线。2.中国电信、中国移动联通三家运营商任意一家的用户都是;请问您最近14天是否在XX逗留超过

    2023-07-19 19:44:01
    771 0
  • c#串口通信 opencv入门教程

    用于串行端口操作的类,包括写和读操作。类可以设置串口参数,设置接收函数,打开串口资源,关闭串口资源。操作完成后,它必须关闭串口,接收串行数据事件,接收数据错误事件,获取所有当前串口,并将字节类型转换为十六进制字符串。此串行端口类已经过调试,可以使用:使用系

    2023-07-14 17:05:01
    959 0
  • 通信运营是做什么的 附其通信运营近况

    近日,市工信局组织通信运营企业召开全国文明城市创建工作推进会和约谈会,对近期创建工作进行了安排部署。兰州电信、兰州移动、兰州联通创建工作负责人及各测点营业厅负责人80余人参加了会议。本次会议再次强调了创建城市工作的重要性,要求各通信运营商实测点负责人高度重视

    2023-07-13 23:07:01
    764 0
  • android线程间通信有哪些方式 android进程间通信方式讲解

    1、通过Handler机制。处理程序在主线程中定义,子线程发送消息通知处理程序完成UI更新。处理程序对象必须在主线程中定义。如果多个类直接互相调用,不是很方便,需要通过接口传递内容对象或者调用。private void one() { handler=new Handler(){ @Override public void handl

    2023-07-04 05:54:01
    452 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信