看完使用方法嵌入式工程师硬件GPIO(电压硬件看完使用方法嵌入式)「嵌入式 gpio」

上一篇在这里: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氛围灯设计方法详解肖特基二极管 三大参数,看你用的对不对?多款主流共享单车锁 设计方案详解
看完使用方法嵌入式工程师硬件GPIO(电压硬件看完使用方法嵌入式)
(图片来源网络,侵删)

联系我们

在线咨询:点击这里给我发消息