SPI接口及应用【直接拿去演讲吧】_第1页
SPI接口及应用【直接拿去演讲吧】_第2页
SPI接口及应用【直接拿去演讲吧】_第3页
SPI接口及应用【直接拿去演讲吧】_第4页
SPI接口及应用【直接拿去演讲吧】_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

SPI接口及应用

SPI接口及应用1、LED数码管显示原理2、同步串行接口SPI3、SPI接口芯片-MAX72194、MAX7219—数码管显示应用ABCDEFGDpABCDEFGDpabcdefgdpD0D1D2D3D4D5D6D7LED工作原理§12.2字符显示技术ABCDEFGDpabcdefgdpD0D1D2D3D4D5D6D7D7D6D5D4D3D2D1D0数dpgfedcba编码

0001111110x3f1000001100x06010110110x5b010011110x4f011001100x66011000100x62011111010x7d000001110x07011111110x7f011011110x6fA011101110x77B011111000x7cC001110010x39D010111100x57E011110010x79F011100010x71-010000000X40字符编码COM动态扫描显示PB0PB1PB2PB3PB4PB5PB6PB7PD7PD6PD5PD4ATmega16显示程序设计#include<mega16.h>#include<delay.h>charz_biao[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00}//字形表charledbuff[]={1,0,1,2,3}//其中第一个数是当前显示位,后面4个数依次显示在4个位上voiddisplay(){if(ledbuff[0]==1){PORTB=z_biao[ledbuff[1]];PORTD=0X7F;}elseif(ledbuff[0]==2){PORTB=z_biao[ledbuff[2]];PORTD=0XBF;}elseif(ledbuff[0]==3){PORTB=z_biao[ledbuff[3]];PORTD=0XDF;}elseif(ledbuff[0]==4){PORTB=z_biao[ledbuff[4]];PORTB=0XEF;}ledbuff[0]++;if(led[0]>4)ledbuff[0]=1;}voidmain(){intx=7645;DDRB=0XFF;DDRD=0XFF;//显示x的值ledbuff[0]=1;ledbuff[1]=x/1000%10;ledbuff[2]=x/100%10;ledbuff[3]=x/10%10;ledbuff[4]=x%10;while(i--){display();delay_ms(1);

}}SPI接口的全称"SerialPeripheralInterface"意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口一种同步串行外设接口,有信号线少、协议简单、传输速度快的特点,因此有不少外围器件都采用SPI总线,如FlashRAM、A/D转换器、LED显示器、MCU以及计算机网络等。MCU中的SPI接口通过配置可与各个厂家生产的多种标准外围器件直接连接。

8.1SPI原理

SPI接口是在CPU和外围低速器件之间进行同步串行数据传输,在主器件的移位脉冲下,数据按位传输,高位在前,地位在后,为全双工通信,数据传输速度总体来说比I2C总线要快,速度可到达几Mbps。

SPI接口是以主从方式工作的,这种模式通常有一个主器件和一个或多个从器件,其接口包括以下四种信号:

〔1〕MOSI-主器件数据输出,从器件数据输入

〔2〕MISO-主器件数据输入,从器件数据输出

〔3〕SCLK-时钟信号,由主器件产生

〔4〕/SS

-从器件使能信号,由主器件控制

SPI接口原理

SPI8位移位存放器MSBLSB主机SPI8位移位存放器MSBLSB从机MISOMISOMOSIMOSISPI时钟发生器SCKSCK/SS/SSVCC图8-1SPI主/从CPU内部连接主/从CPU的SPI数据传输ATMEGA16SPI引脚配置当SPI被设置成允许时,MOSI〔PB5〕、MISO〔PB6〕、SCK〔PB7〕和/SS〔PB4〕引脚的数据方向,按表8-1中来配置。引脚方向(主SPI)方向(从SPI)MOSI(PB5)(用户定义)输出输入MISO(PB6)输入(用户定义)输出SCK(PB7)(用户定义)输出输入/SS(PB4)(用户定义)输出输入8.1.2/SS引脚功能当SPI被配置为主机时〔SPI控制存放器SPCR的MSTR位置1〕,用户可以决定/SS引脚的方向。假设/SS引脚被设置为输出,该引脚将作为通用输出口,而不影响SPI系统〔通常用于驱动从机的/SS引脚〕;如果/SS被设置为输入,那么/SS必须保持为高电平来保证主机SPI的操作。如果在主机模式下,/SS引脚为输入,而且被外设电路置低,那么该系统认为另外的主机选择该SPI为它的从机并开始对它传递数据。因此,在主机模式下使用中断方式来驱动SPI发送时,存在/SS被置低的可能。因此在中断程序中,应随时检查MSTR位是否为“1”,一旦发现MSTR位被从机清“0”,那么必须由用户再次将其置位,以恢复SPI的主机方式。当SPI被配置为从机时,/SS总是作为输入口。当/SS被外部置低时,SPI功能被激活,MISO变为输出口〔如果被用户配置为输出口时〕,而其他成为输入。如果/SS被置“1”后,所有相关引脚都为输入口,同时SPI处于禁止状态不接收任何数据。8.1.3与SPI接口相关的存放器SPI控制存放器——SPCRSPIESPEDORDMSTRCPOLCPHASPR1SPR0位7〔SPIE〕:SPI中断使能位6〔SPE〕:SPI使能当该位置1时,SPI功能被激活。要使能SPI的任何操作,必须设置该位。位5〔DORD〕:数据移出顺序当DORD=1时,数据传送的顺序为LSB〔低位〕被首先传送;当DORD=0时,数据的MSB〔高位〕被首先传送。位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状态存放器——SPSRSPIFWCOL——————————SPI2X位7〔SPIF〕:SPI中断标志位当串行传送完成时SPIF位被置“1”,且假设SPCR中的SPIE=1、全局中断使能位I=1,那么产生中断。如果/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位〕,然后再进行对SPI数据存放器SPDR的操作处理。位5、4、3、2、1:保存在ATmage16中,这几位保存,读出为“0”。位0〔SPI2X〕:倍速SPISPI数据存放器——SPDRMSBLSB76543210SPI数据存放器可以读/写的存放器,其内容是移位存放器之间传送的数据。写数据到SPDR是初始化数据传送,而读SPDR存放器时,读到的是移位存放器接收缓冲区中的值。CVAVRSPI初始化设置返回123456789101112131415161718192021222324CLKSEGASEGFSEGBSEGGISETV+SEGCSEGESEGDPSEGDDOUTDINDIG0DIG4GNDDIG6DIG2DIG3DIG7GNDDIG5DIG1LOAD图8-2MAX7219引脚图8.2.17219显示控制芯片MAX7219引脚及功能

引脚名称功能1DIN串行数据输入,在CLK的上升沿,移入内部移位寄存器4,9GND地线,两个地引脚必须连在一起13CLK时钟输入,最高频率10MHz,在CLK的上升沿,移入内部16位移位寄存器中;在CLK的下降沿,数据从OUT输出12LOAD数据装载,输入,在LOAD上升沿,移位寄存器接收的数据被锁存2,3,5—8,10,11DIG0—DIG78位数字驱动线,输出,它从显示器吸入电流14—17,20—23SEGA—SEGG,SEGDPLED七段码和小数点驱动器,供给LED电流18ISET在ISET与V+之间接RSET电阻,建立LED峰值段电流19V+电源输入端24DOUT串行数据输出,DIN数据16,5个CLK周期后出现在DOUT端MAX7219工作原理

MAX7219采用串行接收数据,在传送的串行数据中包含有RAM的地址。按照时序要求,单片机将16位二进制数逐位发送到DIN端,在CLK上升沿到来之前DIN必须有效,在CLK的每个上升沿,DIN被串行逐位移入MAX7219内部的16位串行存放器中。设最先移入的数据是D15,最后移入的数据是D0,那么数据格式如下:显示数据或控制字RAM或SFR地址D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0MAX7219内部显示RAM及SFR⑴显示RAM〔地址:*1—*8〕接到DIG0引脚的显示器显示地址为*1H的RAM中的数据,接到DIG1引脚的显示器显示地址为*2H的RAM中的数据,如此类推。⑵译码方式存放器〔地址:*9H〕该存放器的8位二进制数的各位值分别控制着8个LED显示的译码方式。当该位为1时选择相应的显示位位BCD码模式,为0时选择不译码。小数点不译码,它由显示数据的D7位控制,D7=1时小数点亮,D7=0时小数点不亮。MAX7219内部显示RAM及SFR⑶扫描界限存放器〔地址:*BH〕该存放器的D0—D3位数据设定值为0—7H。设定值表示显示器动态扫描个数为1—8。⑷停机存放器〔地址:*CH〕该存放器的D0=0时,MAX7219处于停机状态;当D0=1时,处于正常工作状态。⑸显示测试存放器〔地址:*FH〕当该存放器的D0=0时,MAX7219按设定模式正常工作;当D0=1时,处于测试状态,在测试状态下,不管MAX7219处于什么模式,全部LED将按最大亮度接通显示。MAX7219内部显示RAM及SFR⑹亮度存放器〔地址:*AH〕及亮度的调节与控制LED的亮度可通过硬件和软件两种方式调节或控制。硬件调节在V+和ISET之间外接电阻RSET,可控制LED段电流,到达硬件调节LED亮度的目的。LED亮度的程控亮度存放器中的D0—D3位可以控制LED显示器的亮度。该存放器可按其地址方便地写入,从而实现亮度的程控。方法是:D0—D3控制内部的脉宽调制器〔DAC〕的占空比来控制LED段电流的平均值,以到达控制亮度的目的。当亮度存放器D0—D3位从0变化到0FH时,DAC的占空比从1/32变化到31/32,共16个控制等级,每级变化2/32。⑺MAX7219级联在实际应用中MAX7219可以级联,即前一片的DOUT可接到后一片的DIN上,各片的CLK、LOAD分别并接。与单片机接口时,只需3根控制线即可进行多片MAX7219的控制。数据传送与装载方法同单片MAX7219时相似,所不同的是当N片级联时,各片MAX7219共接收到N×16位数据后再将LOAD由低变高,从而实现N片MAX7219同时装载数据。返回8.2.3应用课题——MAX7219的控制显示1.接口原理框图8位LED显示器LOADCLKDINPB5PB7PB4/SSSCKMOSI12131MAX7219ATmega16图8-3ATmega16与MAX7219的接口原理图在图8-3中,将ATmega16单片机SPI的串行数据输出MOSI〔PB5引脚〕与MAX7219的数据输入线DIN相连,作为数据传送线;将SPI的同步传送时钟SCK〔PB7引脚〕与MAX7219的时钟输入线CLK相连,作为同步时钟信号;SPI的/SS线〔PB4引脚〕作输出与MAX7219的数据转载线LOAD相连,作为数据发送、数据接收的控制线。程序范例SPI的数据传送采用查询方式,整个传送过程设计成一子函数spi_xie(i,j);i为存储器地址,j为传送的数据。MAX7219芯片需初始化,初始化过程亦用一子函数spi_7219c()。多参数显示函数xunce(charbianhao,intcanshu,chardianwei)。用文件spi_7219.c保存以下程序:#include"io.h"#defineucharunsignedcharvoidspi_xie(uchari,ucharj){DDRB=0xBF;//选通7219SPCR=0x5e;//SPI设置PORTB=PORTB&0xEF; //load_7219=0;SPDR=i;while(bit_is_clear(SPSR,7)); //等待SPI发送完SPDR=j;while(bit_is_clear(SPSR,7))

温馨提示

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

评论

0/150

提交评论