1、AVR单片机的SPI接口
SPI(SerialPeripheralINTERFACE—串行外设接口)总线体系是一种同步串行外设接口,答应MCU与各种外围设备以串行方法进行通讯、数据交流,广泛应用于各种工业操控范畴。基于此规范,SPI体系能够直接于各个厂家出产的多种规范外围器材直接接口。SPI接口一般包含有4根线:串行时钟(SCK)、主机输入/从机输出数据线(MISO)、主机输出/从机输入数据线(MOSI)和低电平有用的从机挑选线SS。在从机挑选线SS使能的前提下,主机的SCK脉冲将在数据线上传输主/从机的串行数据。主/从机的典型衔接图如图(1)所示:
图(1)主/从机的衔接图
串行外设接口SPI答应ATmega16和外设之间进行高速的同步数据传输。ATmega16SPI的特色如下:全双工,3线同步数据传输,主/从机操作,LSB首要发送或MSB首要发送,7种可编程的比特率,传送中止完毕,写磕碰标志检测,能够从搁置形式唤醒,作为主机时具有双速形式(CK/2)。
如图(2)所示,体系包含两个移位寄存器和一个主时钟发生器。经过将需求的从机的SS引脚拉低,主机发动一次通讯进程。主机和从机将需求的数据放到相应的移位寄存器,主机在SCK引脚上发生时钟脉冲以交流数据。主机的数据从MOSI移出,从从机MISO移入。从机的数据从MISO移出,从从机MOSI移入。主机经过将从机的SS拉高完成与从机的同步。
图(2)SPI主机-从机的互连
下面将介绍SPI的几个特别寄存器:
1.1SPI的操控寄存器—SPCR
SPIE为SPI中止使能,置位后,只需SPSR寄存器的SPIF和SREG寄存器的大局中止使能方位位,就会引发SPI中止。SPE置位将使能SPI,DORD置位时数据的LSB首要发送;不然数据的MSB首要发送。MSTR置位时挑选主机形式,不然为从机。CPOL置位表明闲暇SCK为高电平;不然闲暇时SCK为低电平。CPHA决议数据是在SCK的开端沿采样仍是在SCK的完毕沿采样。经过对SPR1、SPR0进行规划,确认主机的SCK速率。
1.2SPI的状况寄存器—SPSR
SPIF为中止标志位,串行发送完毕后,SPIF置位。若此刻寄存器 SPCR的SPIE和大局中止使能方位位,SPI中止即发生。进入中止例程后SPIF将主动清零。在发送傍边对SPI数据寄存器SPDR写数据将置位WCOL,SPI2X置位后SPI的速度加倍。
1.3SPI的数据寄存器—SPDR
SPDR数据寄存器为读/写寄存器,用来在寄存器文件SPI移位寄存器之间传输数据。写寄存器将发动数据传输,读寄存器将读取寄存器的接纳缓冲器。SPI体系的发送方向只要一个缓冲器,而在接纳方向有两个缓冲器。也便是说,在发送时一定要比及移位进程悉数完毕后才能对SPI数据寄存器履行写操作。而在接纳数据时,需求鄙人一个字符移位进程完毕之前经过拜访SPI数据寄存器读取当时接纳到的字符。不然第一个字节将丢掉。
比起8051运用软件模仿时序完成SPI功能来,AVR的硬件SPI实在是先进了许多。经过读写相应的寄存器就能轻松完成SPI的操作,使得编程变得愈加方面。下面是运用AVR SPI的几个过程:
- 首要,应设置相应管脚的读写寄存器以设定数据传输方向。在Mega16里,SPI的接口为以下管脚:PB4-PB7 (SS/MOSI/MISO/CLK)。假如作业在主形式则能够这么写(PORTB=0xff; DDRB=0xBF; PB7(SCK):输出 PB6(MISO):输入 PB5(MOSI):输出 PB4(SS):输出)
- 接着还需求设定SPI作业寄存器,操控的寄存器只要三个:SPDR(SPI数据寄存器)、SPCR(SPI操控寄存器)、SPSR(SPI状况寄存器),其间SPDR是读写移位寄存器中的值,SPSR中包含了SPIE:SPI中止使能位 SPE:SPI使能位 DORD:数据传送从最高位或最低位开端MSTR:主从作业方法挑选 COPL/CPHA:时钟极性相位挑选 SPR1/SPR0:时钟速率挑选;SPSR中主要是几个状况标志位,用来做软件查询,SPIF:SPI中止标志位 WCOL:冲则能够如下设置突标志位 假如运用的是软件查询, SPCR中只需求置SPE和MSTR两位。
- 随后的作业便是往SPDR里读写数据,需求留意的是一次最少读写一个Byte(8 bit)的数据,这和硬件的规划有关。在读取数据前需求先写入数据。能够一次读写一个字节,也能够块读写,在OurAVR上的例程中这两种方法均有.