串行外设接口 SPI允许 ATmega16 和外设或其他 AVR 器件进行高速的同步数据传输。7 种可编程的比特率,主机或从机操作,全双工, 3
线同步数据传输,可以从闲置模式唤醒 ,作为主机时具有倍速模式 (CK/2)
/*
PB7 SCK (SPI 总线的串行时钟 )
PB6 MISO (SPI 总线的主机输入 / 从机输出信号 )
PB5 MOSI (SPI 总线的主机输出 / 从机输入信号 )
PB4 SS (SPI 从机选择引脚 )
SCK – 端口 B, Bit 7 SCK :SPI 通道的主机时钟输出,从机时钟输入端口。工作于从机模式时,不论 DDB7 设
置如何,这个引脚都将设置为输入。工作于主机模式时,这个引脚的数据方向由 DDB7 控
制。设置为输入后,上拉电阻由 PORTB7 控制。
MISO – 端口 B, Bit 6 MISO :SPI 通道的主机数据输入,从机数据输出端口。工作于主机模式时,不论 DDB6 设
置如何,这个引脚都将设置为输入。工作于从机模式时,这个引脚的数据方向由 DDB6 控
制。设置为输入后,上拉电阻由 PORTB6 控制。
MOSI – 端口 B, Bit 5 MOSI : SPI 通道的主机数据输出,从机数据输入端口。工作于从机模式时,不论 DDB5 设
置如何,这个引脚都将设置为输入。当工作于主机模式时,这个引脚的数据方向由 DDB5
控制。设置为输入后,上拉电阻由 PORTB5 控制。
SS – 端口 B, Bit 4 SS: 从机选择输入。工作于从机模式时,不论 DDB4设置如何,这个引脚都将设置为输入。
当此引脚为低时 SPI 被激活。工作于主机模式时,这个引脚的数据方向由 DDB4 控制。设
置为输入后,上拉电阻由 PORTB4 控制。
简单定义:
引脚 方向SPI主机 方向SPI从机
MOSI 用户定义 输入
MISO 输入 用户定义
SCK 用户定义 输入
SS 用户定义 输入
//*************************************SPI
控制寄存器SPCR***************************************
SPI 控制寄存器SPCR
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
SPIE: 使能SPI 中断
置位后,只要SPSR 寄存器的SPIF 和SREG 寄存器的全局中断使能位置位,就会引发
SPI 中断
SPE: 使能SPI
SPE 置位将使能SPI。进行任何SPI 操作之前必须置位SPE
DORD: 数据次序
DORD 置位时数据的LSB 首先发送;否则数据的MSB 首先发送
MSTR: 主/ 从选择
MSTR置位时选择主机模式,否则为从机。如果MSTR为"1”,SS配置为输入,但被拉
低,则MSTR 被清零,寄存器SPSR 的SPIF 置位。用户必须重新设置MSTR 进入主机
模式。
CPOL: 时钟极性
CPOL 置位表示空闲时SCK 为高电平;否则空闲时SCK 为低电平。
CPOL 功能