Questions tagged «gpio»

GPIO是通用输入/输出的缩写。该术语通常应用于微控制器(或其他设备)上的引脚,该引脚可以在软件控制下在输入和输出之间进行更改。它可以用于应用程序定义的目的,而不是局限于一个指定的功能。

3
推挽/开漏 上拉/下拉
我正在阅读ARM Cortex芯片的数据表,尤其是GPIO章节。最终,我想配置各种GPIO引脚以在“备用功能”模式下使用它们以对SRAM进行读/写访问。 在所有可用的GPIO寄存器中,我不了解两个:GPIO_PUPDR和GPIO_OTYPE分别是“上拉/下拉寄存器”和“输出类型寄存器”。 因为GPIO_PUPDR我有三个选择: 无上拉或下拉 拉起 拉下 因为GPIO_0TYPE我有两个选择: 输出推挽 输出漏极开路 所有不同配置之间的区别是什么,哪一个最适合SRAM通信? 我正在使用的电路板的文档可在此处找到(有关SRAM原理图,请参见第24页)。此处提供了ARM芯片的参考手册(有关GPIO寄存器,请参见第145和146页)。

2
STM32了解GPIO设置
在STM32标准外设库中,我们需要配置GPIO。 但是我不确定有3种功能如何配置它们; GPIO_InitStructure.GPIO_Speed GPIO_InitStructure.GPIO_OType GPIO_InitStructure.GPIO_PuPd 在GPIO_Speed中,有4种设置可供选择 GPIO_Speed_2MHz /*!< Low speed */ GPIO_Speed_25MHz /*!< Medium speed */ GPIO_Speed_50MHz /*!< Fast speed */ GPIO_Speed_100MHz 我怎么知道我要选择哪种速度?使用高速或低速是否有优点或缺点?(例如:功耗?) 在GPIO_OType中,有2种设置可供选择 GPIO_OType_PP // Push pull GPIO_OType_OD // Open drain 如何知道从中选择?什么是开漏和推拉? 在GPIO_PuPd中,有3种设置可供选择 GPIO_PuPd_NOPULL // No pull GPIO_PuPd_UP // Pull up GPIO_PuPd_DOWN // Pull down 我认为此设置与推拉的初始设置有关。

6
串行协议定界/同步技术
由于异步串行通信甚至在当今的电子设备中也很普遍,我相信我们许多人会不时遇到这样的问题。考虑与串行线(RS-232或类似产品)连接并且需要连续交换信息的电子设备D和计算机。即每个发送一个命令帧,并每个发送一个状态报告/遥测帧答复(报告可以作为对请求的响应发送,也可以独立发送-在这里并不重要)。通信帧可以包含任何任意二进制数据。假设通信帧是固定长度的分组。PCPCX msDY ms 问题: 由于协议是连续的,因此接收方可能会失去同步,或者只是在进行中的发送帧中间“加入”,因此它只是不知道帧起始位置(SOF)在哪里。根据数据相对于SOF的位置,数据具有不同的含义,接收到的数据可能会永久损坏。 所需的解决方案 可靠的定界/同步方案可在恢复时间短的情况下检测SOF(即重新同步所需的时间不超过1帧)。 我了解(并使用了一些)的现有技术: 1)标头/校验和 -SOF作为预定义的字节值。帧末的校验和。 优点:简单。 缺点:不可靠。恢复时间未知。 2)字节填充: 优点:可靠,快速恢复,可与任何硬件一起使用 缺点:不适用于固定大小的基于帧的通信 3)第9位标记 -在每个字节之前附加一个位,而SOF标记为1和数据字节标记为0: 优点:可靠,快速恢复 缺点:需要硬件支持。大多数PC硬件和软件未直接支持。 4)第8位标记 -上面的一种模拟,同时使用第8位而不是第9位,每个数据字仅保留7位。 优点:可靠,快速的恢复,可与任何硬件一起使用。 缺点:需要从/到常规8位表示到/从7位表示的编码/解码方案。有点浪费。 5)基于超时 -假定SOF为某个已定义的空闲时间之后的第一个字节。 优点:无数据开销,简单。 缺点:不太可靠。在较差的计时系统(如Windows PC)上无法很好地工作。潜在的吞吐量开销。 问题: 还有哪些其他可能的技术/解决方案可以解决该问题?您能否指出上面列出的缺点,可以轻松解决这些缺点,从而消除它们?您(或您将)如何设计系统协议?
24 serial  communication  protocol  brushless-dc-motor  hall-effect  hdd  scr  flipflop  state-machines  pic  c  uart  gps  arduino  gsm  microcontroller  can  resonance  memory  microprocessor  verilog  modelsim  transistors  relay  voltage-regulator  switch-mode-power-supply  resistance  bluetooth  emc  fcc  microcontroller  atmel  flash  microcontroller  pic  c  stm32  interrupts  freertos  oscilloscope  arduino  esp8266  pcb-assembly  microcontroller  uart  level  arduino  transistors  amplifier  audio  transistors  diodes  spice  ltspice  schmitt-trigger  voltage  digital-logic  microprocessor  clock-speed  overclocking  filter  passive-networks  arduino  mosfet  control  12v  switching  temperature  light  luminous-flux  photometry  circuit-analysis  integrated-circuit  memory  pwm  simulation  behavioral-source  usb  serial  rs232  converter  diy  energia  diodes  7segmentdisplay  keypad  pcb-design  schematics  fuses  fuse-holders  radio  transmitter  power-supply  voltage  multimeter  tools  control  servo  avr  adc  uc3  identification  wire  port  not-gate  dc-motor  microcontroller  c  spi  voltage-regulator  microcontroller  sensor  c  i2c  conversion  microcontroller  low-battery  arduino  resistors  voltage-divider  lipo  pic  microchip  gpio  remappable-pins  peripheral-pin-select  soldering  flux  cleaning  sampling  filter  noise  computers  interference  power-supply  switch-mode-power-supply  efficiency  lm78xx 

1
从Arduino获取大量(〜100)数字输出信号
我希望能够使用Arduino控制约100个独立的LED。问题在于Arduino没有足够的引脚可以为此配置。解决这个问题的方法是什么?是否有芯片可以对来自Arduino的更复杂的信号进行解复用,然后可以控制LED?还是有其他解决方案?

5
输入或输出MCU引脚上的上拉和下拉电阻用法
MCU INPUT引脚仅需要上拉/下拉电阻(内部还是外部)吗?相比之下,配置为OUTPUT的MCU引脚“知道其电平”,因为它可以驱动-与另一电路的某些输入端相连的“浮动” MCU OUTPUT引脚没有意义,因为MCU引脚的状态只能是高或低...我有这个权利吗?现在,在MCU启动或发生故障时,将上拉/下拉线与此“ MCU输出至IC输入”线路相关联以确保某个IC的输入永不浮动可能是有益的。 也许我只是在这里回答了我自己的问题...根据应用的不同,上拉/下拉电阻可以在输入和输出引脚上使用吗?

5
BJT是否适合电平转换器?看来FET更常见,如何比较?
我是一个业余爱好者,从没有走过FET晶体管的数据表/教程。我是北京交响乐团的男人。我从未找到有关BJT与FET以及最适合每种类型的特定应用的讨论。我的项目是非常简单的开关和逻辑门式电路。因此,一旦我得到了BJT来满足项目的要求,我就会继续努力。我花了整个下午在EE-SE上进行研究,发现了很多好东西。我发现,对于电平转换器而言,FET似乎是更流行的选择。我希望有人可以对一些常见应用中FET和BJT的优势/劣势和权衡取舍提供“傻瓜式”解释。 我为项目选择了此电平转换器:我想使用具有3.3V GPIO的ESP8266驱动5V继电器。我测得的继电器线圈电流约为100mA。我想使用S8050和最少的零件,要求不高。我只是用ESP8266读取PIR传感器上的管脚,还读取一些拨动开关以使用继电器控制光。以上电路是一个不错的选择吗?我设计了自己的电路,但不打算使用它。尽管如此,如果有人能根据我的预感,猜测和一些伏都教义,对我的设计进行分析,仍然可以帮助我理解。 简而言之,我认为我的基极电流(GPIO输出Q1的3.3V-0.7V的基极)/ R2的1K欧姆= 2.6mA不会受到分压器R1 / R3中电流的很大影响,我认为是5 /(100K + 100K)= 25uA。我不知道R1,R2,R3和U1的基座的连接点如何工作;我猜想,U1的基极会将分压器的2.5V下拉至0.7V,但不确定如何影响GPIO产生的2.6mA。这就是为什么我要连接的电路。

3
为什么我首先需要设置一个值,然后再设置嵌入式处理器中的GPIO方向?
我有一个全职的固件工程师职位。最近,我接到了一项任务,以检查GPIO配置并根据需要更改设置。我发现一些引脚配置错误,因此自然而然地我重新配置了它们,但是我被告知我按错误的顺序进行了配置。这是我在说的: 之前:GPIO1.direction = INPUT; 之后:GPIO1.direction = OUTPUT; GPIO1.value = 0; 但是,在代码审查期间,我被告知我需要将初始化顺序更改为以下内容: GPIO1.value = 0; GPIO1.direction =输出; 换句话说,先设置值,然后再设置引脚的方向。我还被告知,这是现代处理器上的方式,因为它们使用两个寄存器,一个用于输入,一个用于输出,但是旧处理器仅使用一个寄存器,因此操作顺序无关紧要。 (注意:现代= ARM Cortex M3及更高版本,老= Intel 8051) 我要求在工作中提供更好的解释,但没有得到很好的答案。这就是为什么我决定在这里问。 所以这是我的问题: 为什么初始化顺序在新处理器上很重要? 为什么在旧处理器上初始化的顺序无关紧要? 他们在现代处理器中谈论什么两个寄存器? 他们在旧处理器上谈论什么单一寄存器? 如果有人可以提供某种图表,那会更好。
16 embedded  gpio 

4
如何通过最大4mA的GPIO引脚驱动20mA LED
我有一个带有GPIO的IC,我想用它来驱动LED。 由于设备将依靠电池运行,因此当LED熄灭时,请优先使用低电量(可能为零)。 GPIO开启时提供3.3V电压,关闭时提供0.0V电压。 它还具有最大4mA的限制。 LED的正向电流为20mA,期望的正向电压为2.0V。 当LED打开时,它很可能在低千赫兹范围内闪烁(使用PWM)。 戳一戳之后,我相信这可能是我需要的电路类型。 问题1:我是否接近正确的道路。 问题2:用于第(5)项(晶体管或Mosfet)的正确组件是什么?如何找到一个组件(在当地的Frys,RadioShack,Online)以及如何识别(指定)? 问题3:选择项目(5)是否会对电阻器项目(3)的欧姆值产生影响?除了适用于3.0V电源和2.0V LED的正常欧姆定律。 问题4:如果需要,电阻项目(2)的欧姆值为多少?
16 led  transistors  gpio 

1
开漏vs开集
漏极开路输出和集电极开路输出之间是否有实际区别,还是术语互换使用?如果它们确实是不同的,那么每种情况都有利的背景是什么?我的直觉是它们在功能上是等效的,但漏极开路是通过FET技术实现的,而漏极开路集电极是通过BJT技术实现的。


2
USB转GPIO模块
我正在做一个项目,涉及让用户按下网页上的按钮,服务器需要将这些按钮以GPIO信号的形式发送到微控制器上。服务器上唯一可用的端口是USB。 我有几点想法: 只需使用Arduino板作为USB至GPIO接口即可。 使用专用模块(例如http://numato.com/8-channel-usb-gpio-module)(这几乎是Google快速搜索中出现的唯一模块)。 使用类似此问题中所述的内容。通过USB驱动LED 有在这方面有经验的人可以提出建议吗?
15 usb  gpio 

3
3.3 V GPIO上的12 V输入,TVS下拉还是肖特基上拉?
我正在构建自己的PLC,该PLC必须接受高达30 V DC的永久输入到具有3.3 V输入的STM32F中。 开关输入必须在8-30 V的电压下工作,但是90%的时间输入电压将固定在12 V或24V。输入只能是限位开关之类的开关,因此我不会为检测而烦恼输入小于8 V或来自传感器等的输入,我也不担心速度,因为实际上开关将以最快的速度每1秒移动一次;我只需要确保微控制器受到保护即可。 我想要一个通用电路,可以在相似类型的多个产品/项目中使用,因此组件数量,成本和PCB空间必须最小,因此我真的不想使用光耦合器。 两名电子工程师建议了以下建议,但我不太确定哪种方法最好: 我应该使用顶部的还是底部的?为什么?

1
将LDR插入Raspberry Pi的GPIO引脚
我想将LDR连接到Raspberry Pi的GPIO引脚,我知道Raspberry Pi没有模数转换器,所以我要做的是在GPIO上发出HIGH信号(3.3v)当LDR的电阻较低时(约200欧姆以下),当LDR的电阻较高时(例如2k以上),信号为LOW。根据文档,我可以从Raspberry Pi的GPIO引脚安全提取的最大电流为50mA,如何计算所需的电阻器,是否还需要添加上拉/下拉电阻器?对于如何在不烧毁处理器的情况下以安全的方式执行此操作,我没有明确的想法。 我想我还必须在电路上插入一个电阻,以确保当LDR处于非常低的电阻状态时,它始终具有电阻。 更新:它工作正常,我建立了电路,并在这篇文章中显示了,谢谢您的帮助。

4
用GPIO和晶体管使远程控制按钮短路
我正在尝试使用Raspberry Pi的GPIO引脚控制我的车库门遥控器。不用驱动继电器,只需将遥控器上的按钮短路即可。这是我应该怎么做吗?我需要保护二极管吗?如果需要,应该去哪里? 将3.3V GPIO引脚引用到与远程地不同的地(Raspberry Pi地)是否重要? 还要感谢有关晶体管使用和电阻值的指导。 更新; OP评论提供的更多信息:检查后,您是对的,按钮只是将电路短路至9V电池的返回路径。我主要关心的是当遥控器上的所有器件均处于悬空状态时,将3.3V参考至GND。

3
了解GPIO模拟和数字
我正在尝试了解GPIO,并阅读了许多不同的博客文章,我想我已经快要掌握它了,但仍在努力解决一些问题。 我见过一些关于GPIO的参考,它们只能使用二进制值,但是其他帖子说该值可以在0-255之间。我假设这是模拟和数字GPIO之间的差异。那是对的吗?一个GPIO引脚能否同时充当模拟和数字引脚?
11 gpio 

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.