常用的硬件接口及通信协议详解

一:串口

串口是串行接口的简称,分为同步传输(USRT )和异步传输(UART )。在同步通信中,发送端和接收端使用同一个时钟。在异步通信中,接受时钟和发送时钟是不同步的,即发送端和接收端都有自己独立的时钟和相同的速度约定。

1:RS232接口定义

2:异步串口的通信协议

作为UART 的一种,工作原理是将传输数据的每个字符一位接一位地传输。图一给出了其工作模式:

图 一

其中各位的意义如下:

起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII 码。从最低位开始传送,靠时钟定位。

奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验) 或奇数(奇校验) ,以此来校验资料传送的正确性。

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。

3:在嵌入式处理器中,通常都集成了串口,只需对相关寄存器进行设置,就可以使用啦。尽管不同的体系结构的处理器中,相关的寄存器可能不大一样,但是基于FIFO 的uart 框图还是差不多。

发送过程:把数据发送到fifo 中,fifo 把数据发送到移位寄存器,然后在时钟脉冲的作用下,往串口线上发送一位bit 数据。

接受过程:接受移位寄存器接收到数据后,将数据放到fifo 中,接受fifo 事先设置好触发门限,当fifo 中数据超过这个门限时,就触发一个中断,然后调用驱动中的中断服务函数,把数据写到flip_buf中。

二:SPI

SPI ,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI ,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片 的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI 是一个环形总线结构,由ss(cs)、sck 、sdi 、sdo 构成,其时序其实很简单,主要是在sck 的控制下,两个双向移位寄存器进行数据交换。

上升沿发送、下降沿接收、高位先发送。 上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。 1:技术性能

SPI 接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave 模式应用,一般仅支持单Master 。

时钟由Master 控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first );SPI 接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps 的水平。

2:接口定义

SPI 接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。

(1)MOSI :主器件数据输出,从器件数据输入

(2)MISO :主器件数据输入,从器件数据输出

(3)SCLK :时钟信号,由主器件产生

(4)/SS:从器件使能信号,由主器件控制

3:内部结构

4:传输时序

SPI 接口在内部硬件实际上是两个简单的移位寄存器, 传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK 的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

SPI 接口没有指定的流控制,没有应答机制确认是否接收到数据

三:I2C

I2C 总线是由数据线SDA 和时钟SCL 构成的串行总线,可发送和接收数据。在CPU 与被控IC 之间、IC 与IC 之间进行双向传送,最高传送速率100kbps 。各种被控制电路均并联在这条总线上,就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯

一的地址,在信息的传输过程中,I2C 总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU 发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

1:I2C 信号类型

I2C 总线有两根信号线,一根为SDA (数据线),一根为SCL (时钟线)。任何时候时钟信号都是由主控器件产生。

2:I2C 总线协议工作原理

以启动信号START 来掌管总线,以停止信号STOP 来释放总线 每次通讯以START 开始,以STOP 结束;

启动信号START 后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R. /W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;

当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;

每个数据字节在传送时都是高位(MSB)在前;

3:I2C 协议读写过程

读过程

①主控在检测到总线空闲的状况下,首先发送一个START 信号掌管总线;

②发送一个地址字节(包括7位地址码和一位R/W);

③当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);

④主控收到ACK 后释放数据总线,开始接收第一个数据字节; ⑤主控收到数据后发送ACK 表示继续传送数据,发送NACK 表示传送数据结束;

⑥主控发送完全部数据后,发送一个停止位STOP ,结束整个通讯并且释放总线;

写通讯过程:

①主控在检测到总线空闲的状况下,首先发送一个START 信号掌管总线;

②发送一个地址字节(包括7位地址码和一位R/W); ③当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);

④主控收到ACK 后开始发送第一个数据字节;

⑤被控器收到数据字节后发送一个ACK 表示继续传送数据,发送NACK 表示传送数据结束;

⑥主控发送完全部数据后,发送一个停止位STOP ,结束整个通讯并且释放总线;

4:I2C 协议总线信号时序分析

①总线空闲状态

SDA 和SCL 两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高;

②启动信号START

时钟信号SCL 保持高电平,数据信号SDA 的电平被拉低(即负跳变) 。启动信号必须是跳变信号,而且在建立该信号前必修保证总线处于空闲状态;

③停止信号STOP

时钟信号SCL 保持高电平,数据线被释放,使得SDA 返回高电平(即正跳变) ,停止信号也必须是跳变信号。

④数据传送

SCL 线呈现高电平期间,SDA 线上的电平必须保持稳定,低电平表示0(此时的线电压为地电压) ,高电平表示1(此时的电压由元器件的VDD 决定) 。只有在SCL 线为低电平期间,SDA 上的电平允许变化。

⑤应答信号ACK

I2C 总线的数据都是以字节(8位) 的方式传送的,发送器件每发送

一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个ACK(把数据总线的电平拉低) 来表示数据成功接收。 ⑥无应答信号NACK

在时钟的第9个脉冲期间发送器释放数据总线,接收器不拉低数据总线表示一个NACK ,NACK 有两种用途:

a. 一般表示接收器未成功接收数据字节;

b. 当接收器是主控器时,它收到最后一个字节后,应发送一个NACK 信号,以通知被控发送器结束数据发送,并释放总线,以便主控接收器发送一个停止信号STOP 。

四:TCP/IP

一:串口

串口是串行接口的简称,分为同步传输(USRT )和异步传输(UART )。在同步通信中,发送端和接收端使用同一个时钟。在异步通信中,接受时钟和发送时钟是不同步的,即发送端和接收端都有自己独立的时钟和相同的速度约定。

1:RS232接口定义

2:异步串口的通信协议

作为UART 的一种,工作原理是将传输数据的每个字符一位接一位地传输。图一给出了其工作模式:

图 一

其中各位的意义如下:

起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。

数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII 码。从最低位开始传送,靠时钟定位。

奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验) 或奇数(奇校验) ,以此来校验资料传送的正确性。

停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。

空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。 波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/秒,而每一个字符为10位,则其传送的波特率为10×120=1200字符/秒=1200波特。

3:在嵌入式处理器中,通常都集成了串口,只需对相关寄存器进行设置,就可以使用啦。尽管不同的体系结构的处理器中,相关的寄存器可能不大一样,但是基于FIFO 的uart 框图还是差不多。

发送过程:把数据发送到fifo 中,fifo 把数据发送到移位寄存器,然后在时钟脉冲的作用下,往串口线上发送一位bit 数据。

接受过程:接受移位寄存器接收到数据后,将数据放到fifo 中,接受fifo 事先设置好触发门限,当fifo 中数据超过这个门限时,就触发一个中断,然后调用驱动中的中断服务函数,把数据写到flip_buf中。

二:SPI

SPI ,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。SPI ,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片 的管脚,同时为PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。

SPI 是一个环形总线结构,由ss(cs)、sck 、sdi 、sdo 构成,其时序其实很简单,主要是在sck 的控制下,两个双向移位寄存器进行数据交换。

上升沿发送、下降沿接收、高位先发送。 上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。 1:技术性能

SPI 接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave 模式应用,一般仅支持单Master 。

时钟由Master 控制,在时钟移位脉冲下,数据按位传输,高位在前,低位在后(MSB first );SPI 接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps 的水平。

2:接口定义

SPI 接口共有4根信号线,分别是:设备选择线、时钟线、串行输出数据线、串行输入数据线。

(1)MOSI :主器件数据输出,从器件数据输入

(2)MISO :主器件数据输入,从器件数据输出

(3)SCLK :时钟信号,由主器件产生

(4)/SS:从器件使能信号,由主器件控制

3:内部结构

4:传输时序

SPI 接口在内部硬件实际上是两个简单的移位寄存器, 传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK 的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

SPI 接口没有指定的流控制,没有应答机制确认是否接收到数据

三:I2C

I2C 总线是由数据线SDA 和时钟SCL 构成的串行总线,可发送和接收数据。在CPU 与被控IC 之间、IC 与IC 之间进行双向传送,最高传送速率100kbps 。各种被控制电路均并联在这条总线上,就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯

一的地址,在信息的传输过程中,I2C 总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。CPU 发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。

1:I2C 信号类型

I2C 总线有两根信号线,一根为SDA (数据线),一根为SCL (时钟线)。任何时候时钟信号都是由主控器件产生。

2:I2C 总线协议工作原理

以启动信号START 来掌管总线,以停止信号STOP 来释放总线 每次通讯以START 开始,以STOP 结束;

启动信号START 后紧接着发送一个地址字节,其中7位为被控器件的地址码,一位为读/写控制位R/W,R. /W位为0表示由主控向被控器件写数据,R/W为1表示由主控向被控器件读数据;

当被控器件检测到收到的地址与自己的地址相同时,在第9个时钟期间反馈应答信号;

每个数据字节在传送时都是高位(MSB)在前;

3:I2C 协议读写过程

读过程

①主控在检测到总线空闲的状况下,首先发送一个START 信号掌管总线;

②发送一个地址字节(包括7位地址码和一位R/W);

③当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);

④主控收到ACK 后释放数据总线,开始接收第一个数据字节; ⑤主控收到数据后发送ACK 表示继续传送数据,发送NACK 表示传送数据结束;

⑥主控发送完全部数据后,发送一个停止位STOP ,结束整个通讯并且释放总线;

写通讯过程:

①主控在检测到总线空闲的状况下,首先发送一个START 信号掌管总线;

②发送一个地址字节(包括7位地址码和一位R/W); ③当被控器件检测到主控发送的地址与自己的地址相同时发送一个应答信号(ACK);

④主控收到ACK 后开始发送第一个数据字节;

⑤被控器收到数据字节后发送一个ACK 表示继续传送数据,发送NACK 表示传送数据结束;

⑥主控发送完全部数据后,发送一个停止位STOP ,结束整个通讯并且释放总线;

4:I2C 协议总线信号时序分析

①总线空闲状态

SDA 和SCL 两条信号线都处于高电平,即总线上所有的器件都释放总线,两条信号线各自的上拉电阻把电平拉高;

②启动信号START

时钟信号SCL 保持高电平,数据信号SDA 的电平被拉低(即负跳变) 。启动信号必须是跳变信号,而且在建立该信号前必修保证总线处于空闲状态;

③停止信号STOP

时钟信号SCL 保持高电平,数据线被释放,使得SDA 返回高电平(即正跳变) ,停止信号也必须是跳变信号。

④数据传送

SCL 线呈现高电平期间,SDA 线上的电平必须保持稳定,低电平表示0(此时的线电压为地电压) ,高电平表示1(此时的电压由元器件的VDD 决定) 。只有在SCL 线为低电平期间,SDA 上的电平允许变化。

⑤应答信号ACK

I2C 总线的数据都是以字节(8位) 的方式传送的,发送器件每发送

一个字节之后,在时钟的第9个脉冲期间释放数据总线,由接收器发送一个ACK(把数据总线的电平拉低) 来表示数据成功接收。 ⑥无应答信号NACK

在时钟的第9个脉冲期间发送器释放数据总线,接收器不拉低数据总线表示一个NACK ,NACK 有两种用途:

a. 一般表示接收器未成功接收数据字节;

b. 当接收器是主控器时,它收到最后一个字节后,应发送一个NACK 信号,以通知被控发送器结束数据发送,并释放总线,以便主控接收器发送一个停止信号STOP 。

四:TCP/IP


相关内容

  • 谈三菱PLC的网络协议及通讯方法
  • 摘 要:当今,随着工厂的自动化程度越来越高,生产控制中的电脑.PLC.变频器.触摸屏等各种智能工控设备的实时交互性.协同性.可靠性等要求越来越高.笔者在技师学院机电一体化专业的<网络通讯技术>教学中,发现学生对PLC的通讯方式.使用方法较难掌握,重点关注PLC常用的通讯方法,以三菱PLC ...

  • 中小型局域网组建与管理的实训报告
  • 网络组建与管理综合实训 --中小型局域网组建 班 级:网络1111 姓 名:陈伟 学 号:1102143103 课程名称:网络组建与管理综合实训 提交日期:2012年03月14日 概 要 培养学生系统.完整具体地解决实际问题的职业综合能力,具体收集信息.制定计划.实施计划和自我评价的能力,锻炼团队工 ...

  • 有线&无线通信技术资料(各种通信书籍的整合)
  • 出售:通信技术资料光盘(共3CD,广告长期有效) 发货方式:中国邮政EMS快递,款到发货,保证信誉,保证质量. 商品价格: 无线通信技术光盘2CD(50元/CD,单购需另支付25元EMS费用,赠送IS95.CDMA2000.CDMA1X.GSM.GPRS.WCDMA.TD-SCDMA.Wimax.W ...

  • 详解第三层交换机技术
  • 1.1 共享技术 所谓共享技术即在一个逻辑网络上的每一个工作站都处于一个相同的网段上. 以太网采用CSMA/CD 机制,这种冲突检测方法保证了只能有一个站点在总线上传输.如果有两个站点试图同时访问总线并传输数据,这就意味着"冲突"发生了,两站点都将被告知出错.然后它们都被拒发,并 ...

  • 基于ARM的蓝牙无线通信模块的设计
  • 湖南文理学院 课程设计报告 课程名称: 嵌入式系统课程设计 专业班级: 应用电子技术09201班 学生姓名: 崔 剑 指导教师: 袁 里 弛 完成时间: 2011年12月25日 报告成绩: 卷 首 摘 要 传统工业数据通信系统以单片机为下位机采集系统.PC 构建的数据中心以及RS232等有线方式构建 ...

  • 2-07毕业设计(论文)初稿--左欣(2)
  • 摘 要 随着计算机通信技术和网络技术的发展,在嵌入式系统中集成以太网口,来实现与其它计算机设备之间的高速数据传输就显得更加的重要了.越来越多的计算机系统都迫切的需要和其它计算机系统进行联网,以达到共享数据,统一管理的目的.因此除了通常的使用PC机的内部网卡接入以太网外,许多的嵌入式系统也需要直接联入 ...

  • 高级JAVA工程师需要掌握哪些技术
  • 我把它分为了五大专题 工程化专题 工程化专题 git git安装使用 git日常使用:fetch/pull/push/revert/rebase git分支管理git flow Jenkins多套环境(test/pre/production)系统自动化发布 Jenkins自动发布到远程主机 Mave ...

  • 如何利用各种元器件
  • 吐血奉献 360部电子书 http://218.7.17.204/chaoxing/1/101.rar 怎样使用运算放大器 http://218.7.17.204/chaoxing/1/301.rar 传感器 http://218.7.17.204/chaoxing/1/102.rar 运算放大器应 ...

  • 2014(上半年)网络工程师真题及详解
  • 全国计算机技术与软件专业资格(水平)考试 2014 年上半年 网络工程师考试 上午试卷 ●在 CPU 中,常常来为 ALU 执行算术逻辑运算提供数据并暂存运算结果的寄存器是(1). (1)A. 程序计数器 B.状态寄存器 C. 通用寄存器 D.累加寄存器 答案 D 试题解析:程序计数器是计算机处理器 ...