频道栏目
读书频道 > 软件开发 > C++ > Visual C++串口通信技术详解(第2版)
1.4.1 SPI总线原理
2013-08-07 13:52:23     我来说两句
收藏   我要投稿
本书介绍如何利用Visual C++集成开发环境进行串口通信程序开发的前沿实用技术。书中精选来自工程实践的应用范例,主要涵盖串口通信的理论基础、Visual C++集成开发环境简介、MSComm控件串口编程、Windows API...  立即去当当网订购

SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线(单向传输时3根也可以),分别是SDI(主设备数据输入信号)、SDO(主设备数据输出信号)、SCK(时钟信号)和CS(从设备使能信号)。

SDO——主设备数据输出,从设备数据输入。

SDI——主设备数据输入,从设备数据输出。

SCK——时钟信号,由主设备产生。

CS——从设备使能信号,由主设备控制。

其中,CS是控制芯片是否被选中的,也就是说,只有片选信号为预先规定的使能信号(高电位或低电位)时,对此芯片的操作才有效。这就使在同一总线上连接多个SPI设备成为可能。

接下来介绍负责通信的3根线。通信是通过数据交换完成的,这里先要知道SPI是串行通信协议,也就是说,数据是一位一位传输的。这就是SCK时钟线存在的原因,由SCK提供时钟脉冲,SDI,SDO则基于此脉冲完成数据传输。数据输出通过SDO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。完成一位数据传输,输入也使用同样的原理。这样,至少8次时钟信号的改变(上升沿和下降沿为一次),就可以完成8位数据的传输。

要注意的是,SCK信号线只由主设备控制,从设备不能控制信号线。同样,在一个基于SPI的设备中,至少有一个主控设备。这样的传输方式有一个优点,与普通的串行通信不同,普通的串行通信一次连续传送至少8位数据,而SPI允许数据逐位传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通信的控制。SPI还是一个数据交换协议:因为SPI的数据输入线和数据输出线独立,所以允许同时完成数据的输入和输出。不同的SPI设备的实现方式不尽相同,主要是数据改变和采集的时间不同,在时钟信号上升沿或下降沿采集有不同定义,具体请参考相关器件的文档。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:1.4 SPI总线标准
下一篇:1.4.2 SPI总线特点
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站