赞
踩
- 所有SPI设备的SCK、MOSI、MISO分别连在一起
- 主机另外引出多条SS控制线,分别接到各从机的SS引脚
- 输出引脚配置为推挽输出,输入引脚配置为浮空或上拉输入
- 推挽输出:高低电平都有很强的驱动能力,使得SPI引脚信号的下降沿和上升沿非常迅速
- (IIC因为要实现半双工,经常切换输出输入,IIC又要实现多主机的时钟同步和总线仲裁,若使用推挽输出任意电源短路)
- SPI的MISO可能有冲突,一位内主机是输入,三个从机都是输出,若三个从机始终是推挽输出,势必会导致冲突。
故SPI有个规定:
当从机的SS引脚为高电平时,即从机未被选中,其MISO引脚必须切换成高阻态,高阻态相当于引脚断开,不输出任何电平,这样可以防止一条线有多个输出,导致电平冲突问题
SS为低电平时,MISO才允许变为推挽输出(切换在从机中,不需要关注)
- SS(片选信号线(理解为从机选择线)、Slave Select):单片机通过给片选信号线高低电平来确定哪一个从机通讯,一般当这根线为低电平时,片选才有效
- SCK(时钟信号线、Serial Clock):主设备产生
- MOSI(发送信号线、Master Output Slave Input):主设备从MOSI输出数据,而从设备通过MOSI接收数据
- MISO(接收信号线、Master Input Slave Output):主设备通过这根线接收数据
- 写数据:在地址为0x01处写数据0000 1111
- 给存储器发送起始位1,然后发送操作位01,然后地址0x01,数据0000 1111,则存储器的地址0x01就会保存0000 1111数据。
- 读取数据:
- 首先先写起始位1,然后操作码10,最后传递要取的地址符号
- spi是串行同步通信,因此数据线要和时钟线配合使用,才能给存储器发送数据
- 93C46是一个EEPROM存储器,有1024位存储空间,也就是128个字节,每个字节都有属于它的地址,刚好是7位数的二进制数
- SSI大部分时候是低电平有效,但在93C46中是高电平有效
- 四种采集模式:
- 1、只有在上升沿的时候采集数据(空闲时钟低电平)
- 2、只有在下降沿的时候采集数据(空闲时钟低电平)
- 3、只有在上升沿的时候采集数据(空闲时钟高电平)
- 4、只有在下降沿的时候采集数据(空闲时钟高电平)
- I2C在硬件和软件电路设计都比较复杂,但可在消耗最低硬件资源的情况下,实现最多的功能
- 由于I2C开漏外加上拉电阻的电路结构,使得通信线高电平的驱动能力比较弱,这会导致通信线由低电平变到高电平的时候,上升沿耗时比较长,限制了IIC的最大通信速度
- 故IIC的标准模式只有100kHz的时钟频率,快速模式只有400kHz
- SPI传输更快,没有严格规定最大传输速度,最大传输速度取决于芯片厂商的设计需求,即看手册
- SPI的设计比较简单粗暴,实现的功能没IIC多,硬件开销比较大,通行线的个数比较多哈,并且通行过程中,经常会有资源浪费的现象
- SPI的风格:最简单最快速的完成任务,没有应答机制
W25Q64是一个Flash存储器芯片,内部可以存储8M字节的数据,并且是掉电不丢失,若在项目中需要存储大量的数据,可以考虑此芯片。
交换一个字节(模式0)(应用最多)
CPOL=0(时间极性):空闲状态时,SCK为低电平
CPHA=0(时钟相位):SCK第一个边沿移入数据,第二个边沿移出数据四个模式
模式0:CPOL=0:空闲SCK为0,CPHA=0:SCK第一个边沿移入数据,第二个边沿移出
模式1:CPOL=0:空闲SCK为0,CPHA=1:SCK第一个边沿移出数据,第二个边沿移入
模式2:CPOL=0:空闲SCK为1,CPHA=0:SCK第一个边沿移入数据,第二个边沿移出
模式3:CPOL=0:空闲SCK为1,CPHA=1:SCK第一个边沿移出数据,第二个边沿移入
上述MOSI、MISO为两条线表示发送的既有可能是高电平又有可能是低电平
(1)主机向SS指定的设备发送指令码0x06(写使能的指令)
(2)发送指令0x02,表示要写入
(3)指定地址0x123456:发送0x12(高位地址)、0x34、0x56(低位地址)
(4)发送指定数据0x55
(1)主机向SS指定的设备发送指令码0x06(写使能的指令)
(2)发送指令0x03,表示要读取
(3)指定地址0x123456:发送0x12(高位地址)、0x34、0x56(低位地址)
(4)主机为高电平,从机发送数据
附:4种模式的图
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。