RFID相关——普通IO口模拟SPI总线的实现:

1、读卡器——RC522,内部集成了SPI、IIC、UART三种数据传输方式,这里我们发用SPI的方式:

背景知识介绍:
SPI:全双工,主要信号线SCK、MISO(主入从出)、MOSI(主出从入)、NSS(低有效)、RST(低有效)、VCC(3.3V)、GND。

对于3.3V的VCC可以通过X1117-3.3V或者LM1117-3.3V芯片获取RFID相关——普通IO口模拟SPI总线的实现:_第1张图片

对于SPI的时序问题,查找多方面的资料发现有如下特点:
mode 0:时钟空闲时候为低电平,时钟第一个上升沿开始采集(或发送)数据 (第一个上升沿:先升后降,即第一个时钟采样)
mode 1:时钟空闲时候为低电平,时钟第一个下降沿开始采集(或发送)数据 (第一个下降沿:先升后降,即第二个时钟采样)
mode 2:时钟空闲时候为高电平,时钟第一个下降沿开始采集(或发送)数据 (第一个下降沿:先降后升,即第一个时钟采样)
mode 3:时钟空闲时候为高电平,时钟第一个上升沿开始采集(或发送)数据 (第一个上升沿:先降后升,即第二个时钟采样)
RC522采用mode 0或者mode 3均可工作
附加查找到的一些图片:
RFID相关——普通IO口模拟SPI总线的实现:_第2张图片
RFID相关——普通IO口模拟SPI总线的实现:_第3张图片

针对RC522这一特定类型的从SPI器件,其数据手册里面给出了相关的说明:(1)对于MOSI,需要保证在上升沿待发送数据稳定的将该信号线拉高或者拉低,在下降沿可以对待发送数据进行移位操作,为准备传输下一位做准备;对于MISO,同样要保证在上升沿的时候从SPI器件给该信号线提供的是稳定的值,在下降沿的时候可以对MISO信号线进行改变。
(2)无论是读还是写,在开始肯定要先传入地址,对于传入的地址,都会进行进一步的操作,使其满足地址最低位为0,最高位读1写0.
(3)多字节写的时候,主机只用到MOSI,数据、地址交替送到MOSI线上;多字节读的时候,主机用到MOSI线与MISO线,先用MOSI传输第一个要读的字节地址,然后接着再传第二个字节的地址,此刻主机同时也会从MISO线上一位一位地获取从SPI器件传过来的数据。
RFID相关——普通IO口模拟SPI总线的实现:_第4张图片
RFID相关——普通IO口模拟SPI总线的实现:_第5张图片
RFID相关——普通IO口模拟SPI总线的实现:_第6张图片

你可能感兴趣的:(学习)