gpio函数怎么用,gpio编程教学

首页 > 经验 > 作者:YD1662022-11-06 11:45:16

gpio函数怎么用,gpio编程教学(5)

四,用作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函数怎么用,gpio编程教学(6)

GPIO口输出PWM波,跟当作I2C使用的性质上是一样的。控制GPIO口 定时拉高拉低,就可以输出PWM波形。

如上图,就是通过PWM来控制外部升压电路,驱动蜂鸣片发出声音的。

PWM还可以用于控制LED灯的调光,改变PWM输出的占空比,调节灯光亮度。

六,ADC采样

GPIO用作ADC采样,采集电池电压

gpio函数怎么用,gpio编程教学(7)

电池分压后给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使用。

gpio函数怎么用,gpio编程教学(8)

上一页123下一页

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.