跳转至

SPI接口

1、Air8101共支持2路SPI接口,SPI0和SPI1,其中:

SPI0可复用为三处管脚组合,SPI1只有一处管脚组合;

2、两路SPI,SPI0和SPI1,最常用的功能组合是:

说明!虽然下表以SPI0挂载CH490H/SD卡/LCD Driver和SPI1用于AirLink举例说明,但SPI0和SPI1在功能使用上是完全一样的,可根据各自项目的实际情况灵活选用;

以太网控制器CH390H SD卡 LCD Driver初始化 AirLink over SPI
SPI0 CS0
CS1
CS2
SP1 CS
备注说明 SPI接口CH390H成熟应用 SPI接口SD卡 有些LCD模组会用到 AirLink需独享一路SPI

SPI接口SD卡

1、SPI接口的SD卡参考电路;

  • 当SD卡的供电电源不支持通过GPIO控制使能管脚EN控制开启或关断时,SPI0_CS1注意上拉到T-Flash供电电源上,以防止SPI0_CS1在低功耗状态下软件未初始化时为低进而产生耗电;
  • 不同的SD卡需要的驱动电流可能不同,实际调试时可根据需要调整SPI信号上拉电阻的阻值大小;
  • 插拔插座非常容易产生静电,建议加上TVS进行,以免被ESD打坏;

样品购买链接:

SIM和GPIO用,DFN1006-2封装,AR3321P1LV,应能微-淘宝网

AR3321P1LV.pdf

XESD100N-3V3 Rev. 0.1.pdf

CSLS03FBZ.pdf

PESDR3321P1.pdf

2、与SPI接口的SD卡相关的LuatOS核心库、扩展库和相关文档;

  • SPI核心库

    说明!使用LuatOS核心库SPI时,注意使用 spi.deviceSetup()、spi_device:transfer()、spi_device:send()、spi_device:recv()等spi_device相关的API函数;

https://docs.openluat.com/osapi/core/spi/

  • fatfs核心库

https://docs.openluat.com/osapi/core/fatfs/

  • io核心库

https://docs.openluat.com/osapi/core/io/

  • fs核心库

https://docs.openluat.com/osapi/core/fs/

  • 相关指导文档

https://docs.openluat.com/air780epm/luatos/app/driver/sd/

SPI接口以太网控制器CH390H

1、SPI接口的以太网控制器CH390H参考电路;

  • 如果CH390H的供电电源LDO不支持通过GPIO控制使能管脚EN开启或关断时,SPI0_CS0注意上拉到CH390H供电电源上,以防止SPI0_CS0在低功耗状态下软件未初始化时为低进而产生耗电;

2、与以太网相关的LuatOS核心库、扩展库和相关文档;

  • SPI核心库 说明!使用LuatOS核心库SPI时,注意使用 spi.deviceSetup()、spi_device:transfer()、spi_device:send()、spi_device:recv()等spi_device相关的API函数;

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/

1、AirLink协议诞生于Air8000系列模组中"4G主控芯片和WiFi协处理芯片"之间的通信协议,比UART速率更高,比USB功耗更低,适合对速率要求较高、功耗要求较低、尤其系统中不支持USB HOST功能芯片的产品中;

Air8101通过AirLink挂载合宙Air780Exx系列模组,可实现"WiFi+4G"双模上网功能;

AirLink详细介绍

https://docs.openluat.com/protocols/airlink/

2、AirLink over SPI共有8个信号组成,4个SPI信号,3个辅助信号;

AirLink七个信号 功能说明
AirLink_SPI_CLK 主机提供时钟,以"Air8101+Air780Exx系列模组"组合为例,Air8101为主,由Air8101提供时钟注意!AirLink_SPI_CLK接Air780Exx模组的SPI_CLK;
AirLink_SPI_MOSI 主机输出数据到从机,以"Air8101+Air780Exx系列模组"组合为例,Air8101为主,此信号由Air8101输出数据给Air780Exx系列模组注意!AirLink_SPI_MOSI也接Air780Exx模组的SPI_MOSI,不需要反向接SPI_MISO,切记!
AirLink_SPI_MISO 从机输出数据到主机,以"Air8101+Air780Exx系列模组"组合为例,Air780Exx系列模组为辅,此信号由Air780Exx模组输出数据给Air8101注意!AirLink_SPI_MISO也接Air780Exx模组的SPI_MISO,不需要反向接SPI_MOSI,切记!
AirLink_SPI_CS 主机提供片选信号,拉低有效,以"Air8101+Air780Exx系列模组"组合为例,Air8101为主,此信号由Air8101提供给Air780Exx系列模组注意!AirLink_SPI_CS接Air780Exx模组的SPI_CS;
AirLink_RDY 从机就绪信号, 拉低有效, 若RDY为高电平, 不可进行SPI通信,在"Air8101+Air780Exx系列模组"组合中,由Air780Exx系列模组提供给Air8101
AirLink_IRQ 从机数据通知主机, 拉低有效, 可选;在"Air8101+Air780Exx系列模组"组合中,由Air780Exx系列模组提供给Air8101;说明!AirLink协议支持轮询和中断模式, 若IRQ不选用则为轮询模式, 轮询周期默认5ms, 可配置
AirLink_WAKEUP 主机唤醒从机,在"Air8101+Air780Exx系列模组"组合中,由Air8101唤醒Air780Exx系列模组;
AirLink_RST 主机复位从机,在"Air8101+Air780Exx系列模组"组合中,由Air8101复位Air780Exx系列模组;

3、在"Air8101+Air780Exx系列模组"组合中,从机Air780Exx模组相应辅助信号的选择,我们推荐如下;

说明!虽然AirLink_RDY、AirLink_IRQ和AirLink_WAKEUP可以指定任意GPIO负责,但为了尽可能与我们提供给大家的软件demo一致,除非有其它的复用功能冲突,否则尽可能使用我们推荐的GPIO;

AirLink八个信号 Air8101 Air780EPM/EHM/EHV/EHN/EHU Air780EGP/EGG/EGH Air700ECP/ECH
AirLink_SPI_CLK PIN65:SPI1_CLK PIN86:SPI0_CLK PIN86:SPI0_CLK PIN62:SPI0_CLK
AirLink_SPI_MOSI PIN67:SPI1_MOSI PIN85:SPI0_MOSI PIN85:SPI0_MOSI PIN35:SPI0_MOSI
AirLink_SPI_MISO PIN8:SPI1_MISO PIN84:SPI0_MISO PIN84:SPI0_MISO PIN61:SPI0_MISO
AirLink_SPI_CS PIN66:SPI1_CS PIN83:SPI0_CS PIN83:SPI0_CS PIN36:SPI0_CS
AirLink_RDY(输入) PIN69:GPIO39或
PIN10:GPIO7二选一
PIN19:GPIO22 PIN19:GPIO22 PIN71:GPIO22
AirLink_IRQ(输入) PIN9:GPIO6 PIN20:GPIO24 PIN20:GPIO24 PIN39:GPIO24
AirLink_WAKEUP(输出) PIN68:GPIO12 PIN107:GPIO21 PIN102:GPIO20 PIN48:GPIO20 或
PIN70:GPIO21二选一
AirLink_RST(输出) PIN10:GPIO7 PIN15:RESET PIN15:RESET PIN15:RESET
说明 请结合Air8101和Air780EPM/EHM/EHV/EHC/EHU/EGP/EGG/EGH和Air700ECP/ECH管脚图进行理解;
Air780Exx系列:https://docs.openluat.com/air780epm/luatos/hardware/
Air700Exx系列:https://docs.openluat.com/air700ech/luatos/hardware/

以"Air8101+Air780PM"组合为例,参考原理图如下:

Air8101部分:

Air780EPM部分:

SPI总线常见的坑;

SPI作为总线协议,可以在一路SPI上挂载多个外设,每个设备分配一条独立的SPI-CS片选;

通过CS拉低片选机制,灵活打开相应外设;

合宙多个型号模组的开发板上,就通过这种方式,至少同时挂载了SD卡槽和CH390H;

CH390H的坑

当CH390H未供电时,其MISO MOSI CLK三个信号为在CH390H芯片内部为下拉状态,这时会将三个信号的电平拉低到非正常逻辑电平状态;

这个时候如果打开SPI总线上的其它外设,比如SD卡,会造成SD卡的读取失败,或者几率性失败或成功,原因就是因为SPI信号的逻辑电平混乱所致;

比如,我们设置的IO电平为3.3V,实际此时的电平可能是2V左右,其逻辑高电平处于临界状态,进而造成通信异常;

解决办法是必须将给CH390H的供电打开;

如下为CH390H截图;

SD卡槽

SPI总线接上拉电阻到LDO后会出现异常,比如,Air780系列V1.4开发板,SD卡部分将SPI总线上拉高到SD_3V3,用于增加SPI总线的驱动能力;

当其他同路SPI外设要使用时,SD卡的这路LDO必须要打开,否则会造成SPI通信不正常;

原因是,给每个外设供电的LDO,以LP5907MFX为例,其在关闭时,LDO电源输出管脚会有下拉电阻到地,进而造成SPI电平拉低,比如Air780EHM电平设置为3.3V时,会被拉低到2.2V甚至2V以下,造成SPI通信不正常;

LP5907MFX.pdf

所以,

当硬件设计中将SPI上拉到某一LDO时,一定要将该LDO打开才可以保证SPI正常通信;