10月28日,第五届中国创新创业大赛电子信息行业国赛迎来了最后一场总决赛。全国280余个优秀电子信息项目以最充沛的竞技状态站上了国赛战场。最终12强企业和6强团队强势出炉,以各小组第一的成绩在今天争夺电子信息的最高荣誉。
ARM单片机是大多数新手选择的入门切入点,但由于知识的不足,在设计过程中新手们经常会遇到这样或那样的问题,ARM异常中断返回就是这样一种令人头疼的问题。在ARM的使用问题中异常中断返回是新手们较为苦恼的问题,本文就将对ARM异常中断的集中情况进行总结,并给出了一些解决方法。
本文我们所述的通信协议只是指建立再物理层之上的通信数据包格式。通常是我们自行约定的具有一定顺序排列的数据集合,且每一部分都有特定的含义,我们把这些数据集合借助物理层通信方式进行发送和解析。
<strong>1、自定义数据通信协议</strong>
这里所说的数据协议是建立在物理层之上的通信数据包格式。所谓通信的物理层就是指我们通常所用到的RS232、RS485、红外、光纤、无线等等通信方式。在这个层面上,底层软件提供两个基本的操作函数:发送一个字节数据、接收一个字节数据。所有的数据协议全部建立在这两个操作方法之上。
随着大规模集成电路的不断发展,很多单片机都有内置A/D模块,因此,单片机的A/D转换可以用内置A/D模块也可以用外置A/D电路完成,现谈谈单片机A/D转换的工作原理及优缺点,并分析提高A/D转换精度的方法。
利用电容、电感的储能的特性,通过可控开关(MOSFET等)进行高频开关的动作,将输入的电能储存在电容(感)里,当开关断开时,电能再释放给负载,提供能量就是开关电源。其输出的功率或电压的能力与占空比(由开关导通时间与整个开关的周期的比值)有关。开关电源可以用于升压和降压。
DC/DC转换器是利用MOSFET开关闭合时在电感器中储能,并产生电流。当开关断开时,贮存的电感器能量通过二极管输出给负载。如下图所示。
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
半导体行业最近几年的“骚动”不断,国内对于半导体行业的投入也在持续扩大,但是想要比肩西方半导体企业,也不是一件容易的事情。
中国半导体业连续出现爆炸性的新闻,行业领头羊中芯国际连续公布大幅的投资计划,如上海的12英寸,14纳米月产能70,000片生产线动工,投资达675亿元,以及天津的8英寸生产线,月产能由45,000片扩大至150,000片,据认为将是全球单体最大的8英寸生产线等。
从中国千亿大基金扶持计划、到“中国制造2025”,政策利好为中国半导体产业带来了前所未有的发展机遇。无疑,抓住这个时间窗口才能重新定义全球市场格局。10月26日,由华夏幸福主办的“2016产业中国年会”在京举行。大会专设集成电路分论坛,在关照全球集成电路产业发展趋势的背景下,探讨本土集成电路产业发展路径。
<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)汇编语言程序中,以程序段为单位组织代码。
摘要:A/D转换是指将模拟信号转换为数字信号,这在信号处理、信号传输等领域具 有重要的意义。常用的A/D转换电路有专用A/D集成电路、单片机ADC模块,前者精度高、电路复杂,后者成本低、设计简单。基于单片机的A/D转换电路在实际电路中获得了广泛的应用,论文对这一电路结构进行了详细的研究。
<strong>引言 </strong>
在设计一个控制系统时,首先要对系统进行分析明确设计任务和设计要求,作为系统方案设计的依据。合理选着系统的构成方案,合理规划分硬件和软件的功能,以有利于兼顾性能、价格比和缩短开发周期。硬件设计应以在充分满足系统功能的前提下最简单为原则,在系统的运用中,单片机被广泛运用。A/D转换的方法是由传输信号与接收信号图解方法,借助这种方法可以在已知发,接收点和存储的条件下,制造出各式各样的电器产品。
作者:叶子
FLASH的全称是FLASH EEPROM,但跟常规EEPROM的操作方法不同
FLASH 和EEPROM的最大区别是FLASH按扇区操作,EEPROM则按字节操作,二者寻址方法不同,存储单元的结构也不同,FLASH的电路结构较简单,同样容量占芯片面积较小,成本自然比EEPROM低,因而适合用作程序存储器,EEPROM则更多的用作非易失的数据存储器。当然用FLASH做数据存储器也行,但操作比EEPROM麻烦的多,所以更“人性化”的MCU设计会集成FLASH和EEPROM两种非易失性存储器,而廉价型设计往往只有 FLASH,早期可电擦写型MCU则都是EEPRM结构,现在已基本上停产了。
文章具体介绍了关于ARM的22个常用概念。
1、ARM中一些常见英文缩写解释
MSB:最高有效位;
LSB:最低有效位;
AHB:先迚的高性能总线;
VPB:连接片内外设功能的VLSI外设总线;
EMC:外部存储器控制器;
MAM:存储器加速模块;
VIC:向量中断控制器;
SPI:全双工串行接口;
······
更多详情请点击下载附件进行查看
工作中经过摸索实验,总结出单片机大致应用程序的架构有三种:
1、简单的前后台顺序执行程序,这类写法是大多数人使用的方法,不需用思考程序的具体架构,直接通过执行顺序编写应用程序即可。
2、时间片轮询法,此方法是介于顺序执行与操作系统之间的一种方法。
3、操作系统,此法应该是应用程序编写的最高境界。
下面就分别谈谈这三种方法的利弊和适应范围等。
<strong>一、顺序执行法</strong>
电子产品的低功耗问题经常让产品设计者头痛而又不得不面对。以单片机(MCU)为核心的系统,其功耗主要由单片机功耗和单片机外围电路功耗组成。要降低单片机系统的功耗,需要从硬件和软件两方面入手。
<strong>硬件设计考虑因素</strong>
要满足单片机系统的低功耗要求,选用具有低功耗特性的单片机可以很容易实现。因为具有低功耗特性的单片机可以大大降低系统功耗,这可以从单片机的供电电压、内部结构、系统时钟和低功耗模式等几方面来考察一款单片机的低功耗特性。一般来讲,用户在选择技术供应商和产品过程中,需要对下面的一些重要硬件参数进行更加深入的考量:
<strong>选择简单的CPU内核</strong>
先来谈静电放电(ESD: Electrostatic Discharge)是什么?这应该是造成所有电子元器件或集成电路系统造成过度电应力破坏的主要元凶。因为静电通常瞬间电压非常高(>几千伏),所以这种损伤是毁灭性和永久性的,会造成电路直接烧毁。所以预防静电损伤是所有IC设计和制造的头号难题。
静电,通常都是人为产生的,如生产、组装、测试、存放、搬运等过程中都有可能使得静电累积在人体、仪器或设备中,甚至元器件本身也会累积静电,当人们在不知情的情况下使这些带电的物体接触就会形成放电路径,瞬间使得电子元件或系统遭到静电放电的损坏(这就是为什么以前修电脑都必须要配戴静电环托在工作桌上,防止人体的静电损伤芯片),如同云层中储存的电荷瞬间击穿云层产生剧烈的闪电,会把大地劈开一样,而且通常都是在雨天来临之际,因为空气湿度大易形成导电通到。
大家都知道做PCB板就是把设计好的原理图变成一块实实在在的PCB电路板,请别小看这一过程,有很多原理上行得通的东西在工程中却难以实现,或是别人能实现的东西另一些人却实现不了,因此说做一块PCB板不难,但要做好一块PCB板却不是一件容易的事情。
微电子领域的两大难点在于高频信号和微弱信号的处理,在这方面PCB制作水平就显得尤其重要,同样的原理设计,同样的元器件,不同的人制作出来的PCB就具有不同的结果,那么如何才能做出一块好的PCB板呢?根据我们以往的经验,想就以下几方面谈谈自己的看法:
<strong>1、要明确设计目标</strong>
在ARM处理器汇编语言程序设计里,有一些特殊的指令助记符。这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊的指令助记符为伪指令,它们所完成的操作称为伪操作。
伪指令在源程序中的作用是为完成汇编程序做各种准备工作的,这些伪指令仅在汇编过程中起作用,一旦汇编结束,伪指令的使命就完成了。在ARM处理器的汇编程序中,大体有如下几种伪指令:符号定义伪指令、数据定义伪指令、汇编控制伪指令、宏指令及其他伪指令。
伪操作符可以分为以下几类。
<strong>1)数据定义伪操作符
数据定义伪操作符主要包括LTORG、MAP、DCB、FIELD、SPACE、DCQ、DCW等,主要用于数据表定义、文字池定义、数据空间分配等。常用的有DCB/DCQ/DCW分配一段字节/双字/字内存单元,并且将它们初始化。
前几天刚好同事问起在Cortex-M上延时不准的问题,在网上也没找到比较满意的答案,干脆自己对这个问题做一个总结。
根据我们的经验,最容易想到的大概通过计算指令周期来解决。该思路在Cortex上并不是很适用:一方面MCU从Flash取指是有延时的,另一方面Cortex的指令集不是固定周期的,特别从M3加入分支预测后,分支指令在Cortex-M不同型号上的结果都不相同。因此除了指令周期外,我们需要考虑的东西还有很多,才能得到正确的结果。
<strong>不带分支预测器的情况</strong>
仍然先从不带分支预测器的Cortex-M0开始,通过计算指令周期延时的实现代码如下:
一片外围芯片具有一定的地址空间。例如11根地址线的芯片,其地址空间为2KB(2048)。这2KB地址空间在微处理器的内存空间(如8位微处理器有16根地址线,能寻址64KB)中被分配在什么位置,由高位地址线A11~A15产生的片选信号来分别确定。当外围芯片多于一片时,为了避免误操作,必须利用片选信号来分别确定各芯片的地址分配。产生片选信号的方式不同,存储器的地址分配也就不同。片选方式有线选、全译码和局部译码。
线选方式
<strong>第一层,我来了</strong>
处在这一层的典型是可以用C语言写简单的逻辑控制,如闪烁LED,简单数码管显示,简单外围模块驱动实验。一般对单片机感兴趣,经常动手实践的人,半年左右,可以练到此地步(针对没有接触过单片机的人而言)。此层最典型的示例就是,扫描按键时候,检测按下------延时20ms --再次检测按下----返回键值或等待释放。如果你是这样做的,或者正在这样做,毫无悬念,应该处于这个级别。对于95%的电类专业学生来说,毕业时候,远远低于这个级别,剩下的5%则依次分布在各层上。这也是为什么学单片机的人成千上万,而会用的人寥寥无几的原因。
<strong>第二层 真打呀</strong>





