当前位置:首页 > 单片机 > 单片机
[导读]十、ATMEGA16的同步串行接口十—(01)、ATMEGA16的同步串行接口的介绍1、ATMEGA16的SPI特点串行外设接口SPI 允许ATmega16 和外设或其他AVR 器件进行高速的同步数据传输。ATmega16 SPI 的特点如下:? 全双工, 3 线同

十、ATMEGA16的同步串行接口

十—(01)、ATMEGA16的同步串行接口的介绍

1、ATMEGA16的SPI特点

串行外设接口SPI 允许ATmega16 和外设或其他AVR 器件进行高速的同步数据传输。
ATmega16 SPI 的特点如下:
? 全双工, 3 线同步数据传输
? 主机或从机操作
? LSB 首先发送或MSB 首先发送
? 7 种可编程的比特率
? 传输结束中断标志
? 写碰撞标志检测
? 可以从闲置模式唤醒
? 作为主机时具有倍速模式(CK/2)



2、主机与从机之间的SPI连接以及原理

主机和从机之间的SPI 连接如Figure 66 所示。 系统包括两个移位寄存器和一个主机时钟
发生器。通过将需要的从机的 SS 引脚拉低,主机启动一次通讯过程。主机和从机将需要
发送的数据放入相应的移位寄存器。主机在SCK 引脚上产生时钟脉冲以交换数据。主机
的数据从主机的MOSI 移出,从从机的MOSI 移入;从机的数据从从机的MISO 移出,从
主机的MISO 移入。主机通过将从机的SS 拉高实现与从机的同步。
配置为SPI 主机时, SPI 接口不自动控制 SS 引脚,必须由用户软件来处理。(还有~~就是主机和从机的两个移位寄存器可以被认定为一个公开的16位环形移位寄存器)对 SPI 数
据寄存器写入数据即启动SPI 时钟,将8 比特的数据移入从机。传输结束后SPI 时钟停
止,传输结束标志SPIF 置位。如果此时SPCR 寄存器的SPI 中断使能位SPIE 置位,中
断就会发生。主机可以继续往SPDR 写入数据以移位到从机中去,或者是将从机的SS 拉
高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。

配置为从机时,只要SS 为高,SPI 接口将一直保持睡眠状态,并保持MISO 为三态。在
这个状态下软件可以更新SPI 数据寄存器SPDR 的内容。即使此时SCK 引脚有输入时
钟,SPDR 的数据也不会移出,直至SS 被拉低。一个字节完全移出之后,传输结束标志
SPIF置位。如果此时SPCR寄存器的SPI中断使能位SPIE置位,就会产生中断请求。在读
取移入的数据之前从机可以继续往SPDR 写入数据。最后进来的数据将一直保存于缓冲
寄存器里。



SPI 系统的发送方向只有一个缓冲器,而在接收方向有两个缓冲器。也就是说,在发送时
一定要等到移位过程全部结束后才能对SPI 数据寄存器执行写操作。而在接收数据时,需
要在下一个字符移位过程结束之前通过访问SPI 数据寄存器读取当前接收到的字符。否则
第一个字节将丢失。
工作于SPI 从机模式时,控制逻辑对SCK 引脚的输入信号进行采样。为了保证对时钟信
号的正确采样, SPI 时钟不能超过fosc/4。



下面的例程说明如何将SPI 初始化为主机,以及如何进行简单的数据发送。例子中
DDR_SPI必须由实际的数据方向寄存器代替;DD_MOSI、DD_MISO和DD_SCK必须由

实际的数据方向代替。比如说, MOSI 为PB5 引脚,则DD_MOSI 要用DDB5 取代,
DDR_SPI 则用DDRB 取代。

void SPI_MasterInit(void)
{

DDR_SPI = (1<
SPCR = (1<}
void SPI_MasterTransmit(char cData)
{

SPDR = cData;

while(!(SPSR & (1<;
}

void SPI_SlaveInit(void)
{

DDR_SPI = (1<
SPCR = (1<}
char SPI_SlaveReceive(void)
{

while(!(SPSR & (1<;

return SPDR;
}

3、SS 引脚的功能

从机模式

当SPI 配置为主机时,从机选择引脚SS 总是为输入。SS 为低将激活SPI 接口, MISO
成为输出( 用户必须进行相应的端口配置) 引脚,其他引脚成为输入引脚。当SS 为高时
所有的引脚成为输入, SPI 逻辑复位,不再接收数据。
SS引脚对于数据包/字节的同步非常有用,可以使从机的位计数器与主机的时钟发生器同
步。当SS 拉高时SPI从机立即复位接收和发送逻辑,并丢弃移位寄存器里不完整的数据。
主机模式

当SPI 配置为主机时(MSTR 的SPCR 置位),用户可以决定SS 引脚的方向。
若SS 配置为输出,则此引脚可以用作普通的I/O 口而不影响SPI 系统。典型应用是用来
驱动从机的SS 引脚。
如果SS 配置为输入,必须保持为高以保证SPI 的正常工作。若系统配置为主机, SS 为
输入,但被外设拉低,则SPI 系统会将此低电平解释为有一个外部主机将自己选择为从
机。为了防止总线冲突, SPI 系统将实现如下动作:
1. 清零SPCR 的MSTR 位,使SPI 成为从机,从而MOSI 和SCK 变为输入。
2. SPSR 的SPIF 置位。若SPI 中断和全局中断开放,则中断服务程序将得到执行。
因此,使用中断方式处理SPI 主机的数据传输,并且存在SS 被拉低的可能性时,中断服
务程序应该检查MSTR 是否为"1”。若被清零,用户必须将其置位,以重新使能SPI 主机
模式。

4、SPI的相关寄存器

1)SPI控制寄存器



? Bit 7 – SPIE: 使能SPI 中断
置位后,只要SPSR 寄存器的SPIF 和SREG 寄存器的全局中断使能位置位,就会引发
SPI 中断。
? Bit 6 – SPE: 使能SPI
SPE 置位将使能SPI。进行任何SPI 操作之前必须置位SPE。
? Bit 5 – DORD: 数据次序
DORD 置位时数据的LSB 首先发送;否则数据的MSB 首先发送。
? Bit 4 – MSTR: 主/ 从选择
MSTR置位时选择主机模式,否则为从机。如果MSTR为"1”,SS配置为输入,但被拉低,
则MSTR 被清零,寄存器SPSR 的SPIF 置位。用户必须重新设置MSTR 进入主机模式。

? Bit 3 – CPOL: 时钟极性
CPOL 置位表示空闲时SCK 为高电平;否则空闲时SCK 为低电平。请参考 Figure 67 与
Figure 68。 CPOL 功能总结如下:



? Bit 2 – CPHA: 时钟相位
CPHA 决定数据是在SCK 的起始沿采样还是在SCK 的结束沿采样。请参考Figure 67 与
Figure 68 。



? Bits 1, 0 – SPR1, SPR0: SPI 时钟速率选择1 与0
确定主机的SCK 速率。SPR1 和SPR0 对从机没有影响。SCK 和振荡器的时钟频率fosc
关系如下表所示:


2)SPI状态寄存器



? Bit 7 – SPIF: SPI 中断标志
串行发送结束后,SPIF 置位。若此时寄存器SPCR 的SPIE 和全局中断使能位置位,SPI
中断即产生。如果SPI 为主机, SS 配置为输入,且被拉低, SPIF 也将置位。进入中断
服务程序后SPIF自动清零。或者可以通过先读SPSR,紧接着访问SPDR来对SPIF清零。
? Bit 6 – WCOL: 写碰撞标志
在发送当中对SPI 数据寄存器SPDR写数据将置位WCOL。WCOL可以通过先读SPSR,
紧接着访问SPDR 来清零。
? Bit 5..1 – Res: 保留
保留位,读操作返回值为零。
? Bit 0 – SPI2X: SPI 倍速
置位后SPI 的速度加倍。若为主机( 见 Table 58),则SCK 频率可达CPU 频率的一半。
若为从机,只能保证fosc /4。

3)SPI 数据寄存器- SPDR


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

引言   现场总线作为生产过程自动化发展的重点,对推动自动化技术起到巨大的推动作用,是现代化工业的标志。MODBUS作为现场总线的一种通信协议,它实现了PLC控制器、工控仪表与设备间的通

关键字: avr单片机 智能控制系统 modbus协议

一、项目概述 1.1 引言 温室是一种可以改变植物生长环境、为植物生长创造最佳条件、避免外界四季变化和恶劣气候对其影响的场所。它以采光覆盖材料作为全部或部分结构材料,可在冬季或其

关键字: avr单片机

一、项目概述 1.1 引言 随着社会的发展,高层建筑和智能化建筑的不断出现,作为垂直运输工具的电梯得到了越来越广泛的应用,人们对电梯服务质量及可靠运行提出了越来越高的要求。在20

关键字: avr单片机 节能电梯

VR给人一种沉浸感,具有传统娱乐方式不可比拟的优势。理想的VR让人分不清现实和虚拟,VR领路人相信VR能够改变人们的生活方式。 过去的时间,那些VR领域的佼佼者们有两件事做得非常好:一是

关键字: avr单片机

什么是AVR单片机?应该如何取学习?学习单片机的小伙伴都知道,衡量单片机性能好坏的指标主要有:可靠性好、功能强、高速度、低功耗和低价位,依靠这几点,作为单片机家族中性能较高的AVR,你真的能理解吗?

关键字: AVR avr单片机 寄存器

单片机诞生于20世纪70年代末,它是指一个集成在一块芯片上的完整计算机系统。单片机具有一个完整计算机所需要的大部分部件:CPU、内存、内部和外部总线系统,目前大部分还会具有外存。同时集成诸如通讯接口、定时器,实时时钟等外...

关键字: avr单片机 单片机

pic单片机使用较多,因此学习pic单片机的人数也相对较多。对于pic单片机,它的优点众所皆知。此文对pic单片机的讲解在于介绍pic单片机的IO口操作。但本文不仅仅局限于pic单片机,同样将对51单片、AVR单片机IO...

关键字: avr单片机 pic单片机 io操作

对于pic单片机的学习,很多朋友总是能充满激情,不断利用闲余时间研究pic单片机的各类技术。而谈及pic单片机,必须牵扯至51、AVR单片机。因此本文中,将探讨pic单片机以及51、AVR单片机对于IO口的操作。对于本文...

关键字: 51单片机 avr单片机 pic单片机

单片机控制开关电源,单从对电源输出的控制来说,可以有几种控制方式。

关键字: avr单片机 开关电源

针对AT24Cxx系列eeprom存储器,写的时候有越页功能,不用考虑页边界,I2C用软件模拟实现,完善中…#define SDA1() PORTC|=1

关键字: at24c01 avr单片机 eeprom 读写程序
关闭
关闭