微机原理及应用谢龙汉机械与汽车工程学院2011年12月29.串行通信方式串行通信模块串行通信模块串行扩展通信接口是单片机与其它计算机之间进行数据交换串行扩展通信接口是单片机与其它计算机之间进行数据交换的重要渠道,的重要渠道,PIC16F877PIC16F877单片机主要配置有单片机主要配置有22种形式的串行通信模种形式的串行通信模块:块:••主控同步串行通信主控同步串行通信MSSPMSSP((MasterMasterSynchronousSerialPortSynchronousSerialPort))MSSPMSSP模块主要应用于系统内部近距离的串行通信扩展,如模块主要应用于系统内部近距离的串行通信扩展,如SPISPI、、II22CC模式。模式。MSSP模块可以工作在两种模式:SPI模式和I2C模式。••通用同步通用同步//异步收发器异步收发器USARTUSART((UniversalSynchronous/AsynchronousReceiverTransmitterUniversalSynchronous/AsynchronousReceiverTransmitter))USARTUSART模块主要应用与系统之间的远距离串行通信,在外围接口电路及计模块主要应用与系统之间的远距离串行通信,在外围接口电路及计算机通信中应用非常广泛。算机通信中应用非常广泛。3SPISPI工作方式工作方式串行外围设备接口串行外围设备接口SPISPI((SerialPeripheralInterfaceSerialPeripheralInterface)总线技术是)总线技术是MotorolaMotorola公公司推出的一种为司推出的一种为6800068000系列微处理器设计的同步串行接口。串行同步总线,系列微处理器设计的同步串行接口。串行同步总线,全双工,多主控,分层的通信网络,全双工,多主控,分层的通信网络,SPISPI总线是一种总线是一种三线同步总线三线同步总线,因其,因其硬硬件功能很强件功能很强,与,与SPISPI有关的有关的软件相当简单软件相当简单,使,使CPUCPU有更多的时间处理其他事有更多的时间处理其他事务,因此得到广泛的应用。务,因此得到广泛的应用。数据率达到10Mbps网络可以使用2,3,4线的总线拓扑典型结构为单主控,多从属的结构允许多总线用于芯片间的通讯,比如移动电话,PDA,FPGAs,和其它设备中外围设备与微处理器的通信PICPIC单片机的单片机的SPISPI模式允许模式允许88位数据同步发送和接收,支持位数据同步发送和接收,支持SPISPI所有方式。所有方式。SPISPI模式传输数据需要四个信号线:模式传输数据需要四个信号线:串行数据输出(串行数据输出(SDOSDO)线,在主控器件中作为输出线,在从动器件作为输入线)线,在主控器件中作为输出线,在从动器件作为输入线串行数据输入(串行数据输入(SDISDI)线,在主控器件中作为输入线,在从动器件作为输出线)线,在主控器件中作为输入线,在从动器件作为输出线串行时钟(串行时钟(SCKSCK),在主控器件中作为输出线,在从动器件作为输入线,用于),在主控器件中作为输出线,在从动器件作为输入线,用于主、从器件之间数据传送的同步时序信号,有时称为波特率。主、从器件之间数据传送的同步时序信号,有时称为波特率。从选择(从选择(/SS/SS)线,是主控器件向从动器件发出数据传送命令的通知方式。)线,是主控器件向从动器件发出数据传送命令的通知方式。4SPISPI模式相关的寄存器模式相关的寄存器在SPI模式下,有关的寄存器共有10个,其中无编址的只有一个SSPSR。这10个寄存器中有6个寄存器是与其它模块共用的。另外有4个寄存器与MSSP模块相关,它们是与I2C模式共用的。•SSP的中断状况受控于总中断控制GIE及外围中断控制PEIE•SSP中断使能位,及中断标志位•TRISA,用于设置/SS•TRISC,用于设置SDO,SDI,SCK5SPISPI控制寄存器控制寄存器SSPCONSSPCON((0x14H0x14H))6SPISPI控制寄存器控制寄存器SSPCONSSPCON((0x14H0x14H))7SPISPI状态寄存器状态寄存器SSPSTATSSPSTAT((0x94H0x94H))8SPISPI状态寄存器状态寄存器SSPSTATSSPSTAT((0x94H0x94H))9SSPSRSSPSR移位寄存器移位寄存器直接从端口引脚接收或发送数据,将已经成直接从端口引脚接收或发送数据,将已经成功接收到的数据送到缓冲器功接收到的数据送到缓冲器SSPBUFSSPBUF中,或者从缓中,或者从缓冲器冲器SSPBUFSSPBUF读取将发送的数据。读取将发送的数据。bit7bit6bit5bit4bit3bit2bit1bit0MSSP接收/发送数据串行移位空间SSPBUFSSPBUF((收收//发数据缓冲器)发数据缓冲器)bit7bit6bit5bit4bit3bit2bit1bit0MSSP接收/发送数据缓冲空间10SPISPI模式工作原理模式工作原理要发送的数据通过数据总线送入发送缓冲要发送的数据通过数据总线送入发送缓冲器,然后自动传送到移位寄存器中;移位寄存器,然后自动传送到移位寄存器中;移位寄存器接收到数据自动传送到接收缓冲器,然后由器接收到数据自动传送到接收缓冲器,然后由程序读取收到的数据;移位寄存器有移入和移程序读取收到的数据;移位寄存器有移入和移出两个端口,分别与收和发两条通信线路连接出两个端口,分别与收和发两条通信线路连接,负责收发数据。,负责收发数据。SSPSRSSPBUFSSPBUFSSPSR程序数据存入程序数据读取11SPISPI模式电路的基本结构模式电路的基本结构12COUNTEREQU30H;计数器FSR_TEPEQU31H;FSR保护缓冲器ORG0000HNOPSTBSFSTATUS,RP0;选择体1MOVLWB’11010111’;定义RC3/SCK,RC5/SDO输出,RC4/SDI输入MOVWFTRISCCLRFSSPSTAT;清除SMP,CKE位BCFSTATUS,RP0;选择体0MOVLWB’00110010’;设置SSP控制方式:取fosc/64,SPI主控,CKP=1MOVWFSSPCONCALLCHUSHIHUA;调用初始化子程序GOTO$;等待,进入监控状态【例题】利用SPI同步串行功能实现数码管数据串行传送。单片机数据存储器60H~67H定义8个数码管的数据先生缓冲器。13XSHIMOVLW67H;设置显示器缓冲器的初始数据地址MOVWFFSRLOOPMOVFINDF,W;取出数据CALLBMA;查询对应编码CALLOUTXSH;利用SPI方式输出编码数据DECFFSRBTFSSFSR,4;直到8位数码全部输出GOTOLOOP;还没执行完成,继续循环RETURN;子程序完成OURTXSHMOVWFSSPBUF;送至SSPBUF后开始逐位发送LOOP1BSFSTATUS,RP0;设置体1BTFSSSSPSTAT,BF;是否发送完毕GOTOLOOP1;否,继续查询BCFSTATUS,RP0;发送完毕,选择体0MOVFSSPBUF,W;移动SSPBUFRETURN;返回14I2C串行通信模块II22CC((InterIntegratedCircuitInterIntegratedCircuit)总线,用于)总线,用于ICIC之间的通信,如之间的通信,如I/O,A/Ds,I/O,A/Ds,D/As,D/As,FPGAsFPGAs,,传感器,微处理器芯片等作为连接处理器和外设的总线传感器,微处理器芯片等作为连接处理器和外设的总线77--bitbit或者或者1010--bitbit寻址模式寻址模式网络使用网络使用22线线制总线拓扑结构(制总线拓扑结构(数据和时钟数据和时钟)),,两条信号线和一条地线。两条信号线和一条地线。串行数据线串行数据线(SDA(SDA,,SerialData)SerialData),与,与RC4RC4复合。复合。串行时钟线串行时钟线(SCL(SCL,,SerialClock)SerialClock),与,与RC3RC3复合。复合。串行的串行的88位双向数据传送总线。位双向数据传送总线。((标准模式标准模式))在标准模式下,数据传输速率为在标准模式下,数据传输速率为100Kbps100Kbps;;((快速模式快速模式))在快模式下,数据传输速率为在快模式下,数据传输速率为400Kbps400Kbps;;((高速模式高速模式))在高速模式下,数据传输速率为在高速模式下,数据传输速率为3.4Mbps3.4Mbps。。15I2C总线的传输规范II22CC总线的数据传输包括位传输和字节传输两方面总线的数据传输包括位传输和字节传输两方面当位传输时,必须有一个时钟脉冲产生。当位传输时,必须有一个时钟脉冲产生。由于由于II22CC总线中接口连接器件的制作工艺不同(如总线中接口连接器件的制作工艺不同(如CMOSCMOS,,NMOSNMOS等),等),位的逻辑位的逻辑00和和11的电平并不是固定的,它根据连接的电源的电平并不是固定的,它根据连接的电源VDDVDD来确定。来确定。仅当仅当SCLSCL信号线为稳定高电平时,信号线为稳定高电平时,SDASDA信号线上的数据有效信号线上的数据有效当当SCLSCL信号线为低电平时,允许信号线为低电平时,允许SDASDA信号线上的数据改变信号线上的数据改变每一位数据传输需要一个时钟脉冲每一位数据传输需要一个时钟脉冲II22CC总线数据稳定与变化的时序图总线数据稳定与变化的时序图16在位传输时,有两个重要的传输位:在位传输时,有两个重要的传输位:STARTSTART(开始位)和(开始位)和STOPSTOP(结束位)。(结束位)。STARTSTART位出现在位出现在SDASDA信号线电平由高向低转换并且信号线电平由高向低转换并且SCLSCL信号线电平为高信号线电平为高的场合。的场合。STOPSTOP位出现在当位出现在当SDASDA信号线电平由低向高转换并且信号线电平由低向高转换并且SCLSCL信号线维持高信号线维持高电平场合。电平场合。在位传输时,在位传输时,STARTSTART与与STOPSTOP的位置如图所示的位置如图所示::时序图中开始位置与停止位置图I2C总线的传输规范17字节传输时,传送到字节传输时,传送到SDASDA线上的每一个字节必须为线上的每一个字节必须为88位位每次传送的字节数不限;每个字节后面必须跟一个响应位每次传送的字节数不限;每个字节后面必须跟一个响应位数据传输时,首先传输最高有效位(数据传输时,首先传输最高有效位(MSBMSB,,MostSignificantBitMostSignificantBit))在传输的过程中,从设备不能一次接收完一个字节,此时它就使时钟置在传输的过程中,从设备不能一次接收完一个字节,此时它就使时钟置为低电平,迫使主设备等待为低电平,迫使主设备等待从设备能接收下一个数据字节后,释放从设备能接收下一个数据字节后,释放SCLSCL线,继续后面的数据传输线,继续后面的数据传输II22CC总线中数据传输时序图总线中数据传输时序图I2C总线的传输规范18MSSPMSSP模块的模块的II22CC工作方式工作方式MSSPMSSP模块的模块的II22CC工作方式中,完全实现了主工作方式中,完全实现了主//从功能从功能在硬件上实现开始位(在硬件上实现开始位(STARTSTART)和停止位()和停止位(STOPSTOP)的中断,)的中断,在多主机应用中判断总线的空闲,也实现了标准的在多主机应用中判断总线的空闲,也实现了标准的77位或位或1010位地址寻址。位地址寻址。采用两根引脚来传输数据,它们是时钟引脚采用两根引脚来传输数据,