你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

查看: 1958|回复: 6

转发:ARM®mbed OS入门开发(五 A0)SPI总线协议

[复制链接]

61

主题

1071

回帖

17

蝴蝶豆

论坛元老

最后登录
2020-12-9
发表于 2016-10-11 14:38:25 | 显示全部楼层 |阅读模式
SPI总线协议2016-09-30 Summerain [url=]小白学嵌入式[/url]
【概述】
SPI(Serial Peripheral Interface)总线是主要应用于嵌入式系统内部通信的串行同步传输总线协议。通常为四线制的SPI总线支持全双工通信。SPI总线定义两个及以上设备间的数据传输,提供时钟的设备为主设备(Master),接收时钟的设备为从设备(Slave)。SPI协议特点包括主从模式、全双工通信、片选功能、模式错误标识及CPU中断、缓冲数据寄存器和可配置时钟相位极性等。SPI允许数据一位一位的传送,甚至允许暂停,因为SCK时钟线由主控设备控制,当没有时钟跳变时,从设备不采集或传送数据。也就是说,主设备通过对SCK时钟线的控制可以完成对通讯的控制。

【优点和缺点】 优点
  • 支持全双工通信
  • Push-Pull驱动性能相比Open Drain信号完整性更好,支持高速应用(100MHz以上)
  • 协议支持字长不限于8bits,可根据应用特点灵活选择消息字长
  • 硬件连接简单

    • 只需要四根信号线(部分应用可以缩减到三根)
    • 相比I2C节省上拉电阻
    • 相比I2C不需要仲裁机制
    • 从设备使用主设备时钟,节约时钟要求
    • 从设备无需地址寻址
    • 无需收发器

缺点
  • 相比I2C两根线,SPI四根线更多
  • 没有寻址机制,只能靠设备片选(chip select)选择不同从设备
  • 没有数据流控制(但主设备可以通过延缓时钟边缘降低传输速度)
  • 没有从设备接收数据ACK应答机制,主设备对于发送成功与否不得而知
  • 只支持单主控
  • 没有定义数据校验机制
  • 相比于RS232和CAN,SPI传输距离短
  • 不支持热插拔


【信号定义】
SPI协议定义四根信号线,分别为:
  • SCK : Serial Clock 串行时钟
  • MOSI : Master Output, Slave Input 主发从收信号
  • MISO : Master Input, Slave Output 主收从发信号
  • SS : Slave Select 片选信号

其中MISO方向为从设备到主设备,其余三个信号均为主设备到从设备。

【电路连接】
片选信号SS通常低电平有效。SPI数据传输原理是基于主从设备内部移位寄存器的数据交换。在主设备SCK的控制下,待传数据由各自设备的数据寄存器(Data Register)传输到移位寄存器(Shift Register),再通过MOSI和MISO信号线完成主从设备间的数据交换。两个移位寄存器中的内容被交换。外设的写操作和读操作是同步完成的。按位传输,高位MSB在前,低位LSB在后。
微信截图_20161011143807.png
SPI主从模式传输示意图


单个主设备和单个从设备的SPI连接比较简单,以上图的表示的就是这种拓扑结构。对于单个主设备同时控制多个不同从设备,可以通过多个片选信号(SS)或菊花链方式(Daisy Chain Configuration)。

【传输模式】
CPOL,即时钟极性Clock Polarity,决定时钟空闲时的电平为高或低。对于SPI数据传输格式没有显著影响。
CPHA,即时钟相位Clock Phase,定义SPI数据传输的两种基本模式:
CPHA = 0
  • 在片选后数据立即出现在MOSI/MISO管脚,数据锁存于第一个时钟边沿
  • 片选SS先于SCK半个时钟有效
  • 在SCK的第二个时钟边沿,上一个时钟边沿锁存的数据写入移位寄存器
  • 以此类推,数据在奇数边沿锁存(采样数据),在偶数边沿写入移位寄存器(输出数据,同时改变I/O管脚数据)
  • 经过16个时钟边沿后,串行传输的数据全部写入(并行的)移位寄存器,完成主从设备的数据交换

CPHA = 1
  • 有些设备要求数据输出在SCK第一个时钟边沿之后,数据锁存于第二个时钟边沿
  • 片选SS先于SCK半个时钟有效
  • 在SCK的第三个时钟边沿,上个时钟边沿锁存的数据写入移位寄存器(MSB或LSB)
  • 以此类推,数据在偶数边沿锁存,在奇数边沿写入移位寄存器
  • 经过16个时钟边沿后,串行传输的数据全部写入(并行的)移位寄存器,完成主从设备的数据交换

Notes:
1. 主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和时钟相位。
2. 在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟要求,因为主设备这边的时钟极性和相位都是以从设备为基准的。一般来说,从设备都会支持模式00和11(CPOL | CPHA),具体应用时应查看设备SPI的传输模式说明。
3. 如果只进行操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节Dummy Byte)来引发从机的传输。当主机发送一个连续的数据流时,有些外设能够进行多字节传输。多数具有SPI接口的存储芯片就以这种方式工作。在这种传输方式下,从机的片选端必须在整个传输过程中保持低电平。此时,一次传输可能会涉及到成千上万字节的信息,而不必在每个字节的数据发送的前后都去检测其起始位和结束位,这正是同步传输方式优于异步传输方式的原因所在。虽然SPI有以上优点,然而在图像传输中却很少用到,原因主要是其抗干扰能力差
微信截图_20161010090612.png


回复

使用道具 举报

0

主题

159

回帖

0

蝴蝶豆

高级会员

最后登录
2017-3-9
发表于 2016-10-16 19:06:01 | 显示全部楼层
不错的教程
回复 支持 反对

使用道具 举报

6

主题

446

回帖

0

蝴蝶豆

金牌会员

最后登录
2017-5-24
发表于 2016-10-20 11:50:49 | 显示全部楼层
感谢分享
回复 支持 反对

使用道具 举报

1

主题

455

回帖

2

蝴蝶豆

金牌会员

最后登录
2019-5-7
发表于 2017-3-17 13:22:12 | 显示全部楼层
谢谢分享。
回复 支持 反对

使用道具 举报

0

主题

13

回帖

0

蝴蝶豆

中级会员

最后登录
2019-1-14
发表于 2017-4-27 14:06:47 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

0

主题

13

回帖

0

蝴蝶豆

中级会员

最后登录
2019-1-14
发表于 2017-4-27 14:07:29 | 显示全部楼层
三线的也能全双工吗?
回复 支持 反对

使用道具 举报

0

主题

1

回帖

0

蝴蝶豆

新手上路

最后登录
2018-1-15
发表于 2017-6-16 09:05:54 | 显示全部楼层
第一张图片里 主机ss片选 是置高电平吗 ?

这样会不会有问题啊
回复 支持 反对

使用道具 举报

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
13245底部标题123相同标题
12底部标题123相同标题
33333底部标题123相同序号
3435底部标题-无链接
关注我们
st-img 微信公众号
st-img 手机版