串行接口及应用课件

上传人:我*** 文档编号:143674395 上传时间:2020-09-01 格式:PPT 页数:36 大小:144KB
返回 下载 相关 举报
串行接口及应用课件_第1页
第1页 / 共36页
串行接口及应用课件_第2页
第2页 / 共36页
串行接口及应用课件_第3页
第3页 / 共36页
串行接口及应用课件_第4页
第4页 / 共36页
串行接口及应用课件_第5页
第5页 / 共36页
点击查看更多>>
资源描述

《串行接口及应用课件》由会员分享,可在线阅读,更多相关《串行接口及应用课件(36页珍藏版)》请在金锄头文库上搜索。

1、第 章串行接口及应用,8,本章内容,同步串行接口SPI SPI 应 用 异步串行接口USART USART的异步串行通行应用 两线串行TWI总线接口及应用,8.1.1 SPI 原理,SPI 8位移位寄存器,MSB,LSB,主机,SPI 8位移位寄存器,MSB,LSB,从机,MISO,MISO,MOSI,MOSI,SPI时钟发生器,SCK,SCK,/SS,/SS,VCC,图8-1 SPI主/从CPU内部连接,主/从CPU的SPI数据传输,表8-1 SPI引脚配置,当SPI被设置成允许时,MOSI(PB5)、MISO(PB6)、SCK(PB7)和/SS(PB4)引脚的数据方向,按表8-1中来配置。

2、,8.1.2 /SS引脚功能,当SPI被配置为主机时(SPI控制寄存器SPCR的MSTR位置1),用户可以决定/SS引脚的方向。若/SS引脚被设置为输出,该引脚将作为通用输出口,而不影响SPI系统(通常用于驱动从机的/SS引脚);如果/SS被设置为输入,则/SS必须保持为高电平来保证主机SPI的操作。如果在主机模式下,/SS引脚为输入,而且被外设电路置低,则该系统认为另外的主机选择该SPI为它的从机并开始对它传递数据。因此,在主机模式下使用中断方式来驱动SPI发送时,存在/SS被置低的可能。因此在中断程序中,应随时检查MSTR位是否为“1”,一旦发现MSTR位被从机清“0”,则必须由用户再次将

3、其置位,以恢复SPI的主机方式。 当SPI被配置为从机时,/SS总是作为输入口。当/SS被外部置低时,SPI功能被激活,MISO变为输出口(如果被用户配置为输出口时),而其他成为输入。如果/SS被置“1”后,所有相关引脚都为输入口,同时SPI处于禁止状态不接收任何数据。,8.1.3 与SPI接口相关的寄存器,SPI控制寄存器SPCR,位7(SPIE):SPI中断使能 位6(SPE):SPI使能 当该位置1时,SPI功能被激活。要使能SPI的任何操作,必须设置该位。 位5(DORD):数据移出顺序 当DORD=1时,数据传送的顺序为LSB(低位)被首先传送;当DORD=0时,数据的MSB(高位)

4、被首先传送。 位4(MSTR):主/从机选择 当MSTR=1时,选择主机SPI模式;MSTR=0时,选择从机SPI模式。 位3(CPOL):时钟(SCK)极性选择 当该位被设置为“1”时,SCK在闲置时是高电平;当CPOL为“0”时,SCK在闲置时是低电平。 位2(CPHA):时钟(SCK)相位选择 CPHA位的设置决定了串行数据的锁存采样是在SCK时钟的前沿还是在SCK时钟的后沿。 位1、0(SPR1、SPR0):时钟速率选择位,SPI状态寄存器SPSR,位7(SPIF):SPI中断标志位 当串行传送完成时SPIF位被置“1”,且若SPCR中的SPIE=1、全局中断使能位I=1,则产生中断。

5、如果/SS被设置为输入且在SPI是主机模式时被外部拉低,此时将设置SPIF标志。SPIF标志位的属性为只读,清零SPIF有两种方式: 硬件方式。MCU响应SPI中断,转入相应中断程序的同时,SPIF位由硬件自动清“0”。 软件方式。先读取SPI状态寄存器SPSR(读SPSR的操作将会自动清除SPIF位),紧接着对SPI数据寄存器SPDR的操作处理。 位6(WCOL):写冲突标志位 如果在SPI接口的数据传送过程中,对SPI的数据存储器SPDR写入数据,将会置位WCOL。清零WCOL标志只能通过软件方式:先读取SPI状态寄存器SPSR(读SPSR的操作将会自动清除SPIF位和WCOL位),然后再

6、进行对SPI数据寄存器SPDR的操作处理。 位5、4、3、2、1:保留 在ATmage16中,这几位保留,读出为“0”。 位0(SPI2X):倍速SPI,SPI数据寄存器SPDR,MSB LSB,7 6 5 4 3 2 1 0,SPI数据寄存器可以读/写的寄存器,其内容是移位寄存器之间传送的数据。写数据到SPDR是初始化数据传送,而读SPDR寄存器时,读到的是移位寄存器接收缓冲区中的值。,8.2.1 7219显示控制芯片,MAX7219引脚及功能,MAX7219工作原理,MAX7219采用串行接收数据,在传送的串行数据中包含有RAM的地址。按照时序要求,单片机将16位二进制数逐位发送到DIN端

7、,在CLK上升沿到来之前DIN必须有效,在CLK的每个上升沿,DIN被串行逐位移入MAX7219内部的16位串行寄存器中。设最先移入的数据是D15,最后移入的数据是D0,则数据格式如下:,MAX7219内部显示RAM及SFR,显示RAM(地址:*1*8) 接到DIG0引脚的显示器显示地址为*1H的RAM中的数据,接到DIG1引脚的显示器显示地址为*2H的RAM中的数据,如此类推。 译码方式寄存器(地址:*9H) 该寄存器的8位二进制数的各位值分别控制着8个LED显示的译码方式。当该位为1时选择相应的显示位位BCD码模式,为0时选择不译码。小数点不译码,它由显示数据的D7位控制,D7=1时小数点

8、亮,D7=0时小数点不亮。,MAX7219内部显示RAM及SFR,扫描界限寄存器(地址:*BH) 该寄存器的D0D3位数据设定值为07H。设定值表示显示器动态扫描个数为18。 停机寄存器(地址:*CH) 该寄存器的D0=0时,MAX7219处于停机状态;当D0=1时,处于正常工作状态。 显示测试寄存器(地址:*FH) 当该寄存器的D0=0时,MAX7219按设定模式正常工作;当D0=1时,处于测试状态,在测试状态下,不管MAX7219处于什么模式,全部LED将按最大亮度接通显示。,MAX7219内部显示RAM及SFR,亮度寄存器(地址:*AH)及亮度的调节与控制 LED的亮度可通过硬件和软件两

9、种方式调节或控制。 硬件调节 在V+和ISET之间外接电阻RSET,可控制LED段电流,达到硬件调节LED亮度的目的。 LED亮度的程控 亮度寄存器中的D0D3位可以控制LED显示器的亮度。该寄存器可按其地址方便地写入,从而实现亮度的程控。方法是:D0D3控制内部的脉宽调制器(DAC)的占空比来控制LED段电流的平均值,以达到控制亮度的目的。 当亮度寄存器D0D3位从0变化到0FH时,DAC的占空比从1/32变化到31/32,共16个控制等级,每级变化2/32。 MAX7219级联 在实际应用中MAX7219可以级联,即前一片的DOUT可接到后一片的DIN上,各片的CLK、LOAD分别并接。与

10、单片机接口时,只需3根控制线即可进行多片MAX7219的控制。数据传送与装载方法同单片MAX7219时相似,所不同的是当N片级联时,各片MAX7219共接收到N16位数据后再将LOAD由低变高,从而实现N片MAX7219同时装载数据。,8.2.3 应用课题MAX7219的控制显示,1. 接口原理框图,1,MAX7219,ATmega16,图8-3 ATmega16与MAX7219的接口原理图,在图8-3中,将ATmega16 单片机SPI的串行数据输出 MOSI(PB5引脚)与MAX 7219的数据输入线DIN相连 ,作为数据传送线;将SPI 的同步传送时钟SCK(PB7 引脚)与MAX721

11、9的时钟 输入线CLK相连,作为同步 时钟信号;SPI的/SS线 (PB4引脚)作输出与MAX 7219的数据转载线LOAD相 连,作为数据发送、数据接 收的控制线。,程序范例,SPI的数据传送采用查询方式,整个传送过程设计成一子函数spi_xie(i,j);i为存储器地址,j为传送的数据。MAX7219芯片需初始化,初始化过程亦用一子函数spi_7219c( )。多参数显示函数xunce(char bianhao,int canshu ,char dianwei)。用文件spi_7219.c保存下列程序: #include io.h #define uchar unsigned char v

12、oid spi_xie(uchar i,uchar j) DDRB=0 xBF;/选通7219 SPCR=0 x5e; /SPI设置 PORTB=PORTB /结束对7219的传送 ,程序范例,void spi_7219c() /7219初始化 spi_xie(0 x0b,0 x07);/显示8位 spi_xie(0 x0a,0 x02);/亮度调节 spi_xie(0 x09,0 xff);/每位BCD输入 spi_xie(0 x0c,0 x01);/工作状态 spi_xie(0 x0f,0 x00);/非测试 /* 多参数显示,前两位显示参数编号,后6位显示整型参数,小数点设在第n+1位

13、*/ void xunce_7219(uchar i,int y,uchar n) /把i送到显示器的第一、二位,把y送到第三至八位,n为小数点所在位 uchar lcd8; uchar j; n=n ,程序范例,lcd3=(uchar)(y/10000%10); lcd4=(uchar)(y/1000%10); lcd5=(uchar)(y/100%10); lcd6=(uchar)(y/10%10); lcd7=(uchar)(y%10); for (j=0;j8;j+) if(n=j) lcdj=lcdj+0 x80; /加入小数点 spi_xie(j+1,lcdj); /送显示数据到7

14、219 ,8.3 异步串行接口原理,异步串行通讯是指具有不规则数据段传送特性的串行通讯。这种数据链路控制形式是面向字符的。在异步通讯中,发送的每一个数据字符均由起始位、数据位、停止位和可选择的奇偶校验位组成,数据之间没有特殊的关系,也没有发送和接受时钟。 串行数据通讯的方法分为三种:单工、半双工、全双工。 波特率 - 通讯速率 RS232C使用的是电平协议,这种单端电气接口电平与TTL和CMOS电平有很大的不同,它的逻辑“0”至少是3V以上,它的逻辑“1”至少是-3V以下。,ATmega103通用串行接口UART,ATmega103单片机带有一个全双工的通用串行异步收发器(UART-Unive

15、rsal Asynchronous Receiver and Transmitter)主要特征如下: 1 波特率发生器可以生成多种波特率(bps) 2 在XTAL低频率下有高的波特率; 3 8 位或9 位数据; 4 噪声滤波; 5 超越误差的检测; 6 帧错误探测; 7 错误起始位的检测; 8 三个独立的中断:发送TX完成,发送TX数据寄存器为空,接受RX完成。,UART控制,1、UART- I/O数据寄存器UDR,UDR寄存器是两个物理分离的寄存器,分享相同的I/O地址。 当写入寄存器时,UART的发送数据寄存器被写入;当读 UDR时读的是UART接收寄存器。,2、UART 状态寄存器USR

16、,USR寄存器是一个只读的寄存器,提供UART的状态信息。下面对每一位进行说明。 位7-RXC:UART接收完成 位6-TXC:UART发送完成 位5-UDRE:UART数据寄存器空 位4-FE:帧出错 位3-OR:溢出出错 位2、1、0-Res:保留位,3、UART控制寄存器UCR,位7-RXCIE:RX完成中断开放 当该位被置1时,如全局中断被允许,在USR中置位RXC位将导致接收完成中断被执行。 位6-TXCIE:TX完成中断开放 当该位被置1时,如全局中断被允许,在USR中置位TXC位将导致发送完成中断被执行。 位5-UDRIE:UART数据寄存器空中断开放 当该位被置1时,如果全局中断被允许,在USR中设置UDRE位将导致UART数据寄存器空中断被执行。 位4-RXEN:接收开放 当该位被置1时,允许UART接收。当接收器被禁止时,TXC、O

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号