有关GPIO,先看来个嘲笑
招聘者:“听闻过GPIO么?”
技术工程师:“听闻过,常常用。”
“GPIO是啥?“”
“。。。。。。GPIO便是GPIO啊。。。”
“GPIO有什么作用?”
“。。。。。。不清楚。。。”
“好啦,你能回去了。”
下边就来好好说说这一了解又生疏的GPIO。
GPIO是啥?
字面意思看,GPIO=General Purpose Input Output,通用性I/O。有时通称为“IO口”。通用性,就是它是万花油,做什么都可以。I/O,就是既能当键入口应用,又能当輸出口应用。端口号,便是电子器件上的一个脚位。如何使用?写手机软件操纵。
汇总:GPIO便是处理芯片上的一根做什么都可以的脚位。
讲了这么多,坚信不明白的人還是一头雾水,我们冲着实例看一下GPIO如何使用对于下拉、往下拉、悬在空中、高阻、开漏、推挽这类的定义,能够之后再渐渐地揣摩。
GPIO的简易使用方法
輸出操纵数据信号
GPIO操纵LED灯的电源开关
GPIO用于做电源开关操纵,是最普遍的应用领域。
如圖,P21这一GPIO口,輸出1的情况下,LED403照亮,輸出0或是沒有輸出的情况下,LED403灭掉。
GPIO口是怎么被控制的呢?根据手机软件编码。必须闪灯的情况下启用GPIO口拉升的涵数,必须关灯的情况下启用GPIO降低的涵数,就可以完成操纵。涵数的实际操作,最后变成了向这一GPIO的硬件配置存储器载入数据信息,硬件配置的情况会追随存储器的数据信息更改而更改。
硬件配置存储器在这儿能够了解为一个开关元件,如同你告知家中的家庭保姆说“去吧大客厅的灯合上”,他就走以往按压灯的电源开关,随后灯就灭了。你下的这一命令的姿势等同于启用了GPIO实际操作的涵数,家庭保姆去按电源开关这一姿势等同于涵数配备存储器。
自然你也能够立即去按这一电源开关(立即实际操作存储器),这一作法尽管能工作中,可是在代码设计中不是符合标准的。事后改动中非常容易造成 操作失误。操作过程中必须事先复位,配备GPIO的主要参数,把存储器创建插口给别的过程启用等手机软件类的实际操作,这儿也不详细描述了。
键入终断数据信号
重力传感器輸出终断数据信号给MCU的GPIO口
G-sensor,也称为重力传感器/瞬时速度感应器/运动传感器,检测仪器是不是在健身运动的。我们平常用的蓝牙手环的计步软件关键便是依据G-sensor取样回家的健身运动数据信息测算而成的。
机器设备没动的情况下,G-sensor和MCU全是休眠模式以节约用电量。
机器设备动一动,G-sensor体会来到就被唤起了,就往终断口边(GSENSOR_INT)发一个上拉电阻数据信号,MCU感受到这一终断口的脉冲信号从低变为高了,就撤出休眠状态刚开始一切正常运作。
随后MCU就根据I2Capi接口载入G-sensor里的数据信息。
怎样看待终断呢?你已经入睡,忽然有些人来约你,他就需要先将你摇醒才行。这就是将你的睡眠质量终断了,给你从睡眠质量中被唤起(好似所述事例)。
一样,假如你已经看电视剧,忽然铃声响了,一看是女友来电話了,就需要把影片中止,保存影片当今的播放视频部位,随后去接女友的电話。接完了电話,再再次从以前的播放视频部位开播。
这一电話便是终断数据信号,储存影片部位便是终断回应前的情况入栈,接听电话的全过程便是终断系统服务,挂掉电話继续播放便是终断的情况出栈。
很有可能有些人要说,为何多此一举,G-sensor不可以立即把数据信息发给MCU么?这是由于I2C只有由关键设备积极进行传输数据的要求,从机器设备是不可以积极传送数据的(只有任凭关键设备回来获取数据)。有关I2C协议书的內容,请见类似文章。
只要是I2C插口且不断工作中的机器设备,都必须有一个终断輸出,用于告知服务器“我已经准备好数据信息了,你快点回来取回去吧”。
用GPIO做终断,还必须尤其需注意一条:假如挑选这一终断口来唤起系统软件,那一定要对比处理芯片说明书看清,挑选的终断口是否可以使唤起系统软件?
针对绝大多数单片机设计,基本上每一个终断口都能够唤起系统软件,但针对高cpu主频的CPU,如手机上和平板的,并并不一定的GPIO都能够配备成终断,也并不一定的终断都能唤起系统软件。
假如挑选了一个不可以唤起系统软件的终断口做所述实例,一旦MCU进到休眠状态,外接设备就无效了。
作为功能键键入
GPIO做按键检测
功能键严苛而言也是个终断。GPIO口默认设置情况是低电频,功能键按住后被拖到上拉电阻,这时系统软件可以检验到终断,判断为功能键按住。
直到功能键释放出来了,GPIO口检验到工作电压重归低电频,就判断为功能键松掉了。这类作法是单片机设计上较为普遍的作法。在智能化一些的硬件系统上,通常会出现单独的硬件配置功能键插口(非GPIO口),在处理芯片內部添加功能键控制板,根据硬件配置完成功能键的去抖、双击鼠标和长按分辨。
针对单片机设计,一旦被功能键开启以后,內部就刚开始跑程序流程,每过好多个ms载入一次功能键情况,分辨功能键是不是被释放出来。根据手机软件完成去抖、双击鼠标和长按的作用。
图上的电容器,用途是滤掉外界影响,防止被误开启,另外具有一定的功能键去抖功效。图上的TVS管,是为了更好地避免 静电感应进到CPU。
很有可能会有些人问,功能键按住便是按住了,怎么会颤动?
由于功能键全是脚踏式的,2个铜片在触碰的一瞬间,从分秒级的时间范围看来,会存有触碰-断掉-再触碰那样的轻度的颤动。直至2个铜片紧紧的触碰到一起以后,颤动才会消退。说白了功能键去颤动,便是根据廷时来清除掉触碰再断掉这类出现异常情况的。
假如GPIO口不足,可是必须做好几个功能键的检验,还可以把功能键配备变成ADC,根据不一样功能键造成不一样的工作电压,来运用一个ADC口检验到不一样的键值。这一作法一般用以手机上3.5毫米有线耳机上的3个功能键的检验。
GPIO的高级运用
GPIO除开简易的I/O以外,还能够做一些相对性繁杂的实际操作,比如仿真模拟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占空比的PWM波型
GPIO口輸出PWM波,跟作为I2C应用的特性上是一样的。操纵GPIO口 定时执行拉升降低,就可以輸出PWM波型。
如圖,便是根据PWM来操纵外界升压电路,驱动器蜂鸣片发出声响的。PWM还能够用以操纵LED灯的变光,更改PWM輸出的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应用。
1.《有关GPIO,先看来个嘲笑》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《有关GPIO,先看来个嘲笑》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/324860.html