6397|6

525

帖子

235

TA的资源

版主

楼主
 

SPI总线调试总结 [复制链接]

最近一直在调试SPI-FLASH设备,记录一下。
SPI--Serial Peripheral Interface,串行外围设备接口, SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。 I2C通常有 SDA数据和SCL时钟两个信号。
SPI总线真正实现了全双工数据传输,SPI 有3线跟4线两种,4线的话,就是多了一条叫SDC的线,用来告知从设备现在传输的是数据还是指令。这个接口较快,可以传输较连续的数据。SPI要想连接多个从设备,就需要给每个从设备配备一根片选信号。如果要可以实现全双工,也是需要多加一根数据线(MOSI MISO)。
也就是说SPI总线是通过片选来选择从设备。
spi总线速度要比iic要快,我们开发板最快能达到30MHZ。

spi总线特点:
1. 采用主-从模式(Master-Slave) 的控制方式
       SPI 规定了两个 SPI 设备之间通信必须由主设备 (Master) 来控制次设备 (Slave). 一个 Master 设备可以通过提供 Clock 以及对 Slave 设备进行片选 (Slave Select) 来控制多个 Slave 设备, SPI 协议还规定 Slave 设备的 Clock 由 Master 设备通过 SCK 管脚提供给 Slave 设备, Slave 设备本身不能产生或控制 Clock, 没有 Clock 则 Slave 设备不能正常工作.

2. 采用同步方式(Synchronous)传输数据
       Master 设备会根据将要交换的数据来产生相应的时钟脉冲(Clock Pulse), 时钟脉冲组成了时钟信号(Clock Signal) , 时钟信号通过时钟极性 (CPOL) 和 时钟相位 (CPHA) 控制着两个 SPI 设备间何时数据交换以及何时对接收到的数据进行采样, 来保证数据在两个设备之间是同步传输的.

3. 数据交换(Data Exchanges)
       SPI 设备间的数据传输之所以又被称为数据交换, 是因为 SPI 协议规定一个 SPI 设备不能在数据通信过程中仅仅只充当一个 "发送者(Transmitter)" 或者 "接收者(Receiver)". 也就是说是全双工的,在每个 Clock 周期内, SPI 设备都会发送并接收一个 bit 大小的数据, 相当于该设备有一个 bit 大小的数据被交换了.
       一个 Slave 设备要想能够接收到 Master 发过来的控制信号, 必须在此之前能够被 Master 设备进行访问 (Access). 所以, Master 设备必须首先通过 SS/CS pin 对 Slave 设备进行片选, 把想要访问的 Slave 设备选上.
       在数据传输的过程中,  每次接收到的数据必须在下一次数据传输之前被采样. 如果之前接收到的数据没有被读取, 那么这些已经接收完成的数据将有可能会被丢弃,  导致 SPI 物理模块最终失效. 因此, 在程序中一般都会在 SPI 传输完数据后, 去读取 SPI 设备里的数据。


此帖出自单片机论坛

最新回复

本帖最后由 huo_hu 于 2017-12-7 13:12 编辑 从设备通过拉低数据线可以通知主机有数据要传输,这个是可以做到的,只是看硬件能否支持。 另外也可以用多主结构实现。   详情 回复 发表于 2017-12-7 13:11
点赞 关注
个人签名爱电子,爱生活
 

回复
举报

564

帖子

0

TA的资源

一粒金砂(高级)

沙发
 
最近也在看SPI,SSI、SCI、SPI有点混淆
此帖出自单片机论坛

点评

SPI配置起来有点乱,可以考虑用IO模拟SPI  详情 回复 发表于 2017-12-4 15:39
 
 

回复

525

帖子

235

TA的资源

版主

板凳
 
sanhuasr 发表于 2017-12-2 14:02
最近也在看SPI,SSI、SCI、SPI有点混淆

SPI配置起来有点乱,可以考虑用IO模拟SPI
此帖出自单片机论坛

点评

io模拟不适合高速操作  详情 回复 发表于 2017-12-7 13:09
 
个人签名爱电子,爱生活
 
 

回复

116

帖子

0

TA的资源

版主

4
 
补充一个坑,同步通讯意味着要通讯必须有时钟信号。而从设备不能产生时钟,要发送数据,唯一的办法就是等主设备的时钟。主设备发送信息之后,一般情况从设备收到信息总要花时间解读吧,再加上准备数据,然后此时主设备还要继续发送一些无意义的东西,只有这样才能保持时钟信号,而从设备只能借着这个时钟信号才能把数据送出去。

如果从设备出现问题,比如AD采样数据明显不对,要重新采,那不能像异步通信一样等采完再发,而是必须趁着主设备还在“磨叨”,赶紧通知主设备,否则主设备时钟一停,就发不出了
此帖出自单片机论坛

点评

学习 啦  详情 回复 发表于 2017-12-12 10:38
从设备通过拉低数据线可以通知主机有数据要传输,这个是可以做到的,只是看硬件能否支持。  详情 回复 发表于 2017-12-7 13:11
 
 
 

回复

4005

帖子

0

TA的资源

版主

5
 
wsdymg 发表于 2017-12-4 15:39
SPI配置起来有点乱,可以考虑用IO模拟SPI

io模拟不适合高速操作
此帖出自单片机论坛
 
 
 

回复

4005

帖子

0

TA的资源

版主

6
 
本帖最后由 huo_hu 于 2017-12-7 13:12 编辑
风过琴弦 发表于 2017-12-7 00:06
补充一个坑,同步通讯意味着要通讯必须有时钟信号。而从设备不能产生时钟,要发送数据,唯一的办法就是等主 ...

从设备通过拉低数据线可以通知主机有数据要传输,这个是可以做到的,只是看硬件能否支持。

另外也可以用多主结构实现。
此帖出自单片机论坛
 
 
 

回复

525

帖子

235

TA的资源

版主

7
 
风过琴弦 发表于 2017-12-7 00:06
补充一个坑,同步通讯意味着要通讯必须有时钟信号。而从设备不能产生时钟,要发送数据,唯一的办法就是等主 ...

学习 啦
此帖出自单片机论坛
 
个人签名爱电子,爱生活
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表