收藏官网首页
查看: 8282|回复: 0

SPI协议

56

主题

144

帖子

1063

积分

金牌会员

Rank: 6Rank: 6

积分
1063
QQ
跳转到指定楼层
楼主
发表于 2017-8-18 15:46:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
免费使用STM32、APP自动代码生成工具
SPI协议
发表于 2017-08-17 |  分类于 协议 字数统计 939 |  阅读时长 4

1. 一点基础介绍
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是MISO(数据输入),MOSI(数据输出),SCK(时钟),CS(片选)。
2. 引脚说明
引脚
解说

MOSI
主设备数据输出,从设备数据输入

MISO
主设备数据输入,从设备数据输出

SCLK
时钟信号,由主设备产生

CS
从设备使能信号,由主设备控制(一般是低电平选中)
3. SPI 时序操作
  • 数据输出: 通过 MISO线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输
  • 一个SPI时钟周期内,会完成如下操作:
    1) 上升沿发送、下降沿接收、高位先发送
    2) 上升沿到来的时候,MOSI上的电平将被发送到从设备的寄存器中
    3) 下降沿到来的时候,MISO上的电平将被接收到主设备的寄存器中
4. SPI 一主机对多从机图
4. SPI总线四种工作方式
SPI 模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性(CPOL)和相位(CPHA)可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。
  • CPOL是用来决定SCK时钟信号空闲时的电平
    1) CPOL = 0,空闲电平为低电平;
    2) CPOL = 1,空闲电平为高电平;
  • CPHA是用来决定采样时刻
    1) CPHA = 0,在每个周期的第一个时钟沿采样;
    2) CPHA = 1,在每个周期的第二个时钟沿采样;
    SPI主模块和与之通信的外设备时钟相位和极性应该一致。

5. 协议心得体会SPI接口时钟配置心得:
  • 主设备这边的时钟极性和相位都是以从设备为基准的。因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据。
  • 主设备这边SPI时钟极性的配置(即SDO的配置)跟从设备的SDI接收数据的极性是相反的,跟从设备SDO发送数据的极性是相同的。
下面这段话是Sychip Wlan8100 Module Spec上说的,充分说明了时钟极性是如何配置的:
The 81xx module will always input data bits at the rising edge of the clock, and the host will always output data bits on the falling edge of the clock.
意思是:主设备在时钟的下降沿发送数据,从设备在时钟的上升沿接收数据。因此主设备这边SPI时钟极性应该配置为下降沿有效。
又如,下面这段话是摘自LCD Driver IC SSD1289:
SDI is shifted into 8-bit shift register on every rising edge of SCK in the order of data bit 7, data bit 6 …… data bit 0.
意思是:从设备SSD1289在时钟的上升沿接收数据,而且是按照从高位到地位的顺序接收数据的。因此主设备的SPI时钟极性同样应该配置为下降沿有效。
时钟极性和相位配置正确后,数据才能够被准确的发送和接收, 因此应该对照从设备的SPI接口时序或者Spec文档说明来正确配置主设备的时钟。
原文:http://lxj-life.com/2017/08/17/SPI%E5%8D%8F%E8%AE%AE/


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

本版积分规则

加入Q群 返回顶部

版权与免责声明 © 2006-2024 Gizwits IoT Technology Co., Ltd. ( 粤ICP备11090211号 )

快速回复 返回顶部 返回列表