历史上的今天
今天是:2024年11月25日(星期一)
2019年11月25日 | STM8 通用输入输出口(GPIO)
2019-11-25 来源:eefocus
每个端口都分配的寄存器有:输出寄存器(ODR),输入寄存器(IDR),数据方向寄存器(DDR),控制寄存器1(CR1)和控制寄存器2(CR2).后面三个寄存器组和可以配置为8种GPIO的模式。一个I/O口工作在输入还是输出是取决于该口的数据方向寄存器的状态。通过在ODR、IDR中置0/1,达到数据输入输出的通断。
GPIO主要功能
可选择的输入模式:浮动输入和带上拉输入
可选择的输出模式:推挽式输出和开漏输出
数据输入和输出采用独立的寄存器
外部中断可以单独使能和关闭
输出摆率控制用以减少EMC噪声
片上外设的I/O功能复用
当作为模拟输入时可以关闭输入施密特触发器来降低功耗
在数据输出锁存时支持读-修改-写
输入兼容5V电压
I/O口工作电压范围为1.6 V到VDDIOmax
I/O的配置和使用
每一个端口都有一个输出数据寄存器(ODR),一个引脚输入寄存器(IDR)和一个数据方向寄存器(DDR)总是同相关的。
控制寄存器1(CR1)和控制寄存器2(CR2)用于对输入/输出进行配置。任何一个I/O引脚可以通过对DDR,ODR,CR1和CR2寄存器的相应位进行编程来配置。
寄存器中的位n对应于口的引脚n。各种不同配置总结如表18。


(表18:IO口配置表)
注意:连接VDD的二极管在实际开漏极状态引脚是无效的,在引脚和VOL之间的局部保护设备重要性是有效的。
没有使用的I/O引脚必须连接到一个固定的电平值。或者是上拉或者是下拉。
输入模式
将DDRx位清零就选择了输入模式。在该模式下读IDR寄存器的位将返回对应I/O引脚上的电平值。
如表18所示,理论上STM8可以通过软件配置得到四种不同的输入模式:悬浮不带中断输入,悬浮带中断输入,上拉不带中断输入和上拉带中断输入。但是在实际情况下不是所有的口都具有外部中断能力和上拉,用户应参考数据手册中关于每个引脚的实际硬件性能描述来了解更多细节。
输出模式
将DDRx位置1就选择了输出模式。在该模式下向ODR寄存器的位写入数据将会通过锁存器输出对应数字值到I/O口。读IDR的位将会返回相应的I/O引脚电平值。通过软件配置CR1,CR2寄存器可以得到不同的输出模式:上拉输出,开漏输出。
1、上拉输入:上拉就是把电位拉高,比如拉到Vcc。上拉就是将不确定的信号通过一个电阻嵌位在高电平!电阻同时起限流作用!弱强只是上拉电阻的阻值不同,没有什么严格区分。
2、下拉输入:就是把电压拉低,拉到GND。与上拉原理相似。
3、浮空输入:浮空(floating)就是逻辑器件的输入引脚即不接高电平,也不接低电平。由于逻辑器件的内部结构,当它输入引脚悬空时,相当于该引脚接了高电平。一般实际运用时,引脚不建议悬空,易受干扰。 通俗讲就是让管脚什么都不接,浮空着。
4、模拟输入:模拟输入是指传统方式的输入.数字输入是输入PCM数字信号,即0,1的二进制数字信号,通过数模转换,转换成模拟信号,经前级放大进入功率放大器,功率放大器还是模拟的。
5、推挽输出:可以输出高,低电平,连接数字器件; 推挽结构一般是指两个三极管分别受两互补信号的控制,总是在一个三极管导通的时候另一个截止。高低电平由IC的电源低定。
6、开漏输出:输出端相当于三极管的集电极. 要得到高电平状态需要上拉电阻才行. 适合于做电流型的驱动,其吸收电流的能力相对强(一般20ma以内).
7、复用开漏输出、复用推挽输出:可以理解为GPIO口被用作第二功能时的配置情况(即并非作为通用IO口使用)。
在STM32中选用IO模式,下面是参考网上的总结一下。
(1) 浮空输入_IN_FLOATING ——浮空输入,可以做KEY识别,RX
(2)带上拉输入_IPU——IO内部上拉电阻输入
(3)带下拉输入_IPD—— IO内部下拉电阻输入
(4) 模拟输入_AIN ——应用ADC模拟输入,或者低功耗下省电
(5)开漏输出_OUT_OD ——IO输出0接GND,IO输出1,悬空,需要外接上拉电阻,才能实现输出高电平。当输出为1时,IO口的状态由上拉电阻拉高电平,但由于是开漏输出模式,这样IO口也就可以由外部电路改变为低电平或不变。可以读IO输入电平变化,实现C51的IO双向功能
(6)推挽输出_OUT_PP ——IO输出0-接GND, IO输出1 -接VCC,读输入值是未知的
(7)复用功能的推挽输出_AF_PP ——片内外设功能(I2C的SCL,SDA)(8)复用功能的开漏输出_AF_OD——片内外设功能(TX1,MOSI,MISO.SCK.SS)
史海拾趣
|
鸡毛蒜皮之一:成本节约 现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K吧 点评:市场上不存在5K的阻值,最接近的是4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K高4倍和2倍。20%精度的电阻阻值只 ...… 查看全部问答> |
|
目录: 第1章 滤波器的种类和特性 1.1 滤波器的种类和名称 1.2 理想滤波器的特性 1.3 实际滤波器的特性 1.4 函数型滤波器的特性 【专栏】本书中所涉及的数学运算 第2章 低通滤波器的经典法设计——定K型及m推演型LPF 的设计和应用 2.1 ...… 查看全部问答> |
|
对之前3*1W的线路板进行改版;整流桥输入端是否需要开槽(多宽?);一个专业工程师说不用开;桥堆本身就过了安规的;现在市面上我买的大多数产品,输入端也大多有开槽的; 不知道有经验人士怎么看待这个问题?… 查看全部问答> |
|
如何将uboot linux内核 应用程序做成bin文件烧录 我自己做的一个嵌入式应用程序 现在我需要将uboot linux内核 然后和自己的应用程序 打包做成一个bin文件烧写入板子 请问应该怎么做啊? 本人对烧录知道的不多 请大家帮忙 说得越仔细越好 3Q… 查看全部问答> |
|
所有基于WinCE的驱动程序都是以用户态下的dll文件的形式存在的。也就是说,一方面所有WinCE下的驱动程序都是运行在用户态下的,另一方面我们开发WinCE驱动程序的方法与开发普通的win32dll是完全一致的,还需要补充的一点就是所有的 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 趋势大师大前研一所说的M型社会越来越明朗之后,不是走高级名牌路线就是打肉搏的价格大战。竞争厂商彼此之间产品的功能差异化更加困难。若是只依靠工业设计拼造型,能够夺标的也仅有特色独异的 ...… 查看全部问答> |
|
大家好,本人正在做PXA270的驱动,在定时器方面遇到问题了,我用timer0作为系统的定时器,采用的时钟源是13M,系统可以正常运行起来. 现在想采用timer4作为别的事件的定时器中断来源,现在问题是Timer4的计数器OSCR4不自增,始终为0,导致OSCR4跟OSMR4不匹 ...… 查看全部问答> |




