打印
[STM8]

【转】STM8L的SPI通信方式总结

[复制链接]
2184|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
说书先生|  楼主 | 2016-11-13 14:46 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
SPI 通信方式总结

在SPI通信中,通信管脚的配置是一部分,而对于通信的配置则显得跟重要,因为这个配置错误的话,会导致接收的数据是错位的,并且这个跟从设备相关。
下面已STM8L的SPI为例:
SPI初始化的函数原型是:

void SPI_Init(SPI_TypeDef* SPIx, SPI_FirstBit_TypeDef SPI_FirstBit,              SPI_BaudRatePrescaler_TypeDef SPI_BaudRatePrescaler,              SPI_Mode_TypeDef SPI_Mode, SPI_CPOL_TypeDef SPI_CPOL,              SPI_CPHA_TypeDef SPI_CPHA, SPI_DirectionMode_TypeDef SPI_Data_Direction,              SPI_NSS_TypeDef SPI_Slave_Management, uint8_t CRCPolynomial){}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

其中我们重点关注SPI_CPHASPI_CPOL,这两个参数代表了时钟的相位即时钟的极性。
在手册中,对这两个参数不同的组合,列出不同的通信时序图:


CPOL表示时钟在空闲状态的极性是高电平还是低电平,而CPHA则表示数据是在什么时刻被采样的,
具体有下面四种类型分别对应上面的时序图。

ModeCPOLCPHA
000
101
210
311

最近调试W25Q16 Flash时,使用不对的配置,发现接收回来的数据不对,之后查了下W25Q16的数据手册,返现其中W25Q16的SPI总线模式是Mode0 或Mode3 ,这个在手册中或本文中下面的时序图中可以看出,那么就要将CPOLCPHA都配置为0或1。


沙发
heisexingqisi| | 2016-11-13 17:06 | 只看该作者
SPI是用处很多的一种现场通信协议,学习学习很重要。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

71

主题

191

帖子

0

粉丝