09 串行通信.ppt_第1页
09 串行通信.ppt_第2页
09 串行通信.ppt_第3页
09 串行通信.ppt_第4页
09 串行通信.ppt_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

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

文档简介

1、1,PIC单片机技术,电子信息与电气工程系 通信教研室,2,第9章 串行通信及通用接收发送器模块,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,3,第9章 串行通信及通用接收发送器模块,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,4,第9章 串行通信及通用接收发送器模块,串行通信的基本概念,并行通信的优点是速度快,效率高,缺点是不适合远距离通信。串行通信刚好相反。,5,同步方式和异步方式 (1) 同步方式: 发送与接收时钟始终保持严格同步。,6,(2)异步方式:按帧传送数据, 它利用每一帧的起、止信号来建立发送与接收之间的同步。,7,PIC16F877

2、单片机主要配置有2种形式的串行通信模块: 主控同步串行通信MSSP (Master Synchronous Serial Port) 通用同步/异步收发器USART (Universal Synchronous/Asynchronous Receiver Transmitter ) MSSP模块主要应用于系统内部近距离的串行通信扩展,如SPI、I2C模式。 USART模块主要应用于系统之间的远距离串行通信,在外围接口电路及计算机通信中应用相当广泛。,8,第9章 串行通信及通用接收发送器模块,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,9,9.1 SPI串行通信,SPI(S

3、erial Peripheral Interface):摩托罗拉公司推出。是一种单片机外设芯片同步串行扩展接口。引脚性价比高,因而在市场上得到了广泛的应用。,10,9.1 SPI串行通信,数据以字节为单位传送,每次传1个或多个字节。从高位MSB开始到低位LSB结束。 注:SDI、SDO、SCK的引脚。p11,11,9.1 SPI串行通信模块,12,9.1.1 SPI模式下相关寄存器,在SPI模式下,有关的寄存器共有10个,其中无编址的只有一个SSPSR。这10个寄存器中有6个寄存器是与其它模块共用的。另外有4个寄存器与MSSP模块相关,它们是与I2C模式共用的。,13,1SSPBUF(收/发数

4、据缓冲器)13H,14,1SSPBUF(收/发数据缓冲器)13H,2SSPSTAT(同步串行状态寄存器),15,Bit0/BF:缓冲器满标志位,被动参数。 SPI接收状态下: 0:缓冲器空; 1:缓冲器满。 Bit6/CKE:SPI时钟沿选择。 在CKP = 0,空闲时钟电平为低时: 0:SCK的下降沿发送数据; 1:SCK的上升沿发送数据。 在CKP = 1, 空闲时钟电平为高时: 0:SCK的上升沿发送数据; 1:SCK的下降沿发送数据。 Bit7/SMP:SPI采样控制位。 在SPI主控方式下: 0:在输出数据的中间采样输入数据; 1:在输出数据的末尾采样输入数据。,16,3SSPCON

5、(同步串行控制寄存器),Bit3-Bit0/SSPM3-SSPM0:同步串行口MSSP方式选择位。,17,3SSPCON(同步串行控制寄存器),Bit4/CKP:空闲时钟电平选择位。 0:表示空闲时时钟停留在低电平; 1:表示空闲时时钟停留在高电平。 Bit5/SSPEN:同步串口MSSP使能位。 在SPI模式下时,必须确保SCK、SDO设定为输出状态,而SDI、SS设定为输入状态。 0:关闭串行端口功能,且设定SCK、SOD、SDI和SS为普通数字I/O脚; 1:允许串行端口工作,且设定SCK、SOD、SDI和SS为SPI接口专用。,18,3SSPCON(同步串行控制寄存器),Bit6/SS

6、POV:接收溢出标志位,被动参数。 0:未发生接收溢出; 1:发生接收溢出。 注意:所指的接收溢出是缓冲器SSPBUF中数据还未取出时,移位寄存器SSPSR中又收到新的数据,原SSPSR中的数据丢失。 Bit7/WCOL:写操作冲突检测位,被动参数。必须用软件予以清零。 在SPI从动方式下: 0:未发生冲突; 1:发生冲突。 注意:发生写操作冲突,是指移位寄存器SSPSR正在发送前一个数据字节时,又有新数据写入SSPBUF。,思考:怎样防止收发冲突?,19,4SSPSR移位寄存器,直接从端口引脚接收或发送数据,将已经成功接收到的数据送到缓冲器SSPBUF中,或者从缓冲器SSPBUF读取将发送的

7、数据。,20,9.1.2 SPI模式工作原理,SPI模式电路的基本结构,21,9.1.2 SPI模式工作原理,发送:要发送的数据通过数据总线送入发送缓冲器,然后 自动传送到移位寄存器中; 接收:移位寄存器接收到数据自动传送到接收缓冲器,然 后由程序读取收到的数据; 移位寄存器有移入和移出两个端口,分别与收和发两条通信线路连接,负责收发数据。 思考:能否同时收发?,22,SPI工作原理示意图,23,【简单例题】利用F877的SPI同步串行功能把单片机数据存储器20H21H里面的数据8、9发送出去。同步时钟采用fosc/4,24,ORG 0000H banksel TRISC movlw B110

8、10111;定义RC3/SCK、RC5/SDO输出、RC4/SDI输入 movwf TRISC clrf SSPSTAT ;清除SMP、CKE位 banksel SSPCON movlw B00110000 movwf SSPCON - movf 20H,W movwf SSPBUF ;送至SSPBUF后开始逐位发送 LOOP1 banksel SSPSTAT btfss SSPSTAT,BF ;是否发送完毕。注发送数据同时接收无效数据 goto LOOP1; 否,继续查询 banksel SSPBUF movf SSPBUF,W ;移空SSPBUF,25,movf 21H,W movwf S

9、SPBUF ;送至SSPBUF后开始逐位发送 LOOP2 banksel SSPSTAT btfss SSPSTAT,BF ;是否发送完毕。注发送数据同时接收无效数据 goto LOOP2; 否,继续查询 banksel SSPBUF movf SSPBUF,W ;移空SSPBUF end,26,【例题9-1】如图9-5为8位数码显示电路,利用F877的SPI同步串行功能实现数码管数据串行传送,并通过8个74LS164组成的移位电路,达到数码数据的静态显示。 要求: 单片机数据存储器60H67H定义8个数码管的数据显示缓冲器。 同步时钟采用fosc/64,27,28,ORG 0000H ban

10、ksel TRISC movlw B11010111;定义RC3/SCK、RC5/SDO输出、RC4/SDI输入 movwf TRISC clrf SSPSTAT ;清除SMP、CKE位 banksel SSPCON movlw B00110010 movwf SSPCON - XSH movlw 67H;设置显示缓冲区的数据地址 00110111 movwf FSR; LOOP movf INDF,W;取出数据 call BMA;查码表 call OUTXSH;利用SPI方式输出编码数据 decf FSR btfss FSR,4 ;直到8位数码全部输出 60H:00110000 goto L

11、OOP goto end,29,BMA addwf PCL,F retlw 3FH; “0”的段码 retlw 06H; “1”的段码 。 retlw 6FH; “9”的段码 OUTXSH movwf SSPBUF ;送至SSPBUF后开始逐位发送 LOOP1 banksel SSPSTAT btfss SSPSTAT,BF ;是否发送完毕。注发送数据同时接收无效数据 goto LOOP1; 否,继续查询 banksel SSPBUF movf SSPBUF,W ;移空SSPBUF return - end,30,SPI串行通信要点,1)把数据发送给缓冲区 SSPBUF 2)通过检测BF标志来

12、判断是否发送完毕。,31,Question?,1.希望传输线更少 2.主控方希望与多个被控方通信,32,第9章 串行通信及通用接收发送器模块,1.串行通信的基本概念 2.SPI串行通信 3. I2C串行通信,33,9.2 I2C串行通信,1980年PHILIPS公司首创I2C(Inter Integrated Circuit Bus)总线规范,已成为一种串行总线事实上的工业标准。I2C总线是一种高性能芯片间串行同步传输总线,被大量的用作系统内部的电路板级总线。 它定义了两根信号线: 串行数据线SDA 串形时钟线SCL 能够极其方便的构成多机系统和外围器件扩展系统。,34,思考:为什么只要一条数

13、据线?如何实现收发(读写)?,35,9.2.1 I2C串行通信方式,1I2C数据格式,I2C数据格式有五部分组成: 1)启动信号(SCL=1,SDA从高到低); 2)被控器地址(可7位或10位); 3)R/ W信号; 4)若干个数据字节; 5)停止信号(SCL=1,SDA从低到高)。,36,主控器向被控器写数据,37,主控器从被控器读数据,38,2I2C地址设定,在I2C总线系统中的器件,一般都有一个专用的7位从器件地址码。地址码分为两部分,A6、A5、A4、A3为器件类型码。如存贮器为:1010,LCD点阵显示器启动器为:0111等等,不可更改统一规定。A2、A1、A0表示同一类型的器件的数

14、目,所以同一类器件在I2C总线系统中最多能接8个。,39,10位地址格式,其中A9、A8是10位地址的高2位。,40,3.数据传送,主控器发送数据,被控器接收数据的通信过程如下: (1)主控器在检测到总线空闲的状况下,首先发送一个启动S信号,将数据线拉低; (2)接着发送一个地址字节(包含着7位地址码和一位读/写位。1为读,0为写(设为写); (3)挂在同一I2C专线上的所有从动器件将主动与自身的识别码进行比较,只有与之匹配的从动器件才会回送一个应答信号(ACK=0)。这时主、从动器件之间建立一条专向数据通道; (4)在主控器收到该应答位后开始发送第一个数据字节; (5)在被控器收到第一个数据

15、字节后又回送一个应答位ACK = 0; (6)在主控器收到应答位后开始发送第二个数据字节; (7)被控器收到第二个数据字节后再返送一个(非)应答位(NACK=1)ACK=0; (8)在主控器将所需发送的全部数据(在此假设是两个字节)发送完毕后,就发送一个停止P信号时序,结束整个通信过程,并且释放总线,使总线返回空闲状态。,41,42,9.2.2 I2C总线应用方式,严格按照I2C的定义进行主、从器件的通信和数据传送; 采用模拟引脚的方式进行自定义主、从器件的通信和数据传送。(这种方式应用更广泛),43,【简单例题】 利用RC6和RC7引脚组成一个I2C同步串行功能,实现对24LC515EEPR

16、OM的串行数据传送。 RC6SCL、RC7SDA 编程要求:将数据05H存入24LC515的0001H单元中。 注:24LC515芯片本身支持I2C同步串行通信。存储单元的地址为两个字节。,44,45,List P=16F877 Include “P16F877.INC” DEVICE EQU 2CH; 用于存放设备地址 10100 TXBUF EQU 28H; 发送寄存器 ADDRH EQU 2AH; 24LC515地址的高字节(存放数据的单元地址) ADDRL EQU 2BH; 24LC515地址的低字节(存放数据的单元地址) CNT EQU 27H; 存放一个字节的位数8 ORG 000

17、0H START movlw 0A8H; 10101000 定义设备地址,最后一位为R/W movwf DEVICE movlw 00H ;定义24LC515地址的高字节 movwf ADDRH movlw 01H ;定义24LC515地址的低字节 movwf ADDRL - CALL WRBYTE ; 发送子程序 . . .,46,- ;向24LC515写入数据子程序 WRBYTE movf DEVICE,W movwf TXBUF ;设备地址送TXBUF call BSTART ;发送起始位 call TX ;发送一个字节(发送设备地址) - movf ADDRH,W ; movwf TX

18、BUF call TX ;发送一个字节(发送芯片地址高8位) movf ADDRL,W ; movwf TXBUF call TX ;发送一个字节(发送芯片地址低8位) -,47,movlw 05H ;(发送数据) movwf TXBUF call TX ; 发送一个字节 call BSTOP ;调用发送停止位 return; -,48,- ;发送起始位子程序 BSTART bsf PORTC,SCL ; SCL置高电平 bsf PORTC,SDA ; SDA置高电平 banksel TRISC movlw B00111111; 设置SCL、SDA为输出 banksel PORTC NOP 延

19、时5us bcf PORTC,SDA ;SDA从高到低(启动信号) NOP 延时5us bcf PORTC,SCL ;SCL置低电平 return -,49,- ;字节发送子程序 把TXBUF里的8个位发送出去 TX movlw 08H movwf CNT ;一个字节8个位,循环8次 TXLP banksel TRISC movlw B00111111 ;设置SCL、SDA全为输出 movwf TRISC - banksel PORTC btfss TXBUF,7 ;判断发送TXBUF第7位(最高位先发送) goto BIT0 bsf PORTC,SDA ;发送1,SDA置高电平 goto C

20、LKOUT BIT0 bcf PORTC,SDA ;发送0,SDA置低电平 - CLKOUT bsf PORTC,SCL ;SCL置高电平 nop 延时5us bcf PORTC,SCL ;SCL置低电平 rlf TXBUF,f ;发送缓冲器左移一位 decfz CNT,f ;是否完成一个字节8个位的发送? goto TXLP ;否,继续,50,;-接下来准备接收ACK banksel TRISC movlw B10111111 ; SCL为输出,SDA为输入 movwf TRISC banksel PORTC ACK nop nop bcf PORTC,SCL ; SCL置低电平 nop n

21、op nop bsf PORTC,SCL ; SCL置高电平 nop nop btfsc PORTC,SDA ;判断SDA为0或1 (ACK) goto ACK ;没有收到24LC515的反馈信号 bcf PORTC,SCL ; SCL置低电平 return -,51,- ;发送停止位子程序 BSTOP bcf PORTC,SDA ; SDA置低电平 banksel TRISC movlw B00111111 ; SCL、SDA为输出 movwf TRISC - banksel PORTC bcf PORTC,SCL ;SCL置低电平 nop nop nop ;延时3us,等待电平拉低 bsf

22、 PORTC,SCL ;SCL置高电平 nop nop nop ;延时3us,等待电平拉高 bsf PORTC ,SDA ;SDA置高电平 nop return,52,【例题9-5】图9-5 利用RC6和RC7引脚组成一个I2C同步串行功能,实现对24LC515EEPROM的串行数据传送。 RC6SCL、RC7SDA 编程要求:将64个数据00H-3FH存入24LC515的0000H-003FH单元中。 注:24LC515芯片本身支持I2C同步串行通信。地址为两个字节。,53,54,List P=16F877 Include “P16F877.INC” DEVICE EQU 2CH; 用于存放

23、设备地址 TXBUF EQU 28H; 发送寄存器 ADDRH EQU 2AH; 24LC515地址的高字节 ADDRL EQU 2BH; 24LC515地址的低字节 CNT EQU 27H; 存放一个字节的位数8 COUNTER EQU 26H; 用于存放循环变量 ORG 0000H START movlw 0A8H; 10101000 定义设备地址,最后一位为R/W movwf DEVICE movlw 00H ;定义24LC515地址的高字节 movwf ADDRH movlw 00H ;定义24LC515地址的低字节 movwf ADDRL - CALL WRBYTE ; 发送子程序

24、. . .,55,- ;向24LC515写入数据子程序 WRBYTE movf DEVICE,W movwf TXBUF ;设备地址送TXBUF call BSTART ;发送起始位 call TX ;发送一个字节(发送设备地址) - movf ADDRH,W ; movwf TXBUF call TX ;发送一个字节(发送芯片地址高8位) movf ADDRL,W ; movwf TXBUF call TX ;发送一个字节(发送芯片地址低8位) - movlw 00H movwf COUNTER,56,WRLOOP movf COUNTER,W movwf TXBUF call TX ; 发

25、送一个字节 incf COUNTER ; btfss COUNTER,6; 是否已发送64个数 goto WRLOOP call BSTOP ;调用发送停止位 retlw 00H; -,57,- ;发送起始位子程序 BSTART bsf PORTC,SCL ; SCL置高电平 bsf PORTC,SDA ; SDA置高电平 banksel TRISC movlw B00111111; 设置SCL、SDA为输出 banksel PORTC NOP 延时5us bcf PORTC,SDA ;SDA从高到低(启动信号) NOP 延时5us bcf PORTC,SCL ;SCL置低电平 retlw 00H -,58,- ;字节发送子程序 TX movlw 08H movwf CNT ;一个字节8个位,循环8次 TXLP

温馨提示

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

评论

0/150

提交评论