PIN100:GPIO17和IO_Volt_set(IO电平设置)

1. Air780E系列的老模组型号,以Air780E为例,PIN100是作为IO电平的设置管脚出现,所以有时候 PIN100也被叫做 IO_Volt_set 管脚;
PIN100悬空时,Air780E的IO默认电平为1.8V;
PIN100接地时,Air780E的IO电平设置为3.3V;
(说明!PIN100接地,可以直接接GND,也可以通过10K电阻接GND,都可以,本质都是GPIO17默认输入上拉,当检测到电平变低时,修改IO电平数值)
这样做的目的是,方便大家根据外设的情况,尤其是对端MCU的IO电平情况,来灵活调整模组的IO电平,避免再使用电平转换电路才可以进行通信;
2. 我们推出Air780EPM后,做了如下延续和变化;
- Air780EPM的默认电平,相对Air780E的1.8V,Air780EPM改为了3.3V;
为什么?
因为我们发现大多数情况下大家使用的都是3.3V;
- 延续了PIN100作为IO电平更换设置的作用;
PIN100悬空时,Air780EPM的IO默认电平为3.3V;
PIN100接地时,Air780EPM的IO电平设置为1.8V;
注意!跟上一代的Air780E是相反的设置;
3. Air780EHM推出后,由于与Air780EPM除了Flash和RAM不同外,其余完全相同,所以延续了Air780EPM的做法:
PIN100悬空时,Air780EHM的IO默认电平为3.3V;
PIN100接地时,Air780EHM的IO电平设置为1.8V;
4. 再后续的Air780Exx系列,包括Air780EHV/Air780EGP/Air780EGG/Air780EGH/Air780EHN/Air780EHU,都没再保留PIN100的这一功能,而是只作为普通的GPIO17使用;
为什么?
因为这些型号本来就只支持LuatOS二次开发,如果要设置IO电平,不过是一个函数的事情,完全没有必要浪费一个GPIO来实现这个功能;
示例代码
pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) -- 所有GPIO高电平配置为3.3V
pm.ioVol(pm.IOVOL_ALL_GPIO, 1800) -- 所有GPIO高电平配置为1.8V
5. Air780EPM和Air780EHM也完全可以使用 pm.ioVol() 函数来实现IO电平的设置,把PIN100释放出来作为普通的GPIO17来使用;
注意!
任何时候,pm.ioVol() 的优先级高于PIN100的设置,也就是说,同时使用PIN100悬空或下拉设置的时候,其优先级低于 pm.ioVol() 的设置;
需要特别注意的是!
当你将Air780EPM/Air780EHM的PIN100作为GPIO17使用时,如果其硬件电路上有下拉,这个时候就会将模组的IO电平修改为1.8V,进而导致与外设的电平不一致,这个时候,就需要在main文件里,第一句函数就加上IO电平3.3V的设置 pm.ioVol(pm.IOVOL_ALL_GPIO, 3300) ;
以Air780EHM/EHV/EGP/EGG/EHU开发板V1.4为例;
GPIO17用于LCD背光控制,其硬件电路上有下拉,这个时候如果不使用 pm.ioVol() 进行IO电平的设置,模组的IO电平就会被设置为1.8V,进而造成LCD/摄像头等外设无法正常使用;

