GPIO控制
简介
GPIO(General-purpose input/output),通用型之输入输出的简称,可实现某时刻电平状态的输出与输入,即可以通过它们输出高低电平或者通过它们读入引脚的状态-是高电平或是低电平。
特性
共支持28个GPIO,部分引脚上电前后状态不同,使用时参考下表。
- VLCD、VMMC、VSIM1相关引脚电压域会根据外部硬件,其内部自动调整其输出电压,为1.8V/3V/3.3V
- At reset, after reset 都默认指的就是function 0功能的状态(即GPIO 配置还没生效前的状态)
- GPIO0~5 电源域默认关闭,所以at reset, after reset状态都是L
- GPIO29~31电源域默认关闭,所以at reset, after reset状态都是L
Pin State Function 0 Function 1 Function 2
GPIO number Name At Reset(H/L/Hiz) After Reset(H/L/Hiz) Power Domain Pull-up Pull-Down Function 0 Type Function 1 Type Function 2 Type
GPIO_0 LCD_DATA/GPIO_0 INPUT L INPUT L VLCD(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_0 I/O LCD_DATA O
GPIO_1 LCD_DC/NET_STATUS/GPIO_1 INPUT L INPUT L VLCD(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_1 I/O LCD_DC O NET_STATUS O
GPIO_2 LCD_CLK/AP_WAKEUP_MODULE/GPIO_2 INPUT L INPUT L VLCD(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_2 I/O LCD_CLK O AP_WAKEUP_MODULE I
GPIO_3 LCD_CS/WAKEUP_OUT/GPIO_3 INPUT L INPUT L VLCD(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_3 I/O LCD_CS O WAKEUP_OUT O
GPIO_4 LCD_SEL/NET_MODE/GPIO_4 INPUT L INPUT L VLCD(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_4 I/O LCD_SEL O NET_MODE O
GPIO_5 MODULE_STATUS/GPIO_5 INPUT L INPUT L400ms后,由底层软件控制为OUTPUT变H VDDIO(1.8V) 20K/4.7K 40K GPIO_5 I/O MODULE_STATUS O
GPIO_9 SPI1_CLK/GPIO_9 INPUT L INPUT L VDDIO(1.8V) 20K/4.7K 40K GPIO_9 I/O SPI1_CLK I/O
GPIO_10 SPI1_CS/GPIO_10 INPUT L INPUT L VDDIO(1.8V) 20K/4.7K 40K GPIO_10 I/O SPI1_CS I/O
GPIO_11 SPI1_DOUT/GPIO_11 INPUT L INPUT L VDDIO(1.8V) 20K/4.7K 40K GPIO_11 I/O SPI1_DOUT I/O
GPIO_12 SPI1_DIN/GPIO_12 INPUT L INPUT L VDDIO(1.8V) 20K/4.7K 40K GPIO_12 I/O SPI1_DIN I/O
GPIO_13 GPIO_13 INPUT L INPUT L VDDIO(1.8V) 20K/4.7K 40K GPIO_13 I/O
GPIO_14 I2C2_SCL/GPIO_14 INPUT L INPUT L VDDIO(1.8V) 20K/1.8K 40K GPIO_14 I/O I2C2_SCL O
GPIO_15 I2C2_SDA/GPIO_15 INPUT L INPUT L VDDIO(1.8V) 20K/1.8K 40K GPIO_15 I/O I2C2_SDA I/O
GPIO_17 CAMI2C_SDA1/GPIO_17 INPUT H INPUT H VDDIO(1.8V) 20K/1.8K 40K GPIO_17 I/O CAMI2C_SDA1 I/O
GPIO_18 UART1_CTS/GPIO_18 INPUT L INPUT L VDDIO(1.8V) 20K/4.7K 40K GPIO_18 I/O UART1_CTS I
GPIO_19 UART1_RTS/GPIO_19 INPUT L INPUT L VDDIO(1.8V) 20K/4.7K 40K GPIO_19 I/O UART1_RTS O
GPIO_20 UART2_RXD/GPIO_20 INPUT L OUTPUT L 5ms后变为H VDDIO(1.8V) 20K/4.7K 40K GPIO_20 I/O UART2_RXD I
GPIO_21 UART2_TXD/GPIO_21 INPUT L OUTPUT 输出log, 不建议使用 VDDIO(1.8V) 20K/4.7K 40K GPIO_21 I/O UART2_TXD O
GPIO_22 ZSP_UART_TXD/GPIO_22 INPUT L OUTPUT L 5ms后变为H VDDIO(1.8V) 20K/4.7K 40K GPIO_22 I/O ZSP_UART_TXD O
GPIO_23 USIM_CD/GPIO_23 INPUT L OUTPUT 输出log, 不建议使用 VDDIO(1.8V) 20K/4.7K 40K GPIO_23 I/O USIM_CD I
GPIO_24 MMC1_CMD/GPIO_24 INPUT H INPUT H,700ms后变为L VMMC(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_24 I/O MMC1_CMD I/O
GPIO_25 MMC1_DAT0/GPIO_25 INPUT H INPUT H,700ms后变为L VMMC(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_25 I/O MMC1_DAT0 I/O
GPIO_26 MMC1_DAT1/GPIO_26 INPUT H INPUT H,700ms后变为L VMMC(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_26 I/O MMC1_DAT1 I/O
GPIO_27 MMC1_DAT2/GPIO_27 INPUT H INPUT H,700ms后变为L VMMC(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_27 I/O MMC1_DAT2 I/O
GPIO_28 MMC1_DAT3/GPIO_28 INPUT H INPUT H,700ms后变为L VMMC(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_28 I/O MMC1_DAT3 I/O
GPIO_29 SIM1_CLK/GPIO_29 OUTPUT L OUTPUT L VSIM1(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_29 I/O SIM1_CLK O
GPIO_30 SIM1_DATA/GPIO_30 INPUT L INPUT L VSIM1(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_30 I/O SIM1_DATA I/O
GPIO_31 SIM1_RST/GPIO_31 OUTPUT L OUTPUT L VSIM1(1.8V/3V/3.3V) 20K/4.7K/1.8K 50K GPIO_31 I/O SIM1_RST O
GPIO接口软件控制
LUA开发相关API
常见问题及故障排查
http://doc.openluat.com/article/638/0
CAT1 的gpio配置成io输出放在循环定时里配置,为啥会有脉冲出来?
建议如果要配置成输出要在外面用函数方式配置调用,
如果不关闭自动切换sim卡情况下用gpio29,30,31注意以下几点:
gpio_30,配置为输入模式时,默认电平改不了,一直是高?
模块内部有强上拉,改不了。
如果不插sim0,gpio31会一直置高,配置输出低也无效,插入sim0,配置输出正常。
–如果要用到gpio29,30,31建议关闭自动切换功能
ril.request(“AT*SIMAUTO=0”)
GPIO7和usb休眠唤醒功能冲突说明
1:lua 3037版本新增一条特殊指令,但不提供对外说明:
对内使用说明:
默认底层占用了GPIO7用于USB睡眠和唤醒模块,所以GPIO7不再给客户使用
如果客户已经用了GPIO7
如果不需要USB控制模块睡眠和唤醒功能,可以通过AT+GPIO7ENABLE=0 关闭底层对GPIO7的占用
如果需要使用USB控制模块睡眠和唤醒功能,可以通过AT+GPIO7ENABLE=1,gpionum 指令,将底层对GPIO7的占用改成其他没有使用的管脚
3V引脚和3.3V引脚之间通讯要串联多大电阻?
1K的电阻
防拆监测工作原理?
防拆就是有两个管脚在模块内部是连在一起的,
这两个管脚可以连接到单片机的两个GPIO上,
如果模块被拆掉了,这两个GPIO之间的连接会断开
io能检测脉冲个数吗?
8910 1.3固件3102 以上版本支持定时检测脉冲,增加一种配置,返回高低脉冲的个数
详细使用说明请参考
https://doc.openluat.com/share_article/h6t5VpZq4PjUr
为什么脉冲检测功能没作用?
先关闭按键防抖功能:pio.pin.setdebounce(0xffffffff)
使用标准at指令控制通用gpio的指令是什么?
不支持
722 AT固件301845 gpio开机电平测试
722UG开机电平测试.docx
gpio的最大负载电流和灌电流是多少?能直接驱动led灯吗?
输出负载2ma,灌电流低于5ma,建议接三级管驱动led灯。
air724的gpio用作输入监测,1.8为高,0.8为低,可以吗?电气规定多少伏才为低?
不行 , 要低于0.6V
GPIO7能不能用?
GPIO7 默认被底层 休眠复用时候,不受控的问题,源于默认内部将GPIO7 和系统休眠做了硬件关联。(如果模块不休眠,则能正常控制,但是LUAT 不插USB ,默认就会休眠)
有解决方案:
AT+GPIO7ENABLE=1,18 此固定指定就是将 绑定到GPIO7 上的系统功能,转移到其他GPIO, 比如:GPIO18。
这样GPIO7 就能当普通GPIO口用了。