历史上的今天
返回首页

历史上的今天

今天是: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。

STM8_IO口配置表1

STM8_IO口配置表2
(表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)


推荐阅读

史海拾趣

台湾肯尼威(CANNYWELL)公司的发展小趣事

台湾肯尼威公司成立于1986年,其创始人李明(化名)是一位对电子技术充满热情的工程师。在当时的台湾,电子制造业正处于蓬勃发展的阶段。李明看到电源滤波器在电子设备中的重要性,于是决定专注于这一领域的研发和生产。他带领一支小团队,经过无数次的试验和改进,终于成功研发出CW系列单相电源滤波器,为公司的发展奠定了坚实的技术基础。

Cableform Inc公司的发展小趣事

进入21世纪,电子行业迎来了快速发展的黄金时期。为了适应市场需求的变化,Cableform Inc不断加大研发投入,致力于技术创新。公司成功开发出了一系列具有自主知识产权的电磁控制产品,涵盖了从直流电机控制到高精度磁铁控制等多个领域。这些技术创新不仅提升了公司的核心竞争力,也为客户提供了更加高效、可靠的解决方案。

FREESCALE (NXP)公司的发展小趣事

进入21世纪,电子行业迎来了快速发展的黄金时期。为了适应市场需求的变化,Cableform Inc不断加大研发投入,致力于技术创新。公司成功开发出了一系列具有自主知识产权的电磁控制产品,涵盖了从直流电机控制到高精度磁铁控制等多个领域。这些技术创新不仅提升了公司的核心竞争力,也为客户提供了更加高效、可靠的解决方案。

Accetek公司的发展小趣事

Accetek公司深知人才是企业发展的核心竞争力。因此,公司一直注重人才引进和团队建设工作。公司通过与高校合作、举办招聘会等方式吸引了一批批优秀的人才加入。同时,公司还建立了完善的培训机制和激励机制,为员工的成长和发展提供了良好的平台。这些优秀的人才为公司的技术创新和市场拓展提供了有力的支持。

Futaba Electric Co Ltd公司的发展小趣事

Accetek公司创立之初,面临着激烈的市场竞争和技术挑战。然而,创始人凭借对电子行业的深刻理解和前瞻性的眼光,选择了数控雕刻机和激光雕刻机作为公司的主营业务。通过不断的技术研发和市场调研,Accetek成功推出了一系列高质量、高性能的产品,逐渐在市场中站稳脚跟。

千志电子(CCO)公司的发展小趣事

为了满足市场需求和扩大生产规模,千志电子不断加大投资力度。2014年,千志电子在湖北投资建设了千志电子科技(湖北)有限公司项目,总投资额达到5000万元人民币。该项目占地面积50亩,主要生产电阻等电子产品。预计项目建成后可实现年产值4000万元,年创利税350万元,安置劳动力120人左右。这一项目的投资建设不仅使千志电子的生产规模得到了进一步扩大,还为其未来的发展奠定了坚实基础。

问答坊 | AI 解惑

硬件设计鸡毛蒜皮之一

鸡毛蒜皮之一:成本节约 现象一:这些拉高/拉低的电阻用多大的阻值关系不大,就选个整数5K吧 点评:市场上不存在5K的阻值,最接近的是4.99K(精度1%),其次是5.1K(精度5%),其成本分别比精度为20%的4.7K高4倍和2倍。20%精度的电阻阻值只 ...…

查看全部问答>

RC有源带通滤波器的设计

RC有源带通滤波器的设计 …

查看全部问答>

【藏书阁】图解LC 滤波器设计与制作

目录: 第1章 滤波器的种类和特性 1.1 滤波器的种类和名称 1.2 理想滤波器的特性 1.3 实际滤波器的特性 1.4 函数型滤波器的特性 【专栏】本书中所涉及的数学运算 第2章 低通滤波器的经典法设计——定K型及m推演型LPF 的设计和应用 2.1 ...…

查看全部问答>

3W LED驱动整流桥输入端开槽与否

对之前3*1W的线路板进行改版;整流桥输入端是否需要开槽(多宽?);一个专业工程师说不用开;桥堆本身就过了安规的;现在市面上我买的大多数产品,输入端也大多有开槽的; 不知道有经验人士怎么看待这个问题?…

查看全部问答>

如何将uboot linux内核 应用程序做成bin文件烧录

我自己做的一个嵌入式应用程序 现在我需要将uboot linux内核 然后和自己的应用程序 打包做成一个bin文件烧写入板子 请问应该怎么做啊? 本人对烧录知道的不多 请大家帮忙   说得越仔细越好   3Q…

查看全部问答>

WinCE驱动程序的存在形式及其意义

    所有基于WinCE的驱动程序都是以用户态下的dll文件的形式存在的。也就是说,一方面所有WinCE下的驱动程序都是运行在用户态下的,另一方面我们开发WinCE驱动程序的方法与开发普通的win32dll是完全一致的,还需要补充的一点就是所有的 ...…

查看全部问答>

诡异的字符驱动问题

写了一个字符驱动,包括read,write,release等例程。然后又写了一个应用程序对其测试。代码分别如下(片段) 驱动: .....................//这些是之前的打开读写等例程 /********************************************************释放模块****/ i ...…

查看全部问答>

能否不用IC自己做个简单的12V转5V的DC-DC转换电路?

想尽可能的降低成本,所以请教能否不用IC自己做个简单的12V转5V的DC-DC转换电路?…

查看全部问答>

新一代电子产品设计要领

本帖最后由 jameswangsynnex 于 2015-3-3 20:00 编辑 趋势大师大前研一所说的M型社会越来越明朗之后,不是走高级名牌路线就是打肉搏的价格大战。竞争厂商彼此之间产品的功能差异化更加困难。若是只依靠工业设计拼造型,能够夺标的也仅有特色独异的 ...…

查看全部问答>

pxa270 定时器问题

大家好,本人正在做PXA270的驱动,在定时器方面遇到问题了,我用timer0作为系统的定时器,采用的时钟源是13M,系统可以正常运行起来. 现在想采用timer4作为别的事件的定时器中断来源,现在问题是Timer4的计数器OSCR4不自增,始终为0,导致OSCR4跟OSMR4不匹 ...…

查看全部问答>