AVR 单片机的串行外设接口 SPI 允许 ATMEGA16(L)和外设或其他 AVR 器件进行高速的同步数据传输。 14.1 ATMEGA16(L)的SPI特点 1. 全双工,3 线同步数据传输 2. 主机或从机操作 3. LSB 首先发送或 MSB 首先发送 4. 7 种可编程的比特率 5. 传输结束中断标志 6. 写碰撞标志检测 7. 可以从闲置模式唤醒 8. 作为主机时具有倍速模式(CK/2) 14.2 主机和从机之间的 SPI 连接及原理 SPI 的方框图见图 14-1。主机和从机之间的 SPI 连接如图 14-2 所示。系统包括两个移位寄存器和一个主机时钟发生器。通过将需要的从机的 SS 引脚拉低,主机启动一次通信过程。主机和从机将需要发送的数据放入相应的移位寄存器。主机在 SCK 引脚上产生时钟脉冲以交换数据。主机的数据从主机的 MOSI 移出,从从机的 MOSI 移入;从机的数据从从机的 MISO 移出,从主机的 MISO 移入。主机通过将从机的 SS 拉高实现与从机的同步。主机和从机的两个移位寄存器可以被认为是一个分开的 16 位环形移位寄存器,当数据从主机移向从机时,同时从机的数据也从相反的方向移向主机。这意味着在一个移位周期内,主机和从机的数据进行了交换。配置为 SPI 主机时,SPI 接口不自动控制 SS 引脚,必须由用户软件来处理。对 SPI 数据寄存器写入数据即启动 SPI 时钟,将 8 比特的数据移入从机。传输结束后 SPI 时钟停止,传输结束标志 SPIF 置位。如果此时 SPCR 寄存器的 SPI 中断使能位 SPIE 置位,中断就会发生。主机可以继续往 SPDR 写入数据以移位到从机中去,或者是将从机的 SS 拉高以说明数据包发送完成。最后进来的数据将一直保存于缓冲寄存器里。配置为从机时,只要 SS 为高,SPI 接口将一直保持睡眠状态,并保持 MISO 为三态。这个状态下软件可以更新 SPI 数据寄存器 SPDR 的内容。即使此时 SCK 引脚有输入时钟, SPDR 的数据也不会移出,直至 SS 被拉低。一个字节完全移出之后,传输结束标志 SPIF 置位。如果此时 SPCR 寄存器的 SPI 中断使能位 SPIE 置位,就会产生中断请求。在读取移入的数据之前从机可以继续往 SPDR 写入数据。最后进来的数据将一直保存于缓冲寄存器里。
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
全部0条评论
快来发表一下你的评论吧 !