这篇内容有点长,如果有人想透过我的博客学习STM8的SPI,那是我的荣幸
首先我要先说大纲,这样大家心里比较有底,可以把精力都用在SPI理解上
【SPI初步介绍】:介绍SPI如何接线、名称解释、通讯注意事项
【SPI引脚 - 初始化(上)】:相对于STM8,SPI的引脚位置说明,还有引脚的设置,另外还有初始化的部分代码
【SPI寄存器 - 初始化(下)】:使用寄存器做一些设定,例如波特率、SPI开启或关闭、SPI中断、传输方式。。。太多了,要看寄存器手册,我有整理图片出来,另外还包括完整的初始化代码
【SPI通讯】:SPI发送数据、SPI轮询方式接收数据、SPI中断方式接收数据
【SPI初步介绍】
下图是SPI的通讯方式
M:Master(主)
S:Slave(从)
I:Input(输入)
O:Output(输出)
MISO:主设备(M)接收(I)数据,从设备(S)输出(O)数据
MOSI:主设备(M)输出(O)数据,从设备(S)接收(I)数据
SCK:时钟讯号
GPIO:普通I/O口
NSS:或叫SS,由外部的高低电平决定自己是主机还是从机,在STM8里,可以由软件决定,从而省下一个引脚去做别的事情,其他的芯片,就要去看datasheet才知道了
CS:片选(不一定会有),从机决定接收数据的依据,应用在SPI一主多从,就像广播一样,『一年二班小朋友起立!』,但一年一班的小朋友也听到了,不过你不要起立啊,当然,一主一从也有可能用到的
上面解释了各引脚功能,下面解释SPI的通讯方式:
MOSI:主机发送线路。额外说明,主机想收到从机数据,主机要提供SCK,但是产生SCK的唯一条件,就是主机要发数据出去,哪怕是无意义的数据(伪字节),不管主机想发还是收,