跳转到主要内容

技术

最小化ARM Cortex-M CPU功耗的方法与技巧

<strong>1、理解Thumb-2</strong>
  
首先,让我们从一个看起来并不明显的起点开始讨论节能技术—指令集。所有Cortex-M CPU都使用Thumb-2指令集,它融合了32位ARM指令集和16位Thumb指令集,并且为原始性能和整体代码大小提供了灵活的解决方案。在Cortex-M内核上一个典型的Thumb-2应用程序与完全采用ARM指令完成的相同功能应用程序相比,代码大小减小到25%之内,而执行效率达到90%(当针对运行时间进行优化后)。
  

PCB设计时遇到这些问题要留意!

作为一个电子工程师设计电路是一项必备的硬功夫,但是原理设计再完美,如果电路板设计不合理性能将大打折扣,严重时甚至不能正常工作。根据我的经验,我总结出以下一些PCB设计中应该注意的地方,希望能对您有所启示。

不管用什么软件,PCB设计有个大致的程序,按顺序来会省时省力,因此我将按制作流程来介绍一下。(由于protel界面风格与windows视窗接近,操作习惯也相近,且有强大的仿真功能,使用的人比较多,将以此软件作说明。)

原理图设计是前期准备工作,经常见到初学者为了省事直接就去画PCB板了,这样将得不偿失,对简单的板子,如果熟练流程,不妨可以跳过。但是对于初学者一定要按流程来,这样一方面可以养成良好的习惯,另一方面对复杂的电路也只有这样才能避免出错。

嵌入式技巧:ARM的三种中断调试方法介绍

<strong>嵌入式软件开发流程</strong>

参照嵌入式软件的开发流程。第一步:工程建立和配置。第二步:编辑源文件。第三步:工程编译和链接。第四步:软件的调试。第五步:执行文件的固化。

在整个流程中,用户首先需要建立工程并对工程做初步的配置,包括配置处理器和配置调试设备。编辑工程文件,包括自己编写的汇编和C语言源程序,还有工程编译时需要编写的链接脚本文件,调试过程中需要编写存储区映像文件和命令脚本文件,以及上电复位时的程序运行入口的启动程序文件。

对后四种文件的理解很重要,其作用解释如下。

Keil中常见的几种警告

Keil中常见的几种警告,固然,相对于错误的,警告的程度不及错误的严重性,有时候忽略,会出现意想不到的错误。先看看常见的几种错误,分析出来现的原因。

1、Warning 280:’i’:unreferenced local variable
说明 局部变量 i 在函数中未作任何的存取操作
解决方法 消除函数中 i变量的宣告

2、Warning 206:’Music3’:missing function-prototype
说明 Music3( )函数未作宣告 或未作外部宣告 所以无法给其他函数调用
解决方法 将叙述void Music3(void)写在程序的最前端作宣告 如果是其他文件的函数则要写成 extern void Music3(void),即作外部宣告

使用32位MCU解决RFID智能标签/智能卡系统设计难题

无线射频识别(RFID)将成为第一种与条码技术并存并最终将在低成本识别和个人数据存储领域取代条码技术的新兴技术。 与条码技术相比,它具有多种优势,包括: 1、可以存储更多数据;2、可以在标签中集成一定智能;3、可以在一定距离外扫描;以及 4、可以减少人为干预。而这所有一切皆因MCU的使用让其成为可能。

<strong>EPC 技术对智能标签的影响</strong>

在消费层的部署中,下一代标签系统必须发展一种新的复杂级别,以应对新应用和全球互操作性所带来的复杂性。

电子电路常见故障类型及处理方法

随着科技的飞速发展,各种电子设备在各行各业和人们的日常生活当中得到了广泛的应用,而在其使用过程中受到各种因素的影响,难免会发生故障,影响正常的生产、生活、科研、学习等。因此,加强电子电路常见故障排除方法的研究具有十分重要的现实意义。作为电子电路技术人员,应熟知电子电路常见故障,并准确判断故障发生原因和发生位置,积极寻找排除电子电路故障的策略和方法,从而及时排除故障,使电子电路恢复正常的工作状态。

<strong>一、电子电路常见故障产生原因</strong>

要想准确地判定电子电路故障发生位置,进而采取有效措施进行排除,首先应对故障产生的原因有基本的认识,只有这样才能避免“盲人骑瞎马”,做到有的放矢、“对症治疗”,提高电子电路故障排除的工作效率。

PCB设计中有效减少谐波失真的方法

实际上印刷线路板(PCB)是由电气线性材料构成的,也即其阻抗应是恒定的。那么,PCB为什么会将非线性引入信号内呢?答案在于:相对于电流流过的地方来说,PCB布局是“空间非线性”的。

放大器是从这个电源还是从另外一个电源获取电流,取决于加负载上的信号瞬间极性。电流从电源流出,经过旁路电容,通过放大器进入负载。然后,电流从负载接地端(或PCB输出连接器的屏蔽)回到地平面,经过旁路电容,回到最初提供该电流的电源。

电流流过阻抗最小路径的概念是不正确的。电流在全部不同阻抗路径的多少与其电导率成比例。在一个地平面,常常有不止一个大比例地电流流经的低阻抗路径:一个路径直接连至旁路电容;另一个在达到旁路电容前,对输入电阻形成激励。图1示意了这两个路径。地回流电流才是真正引发问题的原因。

什么是集电极开路输出、开漏输出、推挽输出?

本文主要介绍集电极开路输出、开漏输出、推挽输出的基本概念:

<strong>集电极开路(OC)输出:</strong>

集电极开路输出的结构如图1所示,右边的那个三极管集电极什么都不接,所以叫做集电极开路(左边的三极管为反相之用,使输入为"0"时,输出也为"0")。对于图1,当左端的输入为“0”时,前面的三极管截止(即集电极C跟发射极E之间相当于断开),所以5V电源通过1K电阻加到右边的三极管上,右边的三极管导通(即相当于一个开关闭合);当左端的输入为“1”时,前面的三极管导通,而后面的三极管截止(相当于开关断开)。

十一条金律!搞定DC/DC电源转换方案设计

搞嵌入式的工程师们往往把单片机、ARM、DSP、FPGA搞的得心应手,而一旦进行系统设计,到了给电源系统供电,虽然也能让其精心设计的程序运行起来,但对于新手来说,有时可能效率低下,往往还有供电电流不足或过大引起这样那样的问题,本文十大金律轻松搞定DCDC电源转换电路设计。

<strong>第一条、搞懂DC/DC电源怎么回事</strong>

调整单片机时钟精度的解决方案

本文针对用单片机制作电子钟或要求根据时钟启控的控制系统时,出现的校准了的电子时钟的时间竟然变快或是变慢了的情况而提出的一种解决方案。
  
单片机应用中,常常会遇到这种情况,在用单片机制作电子钟或要求根据时钟启控的控制系统时,会突然发现当初校准了的电子时钟的时间竟然变快或是变慢了。
  
于是,尝试用各种方法来调整它的走时精度,但是最终的效果还是不尽人意,只好每过一段时间手动调整一次。那么,是否可使时钟走时更精确些呢?现探讨如下:
  
<strong>一、误差原因分析</strong>
  

集电极开路、漏极开路、上拉电阻、下拉电阻等接口相关基本概念

本文主要介绍相关接口电路的基本概念:

在电路中常会遇到漏极开路(Open Drain)和集电极开路(Open Collector)两种情形。漏极开路电路概念中提到的“漏”是指 MOSFET的漏极。同理,集电极开路电路中的“集”就是指三极管的集电极。在数字电路中,分别简称OD门和OC门。

<strong>1、集电极开路输出</strong>

典型的集电极开路电路如图所示。电路中右侧的三极管集电极什么都不接,所以叫做集电极开路,左侧的三极管用于反相作用,即左侧输入“0”时左侧三极管截止,VCC通过电阻加到右侧三极管基极,右侧三极管导通,右侧输出端连接到地,输出“0”。

浅谈单片机应用程序架构

在单片机中,有多个任务需要进行,如何处理才能保证单片机的工作效率以及每个任务完成的及时性?本文跟大家分享几个方法:

<strong>1、顺序执行法:</strong>

这种方法,这应用程序比较简单,实时性,并行性要求不太高的情况下是不错的方法,程序设计简单,思路比较清晰。但是当应用程序比较复杂的时候,如果没有一个完整的流程图,恐怕别人很难看懂程序的运行状态,而且随着程序功能的增加,编写应用程序的工程师的大脑也开始混乱。即不利于升级维护,也不利于代码优化。本人写个几个比较复杂一点的应用程序,刚开始就是使用此法,最终虽然能够实现功能,但是自己的思维一直处于混乱状态。导致程序一直不能让自己满意。

ARM三种中断返回的分析与解决

ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题,ARM异常中断返回就是这样一种令人头疼的问题。在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,本文就将对ARM异常中断的集中情况进行总结,并给出了一些解决方法。

如何简单理解单片机项目里的通信协议?

本文我们所述的通信协议只是指建立再物理层之上的通信数据包格式。通常是我们自行约定的具有一定顺序排列的数据集合,且每一部分都有特定的含义,我们把这些数据集合借助物理层通信方式进行发送和解析。

<strong>1、自定义数据通信协议</strong>

这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤、无线等等通信方式。在这个层面上,底层软件提供两个基本的操作函数:发送一个字节数据、接收一个字节数据。所有的数据协议全部建立在这两个操作方法之上。

单片机A/D转换工作原理及优缺点分析方案

随着大规模集成电路的不断发展,很多单片机都有内置A/D模块,因此,单片机的A/D转换可以用内置A/D模块也可以用外置A/D电路完成,现谈谈单片机A/D转换的工作原理及优缺点,并分析提高A/D转换精度的方法。

教你选择最佳的开关式DC/DC转换器

利用电容、电感的储能的特性,通过可控开关(MOSFET等)进行高频开关的动作,将输入的电能储存在电容(感)里,当开关断开时,电能再释放给负载,提供能量就是开关电源。其输出的功率或电压的能力与占空比(由开关导通时间与整个开关的周期的比值)有关。开关电源可以用于升压和降压。

DC/DC转换器是利用MOSFET开关闭合时在电感器中储能,并产生电流。当开关断开时,贮存的电感器能量通过二极管输出给负载。如下图所示。

IAR扩展外部文本编辑器

IAR作为编译器和调试器功能还是不错的,但是他的文本编辑功能确实让人有点不敢恭维了。下面主要介绍怎么在IAR中扩展外部文本UltraEdit。我们分两种情况来说明他的扩展方法。

<strong>一、我们不想在IAR中打开源文件,点击源程序的文件名就可以在UltraEdit打开就行编辑。 </strong>

A.tool>Options>Editor>External Editor

B.选中Use External Editor

C.type:command file

editor:输入UltraEdit.exe的路径

arguments:"$FILE_PATH$"

D.点击确认Ok

ARM汇编语言的程序结构

<strong>1、一个ARM汇编语言源程序的基本结构:</strong>

AREA Init, CODE, READONLY

ENTRY

Start

LDR R0, =0x3FF5000

LDR R1, 0xFF

STR R1, [R0]

LDR R0, =0x3FF5008

LDR R1, 0x01

STR R1, [R0]

... ... ... ... ... ...

END

在 ARM( Thumb)汇编语言程序中,以程序段为单位组织代码。

关于单片机中的FLASH和EEPROM

作者:叶子

FLASH的全称是FLASH EEPROM,但跟常规EEPROM的操作方法不同

FLASH 和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有 FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。

单片机牛人总结的应用程序架构

工作中经过摸索实验,总结出单片机大致应用程序的架构有三种:

1、简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。

2、时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。

3、操作系统,此法应该是应用程序编写的最高境界。

下面就分别谈谈这三种方法的利弊和适应范围等。

<strong>一、顺序执行法</strong>