demi的博客

硬件原理图中的“英文缩写”大全

demi的头像

常用控制接口

EN:Enable,使能。使芯片能够工作。要用的时候,就打开EN脚,不用的时候就关闭。有些芯片是高使能,有些是低使能,要看规格书才知道。

CS:Chip Select,片选。芯片的选择。通常用于发数据的时候选择哪个芯片接收。例如一根SPI总线可以挂载多个设备,DDR总线上也会挂载多颗DDR内存芯片,此时就需要CS来控制把数据发给哪个设备。

RST:Reset,重启。有些时候简称为R或者全称RESET。也有些时候标注RST_N,表示Reset信号是拉低生效。

INT:Interrupt,中断。前面的文章提到过,中断的意思,就是你正睡觉的时候有人把你摇醒了,或者你正看电影的时候女朋友来了个电话。

PD:Power Down,断电。断电不一定非要把芯片的外部供电给断掉,如果芯片自带PD脚,直接拉一下PD脚,也相当于断电了。摄像头上会用到这根线,因为一般的摄像头有3组供电,要控制三个电源直接断电,不如直接操作PD脚来的简单。(在USB Type-C接口中有一个Power Delivery也叫PD,跟这个完全不一样,不要看错了。)

MOSFET与三极管的ON状态区别

demi的头像

MOSFET和三极管,在ON 状态时,MOSFET通常用Rds,三极管通常用饱和Vce。那么是否存在能够反过来的情况,三极管用饱和Rce,而MOSFET用饱和Vds呢?

三极管ON状态时工作于饱和区,导通电流Ice主要由Ib与Vce决定,由于三极管的基极驱动电流Ib一般不能保持恒定,因而Ice就不能简单的仅 由Vce来决定,即不能采用饱和Rce来表示(因Rce会变化)。由于饱和状态下Vce较小,所以三极管一般用饱和Vce表示。

MOS管在ON状态时工作于线性区(相当于三极管的饱和区),与三极管相似,电流Ids由Vgs和Vds决定,但MOS管的驱动电压Vgs一般可保持不变,因而Ids可仅受Vds影响,即在Vgs固定的情况下,导通阻抗Rds基本保持不变,所以MOS管采用Rds方式。

电流可以双向流过 MOSFET的D和S ,正是MOSFET这个突出的优点,让同步整流中没有DCM的概念,能量可以从输入传递到输出,也可以从输出返还给输入。能实现能量双向流动。

嵌入式软件开发编程规范很重要,很重要,很重要!

demi的头像

Ⅰ 写在前面

不知道大家有没有这样的感受:看到不规范(杂乱差)的代码,瞬间就没有看下去的欲望了。

相信大家看到标题都应该能明白编程的规范及原则对于每一个软件开发的工程师来说是多么重要。

初学者编写测试程序、小的模块程序也许不能感受它的重要性;但有经验及大型项目开发的人就知道程序的规范性对他们来说是有多么的重要。

Ⅱ 关于编程规范及原则

编程规范也就是编写出简洁、可维护、可靠、可测试、高效、可移植的代码,提高产品代码的质量。

本文针对嵌入式,主要结合C语言编程的规范给大家讲述。

1. 头文件

对于C语言来说,头文件的设计体现了大部分的系统设计,不合理的头文件布局是编译时间过长的原因。

有很多人将工程中所有的头文件包含在一个include.h文件中,然后在每一个.c源代码文件中包含include.h头文件,这样做可以让代码看上去简洁,但实际忽视了编译效率问题,而且代码的可移植性也不好。

原则:

A. 头文件中适合放置接口的声明,不适合放置实现;
B. 头文件应当职责单一;
C. 头文件应向稳定的方向包含。

规则:

电源的反向保护二极管及作用

demi的头像

你在使用电源时,是否会将电源进串联或并联?或者你是否用电源给电机进行供电? 这些应用如果使用不当,很有可能损坏供电的电源?本博文详细描述电源的反向电压保护的必要性!

电源的输出端口通常会采用一个反向二极管来保护电源避免受到反向电压的损坏!如下图所示,几乎绝大部分的直流电源都会在输出端口添加一个甚至多个电解电容。这些电容起到滤除输出纹波和噪声,而且提供额外的电能用于减小在负载电流动态变化时电压突升或突降的幅度。电解电容可以承受一些反向电压,但也不会很高,一般在1V到1.5V,过高的反向电压会导致电解电容的泄漏甚至更糟糕的情况…..譬如爆炸!反向保护二极管可以限制电解电容的方向电压在二极管的导通电压以内,而且保护二极管的耐流值至少应该与电源的输出最大电流一致。

对于线性电源,必须在电源的输出端,按照上图的方式添加反向保护二极管,即二极管的阴极连接到电源的正极,阳极连接到电源的负极。

但对于开关电源,反向保护二极管其实已经隐藏在的它的电路之中,如下图所示:

如何在成千上万的单片机里挑选合适的单片机?

demi的头像

在实际项目中,选择什么样的单片机作为系统的控制核心,是非常重要的工作。因为选择恰到好处的单片机,对降低项目开发难度、提高产品维护方便性、降低设备生产成本、提升系统运行性能、降低系统功耗、提升产品运行稳定性、提高产品生存周期、方便产品升级性等指标有着至关重要的作用。

那么如何在成千上万的单片机里挑选合适的单片机呢?

一、根据项目的需求,评估项目规模,并根据项目未来发展规划,确定项目需要的硬件资源要求。比如:通讯方式、是否需要A/D设备(具体的精度与转换速率等要求)、是否需要显示界面(具体的显示内容要求等等)、是否需要RTC、日后升级需要添加的功能需要什么样的硬件资源等等,如此基本可确定系统硬件资源。有了硬件资源要求,就可限定一个单片机类型范围,硬件资源一定要够用,一定要不能少,同时也不能选择资源过多的导致资源浪费;

二、根据项目需求,基本上可以确定软件需要的RAM与Flash资源容量,RAM资源一般要比实际应用要求多20%-30%的裕量,同样Flash的资源也要多出20%-30%的裕量,方便日后软件升级,随着芯片片设集成度的提高,RAM与Flash资源的单位成本在大幅降低,所以,在不大幅提升成本的前提下,RAM与Flash的容量越多越好;

硬件电路设计的几个注意事项!

demi的头像

嵌入式设计是个庞大的工程,今天就说说硬件电路设计方面的几个注意事项,首先,咱们了解下嵌入式的硬件构架。

我们知道,CPU是这个系统的灵魂,所有的外围配置都与其相关联,这也突出了嵌入式设计的一个特点硬件可剪裁。在做嵌入式硬件设计中,以下几点需要关注。

第一、电源确定

电源对于嵌入式系统中的作用可以看做是空气对人体的作用,甚至更重要:人呼吸的空气中有氧气、二氧化碳和氮气等但是含量稳定,这就相当于电源系统中各种杂波,我们希望得到纯净和稳定符合要求的电源,但由于各种因素制约,只是我们的梦想。这个要关注两个方面:

a、电压

嵌入式系统需要各种量级的电源比如常见的5v、3.3v、1.8v等,为尽量减小电源的纹波,在嵌入式系统中使用LDO器件。如果采用DCDC不仅个头大,其纹波也是一个很头疼的问题。

b、电流

嵌入式系统的正常运行不但需要稳定足够的电源,还要有足够的电流,因此在选择电源器件的时候需要考虑其负载,我设计时一般留有30%的余量。

你知道单片机、ARM、DSP都是CPU吗?

demi的头像

学计算机和电子的人们都学过单片机和CPU,你知道单片机、ARM、DSP都是CPU吗,它们之间又有什么不同?本文进行了整理,一起来看看吧!

CPU:中央处理器

CPU 包括运算逻辑部件、寄存器部件和控制部件等,其本质就是一个集成电路,实现的功能就是从一个地方读出一个指令,从另一个地方读出数据,然后根据指令的不同对数据做不同的处理,然后把结果存回某个地方,而不同架构的CPU会有不同的指令、不同的存取方式、不同的速度、不同的效率等差异。从实现运算的角度,单片机、ARM、DSP都可以称之为CPU。

1、单片机:微控制器MCU

目前,单片机已广泛称作微控制器(MCU),单片机是一块类似PC的芯片,只是没PC强大,但它可以嵌入到其它设备中从而对其进行操控。单片机的多机应用系统可分为功能集散系统、并行多机处理及局部网络系统。

2、ARM:高效能RISC

ARM内核是一个嵌入式系统。RISC架构的指令,寄存器和流水线特征使它非常适合于并行计算。

3、DSP:通用数字信号处理器

PCB设计中消除电源噪声的方法有哪些?

demi的头像

1、注意板上通孔:通孔使得电源层上需要刻蚀开口以留出空间给通孔通过。而如果电源层开口过大,势必影响信号回路,信号被迫绕开,回路面积增大,噪声加大。同时如果一些信号线都集中在开口附近,共用这一段回路,公共阻抗将引发串扰。

2、连接线需要足够多的地线:每一信号需要有自己的专有的信号回路,而且信号和回路的环路面积尽可能小,也就是说信号与回路要并行。

3、模拟与数字电源的电源要分开:高频器件一般对数字噪音非常敏感,所以两者要分开,在电源的入口处接在一起,若信号要跨越模拟和数字两部分的话,可以在信号跨越处放置一条回路以减小环路面积。

4、避免分开的电源在不同层间重叠:否则电路噪声很容易通过寄生电容耦合过去。

5、隔离敏感元件:如PLL。

6、放置电源线:为减小信号回路,通过放置电源线在信号线边上来实现减小噪声。

来源:网络

如何提高PCB设备可靠性

demi的头像

提高PCB设备可靠性的技术措施:方案选择、电路设计、电路板设计、结构设计、元器件选用、制作工艺等多方面着手,具体措施如下:

(1)简化方案设计。

方案设计时,在确保设备满足技术、性能指标的前提下,应尽量简化设计,简化电路和结构设计,使每个部件都成为最简设计。当今世界流行的模块化设计方法是提高设备可靠性的有效措施。块功能相对单一,系统由模块组成,可以减少设计的复杂性,将设计标准化、规范化。国内外大量事实已证明了这一点,产品设计应采用模块化设计方法。

(2)采用模块和标准部件。

模块和标准部件是经过大量试验和广泛使用后证明为高可靠性的产品,因而能充分消除设备的缺陷和隐患,也为出现问题之后的更换和修理带来了方便。采用模块和标准化产品不仅能有效地提高设备的可靠性,而且能大大缩短研制周期,为设备的迅速改型与列装提供极有利的条件。

(3)提高集成度。

选用各种功能强、集成度高的大规模、超大规模集成电路,尽量减少元器件的数量。元器件越少,产生隐患的点也越少。这样,不仅能提高设备的可靠性,而且。能缩短研制、开发周期。

(4)降额设计。

STM32学习之启动代码很重要!

demi的头像

最近在写一个人机界面,由于硬件同事布板的问题,必须要用到串口4,先开始我还觉得没什么,就是把USART1改成4以及改下开启时钟和配置引脚。

但是事实证明我的想法是多么愚蠢,调了整整2天,UART4发送很好,但是就是在接收时死活的卡在中断之前,就会进入HardFaultException B HardFaultException。真是百思不得其解,我就一步步调试跟踪,也没有发现任何问题,UART4的配置都是正确的,引脚也都没问题。这两天真是调试的快崩溃了。在网上查询该问题,大家也都没有答案,有些人甚至直接说UART4不能用,说心里话我不相信,别个STM那么大的公司,会推出不能用的功能?

在我最无助的时候,我突然想起我们大学老师的一句话,中断出问题,就多看看启动代码的中断向量部分,多去理解。事实证明老师是对的,我花了半天的时间仔细的看了我的启动代码,乖乖启动代码里面居然没有

IMPORT UART4_IRQHandler

IMPORT UART5_IRQHandler

DCD UART4_IRQHandler

DCD UART5_IRQHandler

而串口1、2、3都有。于是我加上了以上代码,串口成功的进入中断,并且接收到了数据。

页面

订阅 RSS - demi的博客