SPI总线全攻略:从以太网组网、大容量Flash存储到AirLink高速通信
SPI总线硬件配置、SPI以太网应用、SPI TF卡应用、SPI Nor Flash应用、SPI NAND Flash应用、SPI AirLink应用
作为扩展性极强的通信接口,SPI通用总线能够支持丰富的外设生态——无论是以太网控制器CH390H、各类存储芯片(SPI Nor/NAND Flash、TF卡),还是自研的AirLink通信协议,均可基于SPI实现可靠的数据交互。
今天我们围绕这些实际应用问题,一起来聊聊。
一、SPI总线硬件配置
Air780Exx系列模组的SPI总线配置因型号而异,硬件设计前务必注意引脚资源差异。
1.1 常规型号支持2路通用SPI总线
-
SPI0:
默认引脚为PIN83/84/85/86;
-
SPI1:
可复用引脚为PIN28/29/57/58(PIN28/29默认功能为UART2,PIN57/58默认功能为UART3)。
下图以Air780EPM模组为例:

1.2 以下型号只支持1路SPI0
Air780EHV和Air780EGP/EGG/EGH只支持1路SPI0,原因如下:
1)Air780EHV(全能音频系列)
因为内置了Audio Codec芯片ES8311,内部占用了PIN57/58的I2C0总线;PIN57/58外部不可再用,无法复用为SPI1_CLK/SPI1_MISO,进而Air780EHV也就无法支持SPI1通道了。

2)Air780EGP/EGG/EGH(定位+通信系列)
因为内置了GNSS定位芯片,内部占用了PIN28/29的UART2串口;PIN28/29外部不可再用,无法复用为SPI1_CS/SPI1_MOSI,进而Air780EGP、Air780EGG、Air780EGH也就无法支持SPI1通道。
1.3 相关注意事项
-
多外设挂载:
理论上,SPI总线可以通过不同的片选CS外挂多个不同的外设,但对不同片选下的外设要求是通信速率必须相同,不能低速率和高速率的外设挂载在同一个SPI总线下。 -
GPIO模拟SPI:
除了SPI总线外,LuatOS也支持GPIO模拟SPI,但只适用于速率超低(低于100Kbps)的外设。在设计投板前,需要使用合宙的开发板做好充分的测试评估后,再进行实际的原理图和PCB设计。 -
引脚初始化:
在使用SPI功能之前,都需要先使用LuatIO工具生成pins配置json文件,也就是对IO的初始化功能配置。

二、SPI以太网应用(CH390H)
无论Air780系列模组还是Air8000系列模组,目前LuatOS仅适配过CH390H以太网控制器。
2.1 硬件原理图

2.2 相关注意事项
1)挂载组合示例
以Air780EHV举例来说,SPI0可以做如下挂载组合:
-
CS0挂载CH390H,CS1挂载SPI TF卡;
-
CS0挂载CH390H,CS1挂载SPI Nor Flash;
-
CS0挂载CH390H,CS1挂载SPI NAND Flash;
-
CS0挂载一路CH390H,CS1挂载另一路CH390H,CS2挂载SPI TF卡;
-
CS0挂载一路CH390H,CS1挂载另一路CH390H,CS2挂载SPI Nor Flash;
-
CS0挂载一路CH390H,CS1挂载另一路CH390H,CS2挂载SPI NAND Flash。
注意!SPI总线挂载的外设越多,相应外设的响应速度也就会越低。
2)电源管理
当CH390的供电电源不支持通过GPIO控制使能管脚EN控制开启或关断时,SPI0_CS0注意上拉到CH390H供电电源上,以防止SPI0_CS0在低功耗状态下软件未初始化时为低,进而产生耗电。

3)相关资源
与以太网相关的LuatOS核心库、扩展库和相关文档:
SPI核心库:
https://docs.openluat.com/osapi/core/spi/
netdrv核心库:
https://docs.openluat.com/osapi/core/netdrv/
exnetif扩展库:
https://docs.openluat.com/osapi/ext/exnetif/
应用指导文档:
https://docs.openluat.com/air780epm/luatos/app/socket/
三、SPI TF卡应用
Air780Exx系列模组当前仅支持SPI接口的T-Flash(MicroSD),不支持SDIO。
3.1 硬件原理图

3.2 相关注意事项
1)挂载组合示例
以Air780EHV举例来说,SPI0可以做如下挂载组合:
-
CS0挂载CH390H,CS1挂载SPI TF卡;
-
CS0挂载一路CH390H,CS1挂载另一路CH390H,CS2挂载SPI TF卡。
注意!SPI总线挂载的外设越多,相应外设的响应速度也就会越低。
2)电源管理
不同的T-Flash需要的驱动电流可能不同,实际调试时可根据需要调整SPI信号上拉电阻的阻值大小。
当T-Flash的供电电源不支持通过GPIO控制使能管脚EN控制开启或关断时,SPI0_CS1注意上拉到T-Flash供电电源上,以防止SPI0_CS1在低功耗状态下软件未初始化时为低进而产生耗电。

3)相关资源
与SPI T-Flash相关的LuatOS核心库、扩展库和相关文档:
SPI核心库:
https://docs.openluat.com/osapi/core/spi/
fatfs核心库:
https://docs.openluat.com/osapi/core/fatfs/
fs核心库:
https://docs.openluat.com/osapi/core/fs/
io核心库:
https://docs.openluat.com/osapi/core/io/
应用指导文档:
https://docs.openluat.com/air780epm/luatos/app/driver/sd/
四、SPI Nor Flash应用
LuatOS已适配过的SPI Nor Flash有:
W25Q64、W25Q128、W25Q256等。
原则上所有支持SFDP协议的SPI Nor Flash,都可以支持。
4.1 硬件原理图

4.2 相关注意事项
1)挂载组合示例
以Air780EHV举例来说,SPI0可以做如下挂载组合:
-
CS0挂载CH390H,CS1挂载SPI Nor Flash;
-
CS0挂载一路CH390H,CS1挂载另一路CH390H,CS2挂载SPI Nor Flash。
注意!SPI总线挂载的外设越多,相应外设的响应速度也就会越低。
2)电源管理
当Nor Flash的供电电源不支持通过GPIO控制使能管脚EN控制开启或关断时,SPI0_CS2注意上拉到Nor Flash供电电源上,以防止SPI0_CS2在低功耗状态下软件未初始化时为低进而产生耗电。

3)相关资源
与SPI Nor Flash相关的LuatOS核心库、扩展库和相关文档:
SPI核心库:
https://docs.openluat.com/osapi/core/spi/
Little_flash核心库:
https://docs.openluat.com/osapi/core/little_flash/
Sfud核心库:
https://docs.openluat.com/osapi/core/sfud/
io核心库:
https://docs.openluat.com/osapi/core/io/
应用指导文档:
https://docs.openluat.com/air780epm/luatos/app/mulu/fs/
五、SPI NAND Flash应用
SPI NAND Flash原理图与SPI Nor Flash相同,可以直接参考。
关于Little_flash和Sfud核心库:
Little_flash支持挂载SPI Nor Flash和SPI NAND Flash;
Sfud只能挂载SPI Nor Flash。
无论SPI Nor Flash还是SPI NAND Flash,
都推荐优先使用Little_flash方式挂载。
LuatOS当前已适配过的SPI NAND Flash有:
-
W25N01GVZEIG
-
W25N01KVZEIR
-
W25N02KVZEIR
-
W25N04KVZEIR
更多些型号正陆续适配中,敬请关注合宙资料中心最新资料。
六、SPI AirLink应用
AirLink协议诞生于Air8000系列模组中“4G主控芯片和Wi-Fi协处理芯片”之间的通信协议,比UART速率更高,比USB功耗更低,适合对速率要求较高、功耗要求较低、尤其系统中没有支持USB HOST功能芯片的产品中。
AirLink核心库支持以下产品/产品组合:
-
Air8000系列;
-
Air8101+Air780Exx;
今天的内容就分享到这里了
更多推荐
所有评论(0)