常用总线、通信接口(-65)课件_第1页
常用总线、通信接口(-65)课件_第2页
常用总线、通信接口(-65)课件_第3页
常用总线、通信接口(-65)课件_第4页
常用总线、通信接口(-65)课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

3.9常用总线、通信接口数据通信的基本方式可分为并行通信与串行通信两种:并行通信:是指利用多条数据传输线将一个数据的各位

同时传送。

特点:是传输速度快,适用于短距离通信。串行通信:是指利用一条传输线将数据一位位地顺序

传送。

特点:是通信线路简单,利用电话或电报线路就可

实现通信,降低成本,适用于远距离通信,

但传输速度慢。8/4/202313.9常用总线、通信接口数据通信的基本方式可分为并行通串行通信:分为同步通信(SYNC)与异步通信(ASYNC)两种方式。(实际通信中,没有绝对的“异步”或“同步”,只是按不同的程度上“同步”。)异步通信:一个字节内同步,而字节之间“不同步”,

称之为“异步”。同步通信:大于一个字节的“帧数据”或“块数据”内

同步,称之为“帧同步”或“块同步”。称

之为“同步”。(这时实际上“帧数据”

或“块数据”之间也是“异步”)8/4/20232串行通信:分为同步通信(SYNC)与异步通信(ASYNC)两异步通信字符格式:规定有起始位、数据位、奇偶校验位、停止位等波特率:是衡量数据传送速率的指标(bps)。8/4/20233异步通信7/31/20233数据传送方向单工方式只允许数据按照一个固定的方向传送半双工方式每次只能有一个站发送,另一个站接收全双工方式允许通信双方同时进行发送和接收8/4/20234数据传送方向7/31/20234串行通信的基本特征是数据逐位顺序进行传送串行通信的格式及约定(如:同步方式、通讯速率、数据块格式、信号电平……等)不同,形成了多种串行通信的协议与接口标准。常见的有:☞通用异步收发器(UART)——本课程介绍的串口☞通用串行总线(USB)单总线(1-Wire)☞I2C总线☞CAN总线☞SPI总线☞1394☞RS-485,RS-232C,RS422A标准……等等8/4/20235串行通信的基本特征是数据逐位顺序进行传送7/31/20235SPI、I2C、1-Wire、RS232是目前单片机应用系统中最常用的几个串行总线接口。与并行扩展总线相比,串行扩展总线能够最大程度发挥最小系统的资源功能、简化连接线路,缩小电路板面积、扩展性好,可简化系统设计。串行总线的缺点是数据吞吐容量小,信号传输较慢。但随着CPU芯片工作频率的提高,以及串行总线的功能增强,这些缺点将逐步淡化。8/4/20236SPI、I2C、1-Wire、RS232是目前单片机应用系统3.9.1I2C总线I2C(InterIntegratedCircuit)常译为内部集成电路总线,或集成电路间总线,它是由Philips公司推出的芯片间串行传输总线。使用2线实现数据通信。 1根串行数据线(SDA) 1根串行时钟线(SCL)。8/4/202373.9.1I2C总线I2C(InterIntegra1.I2C总线的基本特性硬件结构上具有相同的硬件接口界面。8/4/202381.I2C总线的基本特性硬件结构上具有相同的硬件接口界面。总线接口器件地址具有很大的独立性。在单主系统中,每个I2C接口芯片具有唯一的器件地址,各从器件之间互不干扰,相互之间不能进行通信。MCU与I2C器件之间的通信是通过独一无二的器件地址来实现的。数据传输首先从最高位开始。传输速率在标准模式下可达100kbit/s,在快速模式下达400kbit/s,在高速模式下达3.4Mbit/s。它是一个真正的多主机总线。如果两个或更多主机同时初始化数据传输,可以通过冲突检测和仲裁防止数据被破坏。软件操作的一致性。任何器件通过I2C总线与MCU进行数据传送的方式基本一样,决定了I2C总线软件编写的一致性。数据线SDA/时钟线SCL(接上拉电阻)

8/4/20239总线接口器件地址具有很大的独立性。在单主系统中,每个I2C接2.I2C总线工作原理

(1)I2C总线信号类型开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。结束信号:SCL为低电平时,SDA由低电平向高电平跳变,结束传送数据。应答信号:接收数据的器件在接收到8bit数据后,向发送数据的器件(发送器)发出特定的低电平脉冲,表示已收到数据。发送器接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为接收器出现故障。数据只能在SCL为低电平时才能改变,SCL为高电平时SDA须稳定。起始信号与结束信号都是由主器件产生。8/4/2023102.I2C总线工作原理(1)I2C总线信号类型7/31/28/4/2023117/31/202311(2)I2C总线数据传输

主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为单片机)控制,主器件产生串行时钟控制总线的传输方向,并产生起始和停止条件。在起始信号结束后,主器件将发送一个用于选择从器件地址的7位地址码和一个数据方向位(R/W),方向位为“0”表示主器件把数据写到所选择的从器件中,此时主器件作为发送器,而从器件作为接收器;方向位为“1”表示主器件从所选择的从器件中读取数据,此时主器件作为接收器,而从器件作为发送器。在寻址字节后是按指定读、写操作的数据字节与应答位。在数据传送完成后主器件必须发送停止信号。8/4/202312(2)I2C总线数据传输主器件和从器件都可以工作于接收和发在51上用P1口模拟I2C(c语言)/*电平模拟函数和基本读写函数voidIIC_Start(void);voidIIC_Stop(void);voidSEND_0(void);voidSEND_1(void);bitCheck_Acknowledge(void);voidWrite_Byte(ucharb);bitWrite_N_Bytes(uchar*buffer,ucharn);bitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer);ucharRead_Byte(void);*/8/4/202313在51上用P1口模拟I2C(c语言)/*电平模拟函数和#include<string.h>#include<reg52.h>#include<intrins.h>#include"aiic_51.h"sbitSCL=P1^6;sbitSDA=P1^7;voidDELAY(uintt){while(t!=0)t--;}8/4/202314#include<string.h>7/31/202314voidIIC_Start(void){//启动I2C总线的函数,当SCL为高电平时使SDA产生一个负跳变SDA=1;SCL=1;DELAY(DELAY_TIME);SDA=0;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}8/4/202315voidIIC_Start(void)7/31/2023voidIIC_Stop(void){//终止I2C总线,当SCL为高电平时使SDA产生一个正跳变SDA=0;SCL=1;DELAY(DELAY_TIME);SDA=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}8/4/202316voidIIC_Stop(void)7/31/20231voidSEND_0(void){//发送0,在SCL为低电平时使SDA信号变为低SCL=0;SDA=0;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}voidSEND_1(void){//发送1,在SCL为低电平时使SDA信号变为高SCL=0;SDA=1;SCL=1;DELAY(DELAY_TIME);SCL=0;DELAY(DELAY_TIME);}8/4/202317voidSEND_0(void)7/31/202317bitCheck_Acknowledge(void){//发送完一个字节后检验设备的应答信号SDA=1;SCL=1;DELAY(DELAY_TIME/2);F0=SDA;DELAY(DELAY_TIME/2);SCL=0;DELAY(DELAY_TIME);if(F0==1)returnFALSE;returnTRUE;}8/4/202318bitCheck_Acknowledge(void)7/voidWrite_Byte(ucharb){//向IIC总线写一个字节uchari;for(i=0;i<8;i++)if((b<<i)&0x80)SEND_1();elseSEND_0();}8/4/202319voidWrite_Byte(ucharb)7/31/bitWrite_N_Bytes(uchar*buffer,ucharn){//向I2C总线写n个字节uchari;IIC_Start();for(i=0;i<n;i++) { Write_Byte(buffer[i]); if(!Check_Acknowledge()) { IIC_Stop(); return(i==n); } }IIC_Stop();returnTRUE;}8/4/202320bitWrite_N_Bytes(uchar*buffeucharRead_Byte(void)reentrant{//从I2C总线读一个字节ucharb=0,i;for(i=0;i<8;i++) { SDA=1;//释放总线 SCL=1;//接受数据 DELAY(10); F0=SDA; DELAY(10); SCL=0; if(F0==1) { b=b<<1; b=b|0x01; } else b=b<<1; }returnb;}8/4/202321ucharRead_Byte(void)reentrantbitRead_N_Bytes(ucharSlaveAdr,ucharn,uchar*buffer){//从I2C总线读n个字节uchari;IIC_Start();Write_Byte(SlaveAdr);//向总线发送接收器地址if(!Check_Acknowledge())//等待接收器应答信号returnFALSE;for(i=0;i<n;i++) { buffer[i]=Read_Byte(); if(i!=n) SEND_0();//发送应答 else SEND_1();//发送非应答 }IIC_Stop();returnTRUE;}8/4/202322bitRead_N_Bytes(ucharSlaveAdIIC例:8/4/202323IIC例:7/31/2023238/4/2023247/31/2023248/4/2023257/31/2023258/4/2023267/31/2023268/4/2023277/31/2023278/4/2023287/31/2023288/4/2023297/31/2023298/4/2023307/31/2023308/4/2023317/31/2023318/4/2023327/31/2023328/4/2023337/31/2023338/4/2023347/31/2023348/4/2023357/31/2023358/4/2023367/31/2023368/4/2023377/31/2023378/4/2023387/31/2023388/4/2023397/31/2023391.SPI总线的特点(串行外围设备接口:serialperipheralinterface)一般使用4条线

串行时钟线(SCK) 主机输入/从机输出数据线MISO 主机输出/从机输入数据线MOSI 低电平有效的从机选择线SSSPI总线技术是Motorola公司推出的一种同步串行接口

3.9.2SPI串行总线8/4/2023401.SPI总线的特点3.9.2SPI串行总线7/31/22.SPI总线系统的构成单片机与多个SPI串行接口设备典型结构如图6.1所示。8/4/2023412.SPI总线系统的构成单片机与多个SPI串行接口设备典型结3.SPI串行总线在MCS-51系列单片机中的实现

MCS-51单片机I/O口模拟SPI总线接口原理图如图6.2所示。8/4/2023423.SPI串行总线在MCS-51系列单片机中的实现MCS-单片机,如Motorola公司的M68HC08系列、Cygnal公司的C8051F0XX系列、Philips公司的P89LPC93X系列。A/D和D/A转换器,如:AD公司的AD7811/12、TI公司的TLC1543、TLC2543、TLC5615等。实时时钟RTC,如Dallas公司的DS1302/05/06等。温度传感器,如AD公司的AD7816/17/18;NS公司的LM74等。其他设备,如LED控制驱动器MAX7219、HD7279等,集成看门狗、电压监控、E2PROM等功能的X5045等。4.常用SPI串行总线接口的器件8/4/2023434.常用SPI串行总线接口的器件7/31/202343SPI例:串行专用键盘/显示器接口芯片HD72791.HD7279的主要特点 ⑴与CPU间采用串行接口方式,仅占用4根口线; ⑵内部含有译码器,可直接接收BCD码或16进制码,同时具有两种译码方式,实现LED数码管位寻址和段寻址,消隐和闪烁属性等多种控制指令,编程灵活; ⑶循环左移和循环右移指令; ⑷内部含有驱动器,无需外围元件可直接驱动LED ⑸具有级联功能,可方便的实现多于8位显示或多于64键的键盘接口; ⑹具有自动消除抖动并识别按键键值的功能。 8/4/202344SPI例:串行专用键盘/显示器接口芯片HD72791.HD72.HD7279的引脚说明DIG0~DIG7:8个LED管的位驱动输出端。SA~SG:LED数码管的A段~G段的输出端。DP为小数点的驱动输出端。:片选信号。DATA:串行数据输入/输出端。CLK:数据串行传送的同步时钟输入端。KEY:按键信号输出端。RC:连接HD7279的外接振荡元件,其典型值为R=1.5kΩ,C=15pF。:复位端。CLKO:振荡输出端VDD:正电源(+5V)VSS:接地8/4/2023452.HD7279的引脚说明DIG0~DIG7:8个LED3.HD7279的控制与实现 HD7279的控制指令由6条纯指令、7条带数据指令和1条读键盘指令组成。1)纯指令 (1)复位(清除)指令(A4H)

该指令将所有的显示清除,所有设置的字符消隐、闪烁等属性也被一起清除。执行该指令后,芯片所处的状态与系统上电后所处的状态一样。

D7D6D5D4D3D2D1D0101001008/4/2023463.HD7279的控制与实现 HD7279的控制指令由6(2)测试指令(BFH)

该指令使所有的LED全部点亮,并处于闪烁状态,主要用于测试。(3)左移指令(A1H)

该指令使所有的显示自右向左(从第1位向第8位)移动一位(包括处于消隐状态的显示位),但对各位所设置的消隐及闪烁属性不变。移动后,最右边一位为空(无显示)。D7D6D5D4D3D2D1D010111111D7D6D5D4D3D2D1D0101000018/4/202347(2)测试指令(BFH)D7D6D5D4D3D2D1D010(4)右移指令(A0H)

(5)循环左移指令(A3H)

该指令与左移指令类似,不同之处在于移动后原最左边一位(第8位)的内容显示于最右位(第1位)。D7D6D5D4D3D2D1D010100000D7D6D5D4D3D2D1D010100011(6)循环右移指令(A2H)该指令与循环左移指令类似,但移动方向相反。

D7D6D5D4D3D2D1D0101000108/4/202348(4)右移指令(A0H)D7D6D5D4D3D2D1D012)带数据的指令 带数据指令均由双字节组成,第1字节为指令标志码(有的还含有位地址),第2字节为显示内容。(1)按方式0译码显示指令

命令由二个字节组成,前半部分为指令,其中a2、a1、a0为LED数码管的位地址,即显示数据是送给哪一位LED的。具体分配如表6.6所列。指令中的d3~d0为显示数据,收到此指令时,HD7279按表6.7规则(译码方式0)进行译码和显示。小数点的显示由DP位控制,DP=1时,小数点显示,DP=0时,小数点不显示。指令中的XXX为无影响位。位D7D6D5D4D3D2D1D0十六进制码指令码10000a2a1a080H~87H数据码DPXXXd3d2d1d08/4/2023492)带数据的指令 带数据指令均由双字节组成,第1字节为指令LED位地址译码表a2a1a0LED显示位000LED1001LED2010LED3011LED4100LED5101LED6110LED7111LED88/4/202350LED位地址译码表a2a1a0LED显示位000LED100方式0译码显示表d3~d0LED显示字d3~d0LED显示字00H008H801H109H902H20AH—03H30BHE04H40CHH05H50DHL06H60EHP07H70FH空(无显示)8/4/202351方式0译码显示表d3~d0LED显示字d3~d0LED显示字(2)按方式1译码显示指令 此指令与上一条指令基本相同,所不同的是译码方式。方式1情况下,LED显示的内容与十六进制相对应,该指令的译码规则见表(译码方式1)。a2、a1、a0位地址译码见表。位D7D6D5D4D3D2D1D0十六进制码指令码11001a2a1a0C8H~CFH数据码DPXXXd3d2d1d08/4/202352(2)按方式1译码显示指令 此指令与上一条指令基本相同,方式1译码显示表d3~d0LED显示字d3~d0LED显示字00H008H801H109H902H20AHA03H30BHB04H40CHC05H50DHD06H60EHE07H70FHF8/4/202353方式1译码显示表d3~d0LED显示字d3~d0LED显示字(3)不译码显示指令(方式2) 其中a2,a1,a0为位地址,位地址译码见表。第2字节仍为LED显示的内容,其中A-G和DP为显示数据,分别对应LED数码管的各段和小数点,当取值为“1”时,该段点亮;取值为“0”时,该段熄灭。位D7D6D5D4D3D2D1D0十六进制码指令码10010a2a1a090H~9FH数据码DPABCDEFG8/4/202354(3)不译码显示指令(方式2) 其中a2,a1,a0为位(4)闪烁控制指令 此命令控制各个数码管的闪烁属性。d0~d7分别对应LED1~LED8数码管,当取值为1时,LED不闪烁;取值为0时,LED闪烁。开机后,缺省的状态为各位均不闪烁。位D7D6D5D4D3D2D1D0十六进制码指令码1000100088H数据码d7d6d5d4d3d2d1d08/4/202355(4)闪烁控制指令 此命令控制各个数码管的闪烁属性。d0~(5)消隐控制指令

此命令控制各个数码管的消隐属性。d0~d7分别对应LED1~LED8数码管,当取值为“1”时,LED显示;取值为“0”时,LED消隐。位D7D6D5D4D3D2D1D0十六进制码指令码1001100098H数据码d7d6d5d4d3d2d1d08/4/202356(5)消隐控制指令 此命令控制各个数码管的消隐属性。d0~(6)段点亮指令位D7D6D5D4D3D2D1D0十六进制码指令码11100000E0H数据码XXd5d4d3d2d1d0该指令的作用是点亮某个数码管中某一指定的段,或64个LED矩阵中某一指定的LED。d5~d0为段地址,范围从00H~3FH,

8/4/202357(6)段点亮指令位D7D6D5D4D3D2D1D0十六进制 该指令作用为关闭(熄灭)数码管中的某一段,d5~d0为段地址,范围从00H~3FH,作用与段点亮指令相同,仅将点亮段改为关闭段。(7)段关闭指令位D7D6D5D4D3D2D1D0十六进制码指令码11000000C0H数据码d7d6d5d4d3d2d1d08/4/202358 该指令作用为关闭(熄灭)数码管中的某一段,d5~d0为段地3)读键盘数据指令 该指令从HD7279读出当前的按键代码。与其它指令不同,此命令的前一个字节15H为单片机传送到HD7279的指令,而后一个字节d7~d0则为HD7279返回的按键代码,其范围是00H~3FH(无键按下时为0xFF)。。位D7D6D5D4D3D2D1D0

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论