上一篇在这里:GPIO口使用方法大全(上篇)上一篇讲到了GPIO的简单用法GPIO除了简单的输入输出之外,还可以做一些相对复杂的操作,例如模拟I2C或SPI数据线、ADC电压检测、输出PWM波形等这些功能有些可以直接配置成硬件接口,也可以通过软件来模拟波形用作I2C接口GPIO用作I2C数据总线I2C时序图I2C是智能硬件电路上最常用的数据传输总线,只需要2根线,就能够挂载多个从设备,能够双向传输,最大速度可达400Kbps,非常适合传输控制指令和小量数据平时大家用的G-sensor传感器、光距离传感器、电容触摸屏、LED灯控制器、摄像头的控制命令等,几乎都是I2C接口的GPIO口用作I2C,算是GPIO传数据的最常用的方式如果芯片内部自带I2C控制器,可以直接配置GPIO切换到硬件I2C上例如单片机几乎都可以这么做如果芯片内部的I2C接口不够用,还可以通过软件控制GPIO口拉高拉低来模拟I2C的波形和时序,照样可以当作I2C使用同样的模拟数据线的做法,还可以用GPIO来模拟SPI只要是带时钟的低速同步数据线,都可以用GPIO口来模拟但是GPIO口不能用来模拟UART串口因为UART没有时钟线,需要非常精准的按照约定的时间间隔输出波形,软件定时器不准,硬件定时器占用系统资源多,所以很难实现PWM输出GPIO输出PWM波控制蜂鸣片不同占空比的PWM波形GPIO口输出PWM波,跟当作I2C使用的性质上是一样的控制GPIO口 定时拉高拉低,就可以输出PWM波形如上图,就是通过PWM来控制外部升压电路,驱动蜂鸣片发出声音的PWM还可以用于控制LED灯的调光,改变PWM输出的占空比,调节灯光亮度ADC采样GPIO用作ADC采样,采集电池电压电池分压后给ADC采样ADC,Analog-to-Digital Converter,把模拟信号转换成数字信号ADC的应用范围很广,麦克风音频数据的采样、电压电流信号的采样、模拟传感器输出的数据的量化等受限于精度、量程、采样速度等,GPIO的ADC一般不做太复杂的应用,大部分时候只做电压采集如上图,把GPIO口配置成为ADC模式,采集电池电压,用于做电池电量显示这个做法只适合做简单的电池电压显示,如果要做类似智能手机的百分之一精度的电池电量管理,还需要外加更高精度的ADC和电池补偿算法GPIO做ADC,最常遇到的问题是:一,不是所有的GPIO口可以做ADC使用,一定要看清楚规格书
二,ADC有电压域限制的,3V供电的ADC测量不到超过3V的电压例如上面第一张图,MCU用3V电池供电,此时GPIO/ADC的供电电压是3V,最大量程也是3V,可以测量到电池电压而第二张图锂离子电池电压是4.2V,MCU供电是3V,GPIO/ADC工作电压也是3V,就量不到这么高的电压了超出量程测量出来的都是一样的因此利用电阻分压,把4.2V的电池电压折半降低到2.1V,给3V量程的ADC使用欢迎关注燚智能头条号,给你量产级项目的设计经验燚智能周教授 智能硬件开发实战大讲堂精彩内容回顾多彩LED氛围灯设计方法详解肖特基二极管 三大参数,看你用的对不对?多款主流共享单车锁 设计方案详解
0 评论