Questions tagged «microcontroller»

紧密耦合的独立设备中包括中央处理器(CPU),内存和(通常)各种I / O外设(UART,ADC,DAC,通用I / O,I2C等)的设备包。

1
STM32“ USB设备”与“ USB OTG HS”的区别是什么?
我最近下载了stm32应用进行MCU搜索,发现例如STM32F429在“ USB Device”外设中为“ NO”,而在“ USB OTG FS”和“ USB OTG HS”中为“ YES”。由于STM32F429可以完全作为USB设备使用,即它支持所有库和USB类,因此这非常令人惊讶。 其他一些MCU中标有“ USB设备”,例如。STM32L052 然后我尝试检查CubeMX,发现他们的搜索中有USB_Device外设(同样STM32F429不包含它,USB东西是通过OTG完成的)。 这个问题可能很容易回答,因为我怀疑USB设备只是意味着不支持OTG的设备,但是我不确定,通常MCU还是会使用OTG(而且只有一个库,所以为什么USB中的状态为“ NO”外设)。我在Google或CubeMX文档中找不到有关它的信息。 由于USB OTG HS似乎可以正常使用该库,因此我对此并不十分担心,但是我对术语感到好奇。 我知道ST论坛可能是解决此问题的好地方,但是很多话题只是在两年过去之后才得到解答。:) 谢谢。

5
微控制器中的中断处理和FSM示例
最初的问题 我对微控制器中的中断处理有一个一般性的问题。我正在使用MSP430,但我认为这个问题可能会扩展到其他uC。我想知道是否经常在代码中启用/禁用中断是一种好习惯。我的意思是,如果我有一部分对中断不敏感的代码(或者更糟糕的是,出于某种原因,一定不能监听中断),那么这样做会更好: 在关键部分之前禁用中断,然后在其后重新启用它们。 在相应的ISR中放置一个标志,并(而不是禁用该中断),在关键部分之前将标志设置为false,然后在紧要部分之前将其重置为true。防止执行ISR的代码。 两者都不提供,因此欢迎提出建议! 更新:中断和状态图 我将提供具体情况。让我们假设我们要实现一个状态图,该状态图由4个块组成: 过渡/效果。 退出条件。 进入活动。 做活动。 这就是教授在大学里教给我们的。遵循此方案可能不是最好的方法: while(true) { /* Transitions/Effects */ //---------------------------------------------------------------------- next_state = current_state; switch (current_state) { case STATE_A: if(EVENT1) {next_state = STATE_C} if(d == THRESHOLD) {next_state = STATE_D; a++} break; case STATE_B: // transitions and effects break; (...) } /* Exit activity …

2
为什么MCU寄存器中与逻辑相关的位字段通常位于不同的位置?
如果这个问题已经被回答,请原谅我,但是无论是在此页面还是在更广泛的Internet上我都找不到答案。 我是一位经验丰富的开发人员,在底层编程方面拥有丰富的知识,但是对于嵌入式开发而言却相对较新。我一直在自学使用ST-NUCLEO144板进行嵌入式系统开发,该板具有STM32F746ZG MCU。在我看来似乎不是显而易见的一个问题是,为什么寄存器中与逻辑相关的位字段可能位于不同的位置。 一个例子是USART_CR1STM32746ZG上的寄存器。的M0和M1位字段一起控制USART TX / RX的字长,的组合的2比特值0b00指定8位,0b01指定9个比特,等等,这是所有相当简单的,不同之处在于M0在第12位和M1在比特28 ...为什么呢? 是否出于遗留设计的原因,例如将新功能插入到先前保留的空间中?是出于与芯片设计相关的原因而我没有考虑,还是出于更大的目的而没有看到? 显然,使用位屏蔽可以克服这个问题,但是我很好奇。

2
有人可以解释这个微控制器ADC接口(用于读取太阳能电池板电压)吗?
我正在尝试了解TIDA-00121中找到的电路的功能(您可以从此处下载设计文件) 我认为这与以下事实有关:PV并未直接接地(当太阳能电池板的电压太低而无法阻止任何反向电流流入电池板时,反向电流MOSFET可能会关闭) 对于传递函数(来自源代码),微控制器侧的电压等于: V = 0.086045Pv-0.14718475V(PV是面板电压)。 这是从Vref = 2.39,10位ADC和源代码公式得出的: 面板电压= 36.83 * PV-63 从源代码验证我的假设: 电池电压= BV * 52.44 产生电池分压器微控制器侧的电压: V = 0.122BV是分压比(14K / 100K网络) 问题是: pnp晶体管网络的作用是什么? 如何计算微控制器侧电压的传递函数? 非常感谢你。

2
将可变字符打印到UART不起作用,常数可以正常工作
我在PIC18F27K40单片机上的XC8有一个很奇怪的问题。在PIC16F1778上它可以工作。我定义了: void uart_putch(unsigned char byte) { while (!PIR3bits.TX1IF); TX1REG = byte; } 在我的main循环中,当我致电时uart_putch('a');,它工作正常。但是,当我定义const char c = 'a';并调用时uart_putch(c);,它不起作用。它打印出一些内容,尽管不是a-我认为它们是0x00字符,是我从中得到的hexdump -x /dev/ttyUSB0。这不是我计算机上串行端口的问题;我看了一下示波器,信号却不同(左起作用,右没有): 代码很简单: void main(void) { init(); // Sets up ports and UART control registers while (1) { uart_putch('a'); // or c } } 我认为与之相关的任何字符串函数(puts,printf等)也不起作用,因此在这个问题中,我用字符做了一个最小的工作示例。 使用变量时生成的程序集c具有: _c: db low(061h) global __end_of_c _main: ; …

3
真正的含义是:微控制器(uC),片上系统(SoC)和数字信号处理器(DSP)?
实际问题在最后。但是,仅阅读一本书可能并不会告诉您我为什么感到困惑。我写这篇文章时先说一些定义,假设和推测,然后问实际问题。 我一直以为我知道区别,但是当我遇到类似的问题时:“如果我将收发器与uC一起使用,那么现在是SoC吗?” 我一团糟,我不知道该怎么回答。我记得曾经被告知uC本质上是SoC。但是我有什么证明?但是arduino不在单个芯片上!我可以随时从面板上取出Atmeg处理器! 当我在线检查时,会得到各种答案,这些答案证实或与我刚才所说的直接或间接所说的相矛盾。这总是让我感到困惑,我只怪推销员,他们只是推销那些松散地使用这些术语(有时可以互换使用)的人以及追随他们的人。 因此,我决定寻找这三个术语的基本含义:uC,SoC和DSP。因为例如,当我对电路中的电压感到困惑时,我总是回到物理基础上,接地不是真的为零,它只是一个“参考”,电压不是“绝对”,它们是一个“相对”。这总是将我指向正确的方向。但是谈论uC毫无根据。“微”“控制器”是一个很小的控制器,以微米为单位。但是我们没有纳米控制器这个词,对吗?因此,这种思维方式无济于事。 我想回答的是以下内容: uC是一个具有其他外围设备和存储器的处理单元,可用于一般用途,对吗? SoC是“芯片”上的完整“系统”。因此,无论您将系统安装在单个芯片上,都是SoC,对吗? DSP是特定用途的处理单元,主要是数学运算,对吗? 现在 这是否意味着将uC中的所有内容都要求都在一个芯片中?因为如果是,那么uC实际上就是SoC。也许很小,但确实如此。那arduino呢。如果uC在单个芯片上,它可能“可以”成为SoC,但是不必这样做(我在这里大量使用arduino作为示例)。 因此,如果我将arduino的所有组件都放在另一个板上,然后将XBEE添加到混合中,那么arduino就是一个uC。它仍然是uC,对吗?那么我们什么时候可以说现在是SoC?仅当将相同的东西放在单个芯片中而不是放在板上时? 到目前为止,我认为上述问题可以通过某种方式回答自己,但我只是想确认一下,以便继续。当我试图从根本上考虑芯片或电路板“可以”相同时,只是连接不同组件的导线。在这一点上,您如何定义组件?它是单个晶体管还是ADC之类的电路?但是我不想去那里。 下一个问题是这篇文章的真正含义: uC本质上是SoC吗?SoC的一种特殊情况,其要求之一是整个系统都供通用使用。 uC是通用的(根据互联网),而DSP主要用于数学处理从现实世界收集的信号。但是DSP仍然是“处理器”,而uC包含“处理器”。我是否可以仅将DSP与一堆或外围设备放在一起(可以说ADC和DAC,因为它们通常与它们一起使用),并将其称为uC?还是SoC(因为现在混合不是通用的,因此我们不能称它为uC,但它仍然是SoC)

2
超级电容器为微控制器供电
我有一个可在1.8V至3.3V电压下工作的uC。睡眠模式下的电流消耗约为20uA,活动状态下的电流消耗约为12mA。uC将每分钟进入活动状态约100毫秒。 因此,我尝试通过Vishay超级电容为该电源供电:2.8F时为15F,在1kHz时为1.2O的ESR。 Math说我可以从该电容上拉出约4.10 mA的电流,直到它的电压下降到1.8伏,此时微控制器将关闭。 所以..问题:我错过了什么吗?我应该在超级电容和微型电容之间添加一个小的电解液吗?一个小的齐纳二极管以限制电压的最终峰值(可能吗?)?我应该添加一个降压升压转换器以从电容器中获得更多收益吗? 另外..如果我在微控制器上禁用掉电检测,也许我可以从电容器中拉出类似10%的电荷?我可以实施错误检查,以防微输出杂乱无章,这通常发生在低压情况下,掉电检测已禁用。

4
是否可以使MCU在-55度下工作,规格为-40至85度工作环境?
我听说有人提到过屏蔽的方法:让10个MCU在-55度下工作,然后找出可以正常工作的MCU,将损坏的MCU扔掉。 该方法适用吗?我担心在我的筛选测试中,MCU可能在-55度下正常工作,而在实际工作环境中却无法通过。 如果没有,可能的解决方案是什么?由于其出色的DSP性能,我们正在使用stm32f4。我们发现,工作在-55度的MCU不具有DSP,并且只能在20MHz左右的低频下工作。



4
外部ADC的用例
大多数微控制器(uC)的外围设备均具有模数转换器(ADC),这是惊人的,因为它将两个组件集成到一个封装中。这些ADC通常也进行寄存器映射,从而可以快速,轻松地提取数据。 尽管紧密集成,您仍然可以购买外部ADC。我可以看到几种情况: ADC需要与uC隔离。 ADC样本的位深度必须高于uC的ADC。 感应电压远离微控制器,较长的模拟线路是不可接受的。 感应电压处于不适合uC的恶劣环境中。 外部ADC的采样速度比uC的ADC快得多。 某些样品的参考电压与其他样品的参考电压不同,需要多个Vref引脚(因此需要多个外部ADC)。 当前的uC没有足够的ADC通道,放置新uC的成本高得令人望而却步。 外部ADC的功耗比uC的ADC少(我需要一个例子来相信它)。 ADC通道必须同时采样(罕见情况)。 在制造时对固件进行编程的成本超过了较昂贵的ADC部件的成本(不太可能)。 PCB具有空间限制,没有uC可以容纳(不太可能)。 这一切都很好,但是让我感到奇怪的是,外部ADC通常比uC同类产品贵很多,但是却提供了等效的功能。例如,您可以以约$ 1的价格购买带有12bit 1Msps ADC(带有内部参考)的EFM32Z部件,或者以约$ 3.50的价格购买等效的12bit 200ksps ADC (相同速度(ish),相对相同的功率数字等),以及执行相同的任务(提取ADC数据)。 问题就变成了:当一个微处理器能够执行相同的功能时,是否有令人信服的理由使工程师更喜欢一个外部ADC而不是一个uC的ADC?

6
8位和16位微控制器在哪里?为什么没有接管32位?
在选择32位微控制器的成本与性能之间的权衡方面,真正的临界点是什么? 换句话说,随着ARM体系结构的兴起和统治,为什么我们仍然使用8位和16位微控制器?它们还便宜吗? 我了解到,非常低端的设备不需要更大,更复杂的体系结构所提供的资源。但是,如果成本似乎趋于相同范围,仍然使用它们的真正动机是什么?


2
使用3.3V驱动4.8V伺服信号线
我有一个工作电压为4.8V 的伺服器。我想从运行3.3V的MCU驱动伺服器。我还没有尝试过,但是想知道是否需要使用MOSFET或NPN晶体管将信号线驱动到4.8V。是否可以使用3.3V信号驱动4.8V伺服器?性能会受到影响吗? 如果需要以4.8V驱动,应该如何连接?门显然到达信号(具有必要的电阻),但是如何连接伺服器的信号线?我应该将信号线连接到4.8V,将地线连接到漏极吗?我猜这行不通。这有可能吗?

3
复古计算机学校项目的CPU
我是一所IT学校的学生,我们正在尝试一个项目,该项目可以用来向一年级的学生展示舞台背后的工作原理,最终我们想到了制造一台复古计算机。 我已经阅读了许多有关Z80处理器的内容,但是我猜想我们需要更强大的功能,尽管考虑到我们会找到很多文档,ARM可能是一个不错的选择,但我们仍在怀疑该体系结构,还建立了一些特殊需求: 如果需要更多RAM,则使用外部地址总线 > 50Mhz 16或32位 没有BGA / QFN封装 没有FPGA板 串行接口(?) 预算也不是太贵,因为我们的预算有限 P8X32A-D40看起来像一个不错的CPU,但缺少我们需要的RAM数量(32k),我更多地考虑的是> 1MB。也许eZ80是值得考虑的。我们希望得到像您这样的经过实验的人的解答。 谢谢。 编辑:尽管我已经接受了满足我们需求的答案,但该问题仍然可以接受其他建议,因为我们将不得不与愿意参加该项目的学生团队讨论选择问题。

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.