1. 标准spi
主从都在自己的数据线上发送/接收数据,主机如果需要接收数据,则需要单独发一段数据才能触发从机应答,从而接收从机数据
- CPOL 时钟极性
CPOL =0 表示时钟空闲为低电平,下降沿采样
CPOL = 1表示时钟空闲为高电平 ,上升沿采样
-
CPHA时钟相位
CPHA = 0 表示从第一个跳变沿开始采样
CPHA = 1 表示从第二个跳变沿开始采样
根据CPOL和CPHA可以组合成四种spi模式。这个一般需要根据从机适配
2. DUAL SPI 双线串行spi
数据线相比标准spi也是两根线,区别标准spi就是再发数据时,无论主从都可以同时使用两个线发送数据,速度比标准spi快一倍。但是由于这种发送数据模式,只能做半双工通讯。
DIO 方式:
在falsh数据操作时一般第一个字节是单线传输,后面的数据和地址都是双线传输
DOUT 方式:
只有在数据传输时采用双线传输,地址传输阶段用的标准spi传输。
3. Quad SPI 四线SPI
跟DUAL SPI相比数据线扩展到4根,意味着比DUAL SPI通讯速度快一倍,也只能用于半双工通讯
QOUT方式:
数据传输阶段采用四线传输,地址和指令传输阶段采用标准spi传输。
QIO方式:
指令阶段采用标准spi传输,数据和地址阶段采用四线传输。
QPI方式:
所有阶段,即指令地址数据阶段都采用四线传输。
4. esp32s3 外部flash和外部spram配置
-
首先明确自己的模块上硬件挂载的flash和ram是多大
比如N8R2 表示8MBflash 2MB psram
-
去官网对应模块查询flash和spram是几线spi通讯
查询出来N8R2对应的flash为4线spi spram为4线spi
- 去官网查询flash和ram对应的最高时钟
[https://docs.espressif.com/projects/esp-idf/zh_CN/stable/esp32s3/api-guides/flash_psram_config.html?highlight=ram](https://)
以我的模组为例,flash和spram都是四线spi,则查看下图表格
当flash配置为A类型时,flash配置120MHZ时钟频率,此时psram只能配置A/C/D类型,即120MHZ或者40MHZ或者关闭
当flash配置为B类型时,flash时钟配置80MHZ,此时psram只能配置B/C/D类型,即80MHZ或者40MHZ或者关闭
总结就是,flash配置完时钟之后psram的时钟只能跟flash时钟一样或者更低。