spi 的single Dual quad模式分别代表什么意思?

spi 的single Dual quad模式分别代表什么意思?,第1张

Dual模式意思是可以发送一个命令字节进入dual mode,这样mosi变成SIO0(serial io 0),mosi变成SIO1(serial io 1),这样一个时钟周期内就能传输2个bit数据,加倍了数据传输。

quad模式的意思是针对SPI Flash,Qual SPI Flash增加了两根I/O线(SIO2,SIO3),目的是一个时钟内传输4个bit,所以对于SPI Flash,有标准spi flash,dual spi , qual spi 三种类型,分别对应3-wire, 4-wire, 6-wire,在相同clock下,线数越多,传输速率越高。

扩展资料

SPI总线是一种4线总线,因其硬件功能很强,所以与SPI有关的软件就相当简单,使中央处理器有更多的时间处理其它事务。

正是因为这种简单易用的特性,越来越多的芯片集成了这种通信协议,比如AT91RM9200。SPI是一种高速、高效率的串行接口技术。通常由一个主模块和一个或多个从模块组成,主模块选择一个从模块进行同步通信,从而完成数据的交换。SPI是一个环形结构,通信时需要至少4根线。

CS是从芯片是否被主芯片选中的控制信号,也就是说只有片选信号为预先规定的使能信号时(高电位或低电位),主芯片对此从芯片的 *** 作才有效。这就使在同一条总线上连接多个SPI设备成为可能。

参考资料来源:百度百科-SPI

DUAL SPI的读写速度是普通序列式闪存的2-3倍,DI和DO是双向的,称作DI0 DI1

DUAD SPI的读写速度是普通序列式闪存的4-6倍;DI和DO是双向的,称作DI0 DI1,同时,/WP和/HOLD也变成输入输出管脚,称作DI2 DI3

void SpiWriteRegister (uchar reg, uchar value)

{

RF_NSEL = 0 // 片选拉低启动SPI通讯

SPI0DAT = (reg|0x80) // 写入1个字节的寄存器地址

while( SPIF == 0) // 等待SPI传输完成

SPIF = 0

SPI0DAT = value // 继续写入第二个字节(寄存器值)

while( SPIF == 0) // 等待SPI传输完成

SPIF = 0

RF_NSEL = 1 // 片选拉高结束SPI通讯

}

//-----------------------------------------------------------------------------

//函数描述: SPI读取函数

//相关参数:

//返回信息:

//

//-----------------------------------------------------------------------------

uchar SpiReadRegister (uchar reg)

{

RF_NSEL = 0// 片选拉低启动SPI通讯

SPI0DAT = reg // 写入1个字节的寄存器地址

while( SPIF == 0) // 等待SPI传输完成

SPIF = 0

SPI0DAT = 0xFF // 写一个Dummy字节(因为要读取的话必须用写入来启动一个交换数据的传输),当写入完成后从机的数据也完成了读入。

while( SPIF == 0) // 等待SPI传输完成

SPIF = 0

RF_NSEL = 1 // 片选拉高结束SPI通讯

return SPI0DAT// 返回读取的值(在SPI0DAT=0xFF中完成读取)

}

需要注意的是读写 *** 作实际上完成的都是数据的交换,即主机传送1个字节给从机,从机同时传送1个字节给主机。所以读 *** 作看起来像是写数据,但实际上写入完成后就可以从SPI0DAT中获得从机的应答数据了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11598753.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存