ATmega 16 单片机的SPI的相关寄存器(九)
2016-10-22 来源:eefocus
SPIE SPE DORD MSTR CPOL CPHA SPR1 SPR0
位 7——SPIE:使能SPI中断
置位后,只要SPSR寄存器的SPIF和SREG寄存器的全局中断使能位置位,就会引发SPI中断。
位 6——SPE:使能SPI
SPE置位将使能SPI。进行任何SPI操作之前必须置位SPE。
位 5——DORD:数据次序
DORD置位时数据的LSB首先发送;否则数据的MSB首先发送。
位 4——MSTR:主/从选择
MSTR置位时选择主机模式,否则为从机。如果MSTR为'1”,SS配置为输入,但被拉低,则MSTR被清零,寄存器SPSR的SPIF置位。用户必须重新设置MSTR进入主机模式。
位3——CPOL:时钟极性
CPOL置位表示空闲时SCK为高电平;否则空闲时SCK为低电平。CPOL功能总结如下:
CPOL 起始沿 结束沿
0 上升沿 下降沿
1 下降沿 上升沿
位 2——CPHA:时钟相位
CPHA决定数据是在SCK的起始沿采样还是在SCK的结束沿采样。
CPHA 起始沿 结束沿
0 采样 设置
1 设置 采样
位1,0——SPR1,SPR0:SPI时钟速率选择1与0
确定主机的SCK速率。SPR1和SPR0对从机没有影响。SCK和振荡器的时钟频率fosc关系如下表所示:
SPI2X SPR1 SPR0 SCK频率
0 0 0 fosc/4
0 0 1 fosc/16
0 1 0 fosc/64
0 1 1 fosc/128
1 0 0 fosc/2
1 0 1 fosc/8
1 1 0 fosc/32
1 1 1 fosc/64
2.SPSR——SPI状态寄存器
SPIF WCOL – – – – – SPI2X
位7——SPIF:SPI中断标志
串行发送结束后,SPIF置位。若此时寄存器SPCR的SPIE和全局中断使能位置位,SPI中断即产生。如果SPI为主机,SS配置为输入,且被拉低,SPIF也将置位。进入中断服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对SPIF清零。
位 6——WCOL:写碰撞标志
在发送当中对SPI数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,紧接着访问SPDR来清零。
位5..1——Res:保留
保留位,读操作返回值为零。
位0——SPI2X:SPI倍速
置位后SPI的速度加倍。若为主机,则SCK频率可达CPU频率的一半。若为从机,只能保证fosc/4。
3.SPDR——SPI数据寄存器
相对于串行数据,SCK的相位和极性有4种组合。CPHA和CPOL控制组合的方式。每一位数据的移出和移入发生于SCK不同的信号跳变沿,以保证有足够的时间使数据稳定。说明如下:
起始沿 结束沿 SPI模式
CPOL=0,CPHA=0 采样(上升沿) 采样(下降沿) 0
CPOL=0,CPHA=1 设置(上升沿) 采样(下降沿) 1
CPOL=1,CPHA=0 采样(下降沿) 采样(上升沿) 2
CPOL=1,CPHA=1 采样(下降沿) 采样(上升沿) 3