单片机


随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变,故障,开关操作等引起的电磁振荡会波及很多电气设备。

随着单片机的发展,单片机在家用电器、工业自动化、生产过程控制、智能仪器仪表等领域的应用越来越广泛。然而处于同一电力系统中的各种电气设备通过电或磁的联系彼此紧密相连,相互影响,由于运行方式的改变,故障,开关操作等引起的电磁振荡会波及很多电气设备。这对我们单片机系统的可靠性与安全性构成了极大的威胁。单片机测控系统必须长期稳定、可靠运行,否则将导致控制误差加大,严重时会使系统失灵,甚至造成巨大损失。因此单片机的抗干扰问题已经成为不容忽视的问题。

1、干扰对单片机应用系统的影响

1.1测量数据误差加大

干扰侵入单片机系统测量单元模拟信号的输入通道,叠加在测量信号上,会使数据采集误差加大。特别是检测一些微弱信号,干扰信号甚至淹没测量信号。

1.2 控制系统失灵

单片机输出的控制信号通常依赖于某些条件的状态输入信号和对这些信号的逻辑处理结果。若这些输入的状态信号受到干扰,引入虚假状态信息,将导致输出控制误差加大,甚至控制失灵。

1.3 影响单片机RAM存储器和E2PROM等

在单片机系统中,程序及表格、数据存在程序存储器EPROM或FLASH中,避免了这些数据受干扰破坏。但是,对于片内RAM、外扩RAM、E2PROM 中的数据都有可能受到外界干扰而变化。

1.4 程序运行失常

外界的干扰有时导致机器频繁复位而影响程序的正常运行。若外界干扰导致单片机程序计数器PC值的改变,则破坏了程序的正常运行。由于受干扰后的PC 值是随机的,程序将执行一系列毫无意义的指令,最后进入“死循环”,这将使输出严重混乱或死机。

2、如何提高我们设备的抗干扰能力

2.1 解决来自电源端的干扰

单片机系统中的各个单元都需要使用直 流电源,而直流电源一般是市电电网的交流电经过变压、整流、滤波、稳压后产生的,因此电网上的各种干扰便会引入系统。除此之外,由于交流电源共用,各电子设备之间通过电源也会产生相互干扰,因此抑制电源干扰尤其重要。电源干扰主要有以下几类:

2.1.1电源线中的高频干扰(传导骚扰)

供电电力线相当于一个接受天线,能把雷电、电弧、广播电台等辐射的高频干扰信号通过电源变压器初级耦合到次级,形成对单片机系统的干扰;解决这种干扰,一般通过接口防护;在接口增加滤波器、或者使用隔离电源模块解决。

2.1.2 感性负载产生的瞬变噪音(EFT)

切断大容量感性负载时,能产生很大的电流和电压变化率,从而形成瞬变噪音干扰,成为电磁干扰的主要形式;解决这种干扰,一般通过屏蔽线与双胶线,或在电源接口、信号接口进行滤波处理。这二种方法都需要在系统接地良好的情况下进行,滤波器、接口滤波电路都必须良好的接地,这样才能有效的将干扰泄放。

2.2 模拟信号采样抗干扰技术

单片机应用系统中通常要对一个或多个模拟信号进行采样,并将其通过A/D转换成数字信号进行处理。为了提高测量精度和稳定性,不仅要保证传感器本身的转换精度、传感器供电电源的稳定、测量放大器的稳定、A/D转换基准电压的稳定,而且要防止外部电磁感应噪声的影响,如果处理不当,微弱的有用信号可能完全被无用的噪音信号淹没。在实际工作中,可以采用具有差动输入的测量放大器,采用屏蔽双胶线传输测量信号,或将电压信号改变为电流信号,以及采用阻容滤波等技术。

2.3 数字信号传输通道的抗干扰技术

数字输出信号可作为系统被控设备的驱动信号(如继电器等),数字输入信号可作为设备的响应回答和指令信号(如行程开关、启动按钮等)。数字信号接口部分是外界干扰进入单片机系统的主要通道之一。在工程设计中,对数字信号的输入/输出过程采取的抗干扰措施有:传输线的屏蔽技术,如采用屏蔽线、双胶线等;采用信号隔离措施;合理接地,由于数字信号在电平转换过程中形成公共阻抗干扰,选择合适的接地点可以有效抑制地线噪声。

2.4 硬件监控电路

在单片机系统中,为了保证系统可靠、稳定地运行,增强抗干扰能力,需要配置硬件监控电路,硬件监控电路从功能上包括以下几个方面:

(1)上电复位:保证系统加电时能正确地启动;

(2)掉电复位:当电源失效或电压降到某一电压值以下时,产生复位信号对系统进行复位;

(3)电源监测:供电电压出现异常时,给出报警指示信号或中断请求信号;

(4)硬件看门狗:当处理器遇到干扰或程序运行混乱产生“死锁”时,对系统进行复位。

2.5 PCB电路合理布线

PCB板设计的好坏对抗干扰能力影响很大。因此,在进行PCB 设计时,必须遵守PCB 设计的一般原则,并应符合抗干扰设计的要求。下面着重说明两点:

2.5.1关键器件放置

在器件布置方面与其它逻辑电路一样,应把相互有关的器件尽量放得靠近些,这样可以获得较好的抗噪声效果。时钟发生器、晶振和CPU 的时钟输入端都易产生噪声,要相互靠近些;CPU 复位电路、硬件看门狗电路要尽量靠近CPU相应引脚;易产生噪声的器件、大电流电路等应尽量远离逻辑电路。

2.5.2 D/A、A/D 转换电路地线的正确连接

D/A、 A/D 芯片及采样芯片均提供了数字地和模拟地,分别有相应的管脚。在线路设计中,必须将所有器件的数字地和模拟地分别相连,但数字地与模拟地仅在一点上相连。另外,也可以采用屏蔽保护,屏蔽可用来隔离空间辐射。对噪声特别大的部件(如变频电源、开关电源)可以用金属盒罩起来以减少噪声源对单片机的干扰,对容易受干扰的部分,可以增加屏蔽罩并接地,使干扰信号被短路接地。

2.6 软件抗干扰原理及方法

尽管我们采取了硬件抗干扰措施,但由于干扰信号产生的原因错综复杂,且具有很大的随机性,很难保证系统完全不受干扰。因此,往往在硬件抗干扰措施的基础上,采取软件抗干扰技术加以补充,作为硬件措施的辅助手段。软件抗干扰方法具有简单、灵活方便、耗费低等特点,在系统中被广泛应用。

2.6.1 数字滤波方法

数字滤波是在对模拟信号多次采样的基础上,通过软件算法提取最逼近真值数据的过程。数字滤波的的算法灵活,可选择权限参数,其效果往往是硬件滤波电路无法达到的。

2.6.2 输入信号重复检测方法

输入信号的干扰是叠加在有效电平信号上的一系列离散尖脉冲,作用时间很短。当控制系统存在输入干扰,又不能用硬件加以有效抑制时,可用软件重复检测的方法,达到“去伪存真”的目的,直到连续两次或连续两次以上的采集结果完全一致时方为有效。若信号总是变化不定,在达到最高次数限额时,则可给出报警信号。对于来自各类开关型传感器的信号,如限位开关、行程开关、操作按钮等,都可采用这种输入方式。如果在连续采集数据之间插入延时,则能够对付较宽的干扰。

2.6.3 输出端口数据刷新方法

开关量输出软件抗干扰设计,主要是采取重复输出的方法,这是一种提高输出接口抗干扰性能的有效措施。对于那些用锁存器输出的控制信号,这些措施很有必要。在尽可能短的周期内,将数据重复输出,受干扰影响的设备在还没有来得及响应时,正确的信息又到来,这样就可以及时防止误动作的产生。在程序结构的安排上,可为输出数据建立一个数据缓冲区,在程序的周期性循环体内将数据输出。对于增量控制型设备不能这样重复送数,只有通过检测通道,从设备的反馈信息中判断数据传输的正确与否。在执行重复输出功能时,对于可编程接口芯片,工作方式控制字与输出状态字一并重复设置,使输出模块可靠地工作。

2.6.4 软件拦截技术

当窜入单片机系统的干扰作用在CPU 部位时,后果更加严重,将使系统失灵。最典型的故障是破坏程序计数器PC 的状态,导致程序从一个区域跳转到另一个区域,或者程序在地址空间内“乱飞”,或者陷入“死循环”。使用软件拦截技术可以拦截“乱飞”的程序或者使程序摆脱“死循环”,并将运行程序纳入正轨,转到指定的程序入口。

2.6.5 “软件看门狗”技术

PC 受到干扰而失控,引起程序“乱飞”,也可能使程序陷入“死循环”。当软件拦截技术不能使失控的程序摆脱“死循环”的困境时,通常采用程序监视技术WDT TIMER(WDT),又称“看门狗”技术,使程序脱离“死循环”。WDT 是一种软、硬件结合的抗程序跑飞措施,其硬件主体是一个用于产生定时T 的计数器或单稳,该计数器或单稳基本独立运行,其定时输出端接至CPU 的复位线,而其定时清零则由CPU 控制。在正常情况下,程序启动WDT 后,CPU 周期性的将WDT 清零,这样WDT 的定时溢出就不会发生,如同睡眠一般不起任何作用。在受到干扰的异常情况下,CPU 时序逻辑被破坏,程序执行混乱,不可能周期性的将WDT 清零,这样当WDT 的定时溢出时,其输出使系统复位,避免CPU因一时干扰而陷入瘫痪的状态。

3、结束语

随着单片机系统的广泛应用和技术的进步,电磁干扰问题越来越突出,推广现有的、成熟的抗干扰技术,研究抗干扰的新技术、新方向是单片机应用技术的当务之急。在单片机应用系统设计及应用中,只要充分考虑设备的电磁兼容性,并通过各种技术措施来消除干扰,就可以大大提高设备的稳定性和可靠性。

文章来源:互联网

围观 322


引言

常常看到很多网友在讨论51单片机。有人说,51单片机是入门的基础,应该学习;也有人说,ARM系列32位单片机的各种教程已经普及,51单片机早已过时,自然也就失去了学习的必要性。甚至还有一种极端的声音——是时候向51单片机说再见了……

确实,8位MCU和32位MCU,常常被拿来做比较,尤其是在32位MCU的价格不断降低、8位MCU价格优势不那么明显的今天,越来越多地听到关于8位MCU要被淘汰的言论。难道8位MCU真的要退出历史舞台了么?下面就让我们来听听业界的声音吧!

业界声音

飞思卡尔

飞思卡尔微控制器亚太区业务发展总监曹跃瀧这样分析:8位MCU因其成本优势,在未来也具备很大的增长空间,但是它更适合于单独的产品使用。在物联网应用中,很多场合不仅需要实现机械化向电磁化、智能化的转变,而且还要考虑可靠的连接性、安全性和保护性,所有这些功能的实现都需要MCU的参与,因此32位MCU会是物联网应用的主流。

Atmel

在分析物联网应用时,Atmel公司高级产品经理Bjrnge Brandal表示,物联网应用的范围非常广泛,很难说它的主流是8位还是32位。在有些小的应用中,8位的性能已经足以,而且这些小的应用数量也十分可观。就Atmel而言,8位MCU更多地会关注边缘应用,32位产品则侧重高性能应用,两者相结合,争取在物联网应用市场获得更大的发展空间。

HOLTEK

在触摸按键产品领域,HOLTEK已经积累了多年经验, 2014年在MCU竞争异常激烈的情况下还达到了50%的增长率。与笨重的机械式按键相比,HOLTEK以VS系列开头的8位MCU做成的触摸按键更易被客户接受。其PCB板外围电路非常简单,没有大量的电容、电感的设计,大部分运算转换的功能都已被集成到8位的MCU中。配合MCU的开发工具,应用工程师们可以根据自己产品的需求来调试触摸按键的灵敏度,以及根据自己的喜好进行个性化配置,而且价格上相比传统按键也没有提升。目前,此款触控按键MCU出货量为每季1000KK,其中45%被应用到电磁炉和抽油烟机上。

HOLTEK半导体业务总经理蔡荣宗先生认为,随着智能手机和平板电脑的加速成长,加上触控逐步扩散至汽车电子、医疗、家电等领域,相关的应用会越来越多。尽管触控已经不是新技术,但正处于上升期,仍将有一个黄金成长期。

Microchip

8位MCU的销售额水涨船高,Microchip公司正在增加产能满足这种需求。Microchip的首席运营官Ganesh Moorthy在近期电话分析会议上表示,没有想到近三年发布的8位MCU需求如此旺盛,Microchip将扩大产能以满足市场的需求。

瑞萨

由于物联网应用的发展,32位MCU正在快速增长。智能设备和爆发性增长的应用的连接需求,也为MCU的发展推波助澜。瑞萨电子美国市场副总裁Ritesh Tyagi认为,客户意识到,CPU的内核并没有那么重要,它只不过是通过外设组合来与MCU区分。硬件工程师并不会基于位数和内核数来做决定,他们考虑更多的是8位、16位、32位平台的集成度和代码复用性。由于成本和软件复杂程度低的优势,具有更少引脚和存储的8位MCU在未来仍会吸引市场的注意。总的来说,客户正在尝试在一个平台内将其软件标准化,以降低软件开发成本,并且更容易跨高端平台设计。

笙泉

虽然16位、32位单片机市场的竞争异常激烈,但不容忽视的是,客户关注的不仅是性能,还有成本。笙泉公司产品负责人强调,在实际使用中很多客户都会谈到,8051核完全能够满足产品的需求,性价比也很合适,没有必要采用32位MCU,尤其是在对价格非常敏感的应用领域。

宏晶

宏晶科技是国内专注于8位单片机市场的典范。在众多公司迫不及待地转去争夺32位市场之际,宏晶科技仍坚守在8位市场这片依然肥沃的土地上,并凭借丰富的电子产品开发设计经验以及广泛的国际品牌单片机原厂技术资源,成为新一代增强型8位单片微型计算机标准的制定者。其产品不仅广泛地应用在通信、工业控制领域,而且在信息家电、语音、玩具、礼品等领域也有很好的表现,包括手机、交换机、计价器、微型打印机、电子词典、PDA、掌上电脑、数码相机、U盘等。

上海海尔

作为智能电网和智能家居平台的半导体公司,上海海尔的通用MCU产品线目前还是以8位为主。但是公司在专用领域的多款采用ARM Cortex核的专用MCU均已进入量产。虽然,近年来32位产品在整个MCU市场的份额占比在迅速提升,但并不代表8位MCU会在短期内被完全取代。相反,8位MCU由于其应用简单灵活、安全稳定、成本优势等特点,仍会随着整个MCU市场的增长而不断扩增。上海海尔副总经理潘松表示,MCU是个需要长期积累的产业,产品是否稳定,如何达到功能、性能以及成本的最佳平衡,才是产品带给客户的真正价值所在。8位MCU是上海海尔的基础,也是整个MCU行业的基础。而在32位MCU市场,立足细分市场,找到产品附加价值所在,才是真正发展之路。

编辑观点--8位、32位,各有用武之地!

随着全球经济的复苏,工业和汽车行业的微控制器销售额日益攀升,而且这种上升幅度不仅仅限于32位的产品上。其实,8位内核覆盖的产品,在人们的日常生活中随处可见:电视机的遥控器、银行的点钞机、咖啡机、电磁炉……小小8位内核,仍然蕴含着巨大的能量!

(1) 从教学内容看

在单片机百花齐放的时代,51单片机成为经典教学内容。那个时代没有更高级的单片机可供选择,国内也没有更优秀的教材用于参考,老师的水平也是参差不齐,而51单片机正符合当时的需求,不仅有大量的相关教材和广泛的示例,而且工作的实际项目也是以51单片机为主,于是51单片机理所当然成为当时的学习基础。而如今,ARM成为主流,从51单片机转向ARM也是十分自然的事。

如果说学51单片机是误区,那么从学51单片机转向学ARM只是转向了另一个误区,因为其本质上只是以产品为中心的学习内容的正常变化,操作系统的学习也是如此。真正走出误区,应该是将单片机或嵌入式系统的基本原理抽象化,抽去产品外壳或一般性的教学内容,用《嵌入式系统概论》、《操作系统概论》作为高校教材。

(2) 从技术发展看

MCU起源与演化取决于技术与市场两大因素。Intel于1971年推出全球第一个4位微处理器后,迅速转向8位微处理器,此后形成了通用微处理器(MPU)与嵌入式微控制器(MCU)两大分支。在通用微处理器基础上的通用计算机,迅速从8位、16位过渡到32位、64位,没有人质疑这种变化。而在智能化控制领域,MCU长期处于8位机时代,竭尽全力发展与物理对象相关的控制功能。两大分支截然不同的专业分工,形成了IT产业最佳的发展格局。直至今日,在物联网中MCU与通用计算机仍然扮演着不同的角色。

MCU顾名思义是以物理对象智能化控制为己任。在控制功能的优化中,位数不是主要因素,以至于8位MCU长期处于垄断地位,甚至至今还给4位机留下一席之地。

由于某些涉及高速数据处理的应用需要高速运算能力,16位MCU应运而生。但16位MCU的推出并不成功,因为在8位MCU时代后期,已有具备高速处理能力的DSP,致使16位MCU处于尴尬境地。DSP的诞生在一定程度上缓解了8位MCU速度提升的压力。

ARM体系MCU诞生后,由于产业体系变革,使MCU从百花齐放到一枝独秀,致使价位迅速走低,甚至与8位机处于同一量级。ARM体系32位MCU具有综合的控制功能与高速的数据处理能力,技术上覆盖了8位MCU的传统领域。然而,市场因素是复杂的,在无限大的嵌入式系统市场中,8位MCU、32位MCU、64位MCU,乃至4位MCU,都有各自的用武之地,无所谓谁主沉浮,因为在不同的细分领域并不具有可比性。以51单片机为例,在ARM系列挤占8位单片机空间之际,51单片机己进入“智能芯片”这一巨大市场,几乎主宰了无线收发芯片的市场。

至于64位处理器,它是未来发展的一个趋势。目前,就一般用户而言,64位处理器尚无太大的意义。然而,对厂商来说,64位处理器是必备的竞争技术。虽然64位处理器在移动领域还受局限,但在服务器行业已经大展拳脚。或许,只有当未来手机真的需要更大的RAM时,64位处理器及系统应用才能真正发挥其强大的性能,使用户真正体验到64位处理器的强大优势。

文章来源:单机片与嵌入式系统应用

围观 580


一、单片机内部结构分析

我们来思考一个问题,当我们在编程器中把一条指令写进单片机内部,然后取下单片机,单片机就可以执行这条指令,那么这条指令一定保存在单片机的某个地方,并且这个地方在单片机掉电后依然可以保持这条指令不会丢失,这是个什么地方呢?这个地方就是单片机内部的只读存储器即ROM(READ ONLY MEMORY)。为什么称它为只读存储器呢?刚才我们不是明明把两个数字写进去了吗?原来在89C51中的ROM是一种电可擦除的ROM,称为FLASH ROM,刚才我们是用的编程器,在特殊的条件下由外部设备对ROM进行写的操作,在单片机正常工作条件下,只能从那面读,不能把数据写进去,所以我们还是把它称为ROM。

二、几个基本概念

1、数的本质和物理现象

我们知道,计算机可以进行数学运算,这可令我们非常的难以理解,计算机吗,我们虽不了解它的组成,但它总只是一些电子元器件,怎么可以进行数学运算呢?我们做数学题如37+45是这样做的,先在纸上写37,然后在下面写45,然后大脑运算,最后写出结果,运算的原材料:37、45和结果:82都是写在纸上的,计算机中又是放在什么地方呢?为了解决这个问题,先让我们做一个实验:这里有一盏灯,我们知道灯要么亮,要么不亮,就有两种状态,我们可以用’0’和’1’来代替这两种状态,规定亮为’1’,不亮为’0’。现在放上两盏灯,一共有几种状态呢?我们列表来看一下:

请大家自已写上3盏灯的情况000 001 010 011 100 101 110 111我们来看,这个000,001,101 不就是我们学过的的二进制数吗?本来,灯的亮和灭只是一种物理现象,可当我们把它们按一定的顺序排更好后,灯的亮和灭就代表了数字了。让我们再抽象一步,灯为什么会亮呢?看电路1,是因为输出电路输出高电平,给灯通了电。因此,灯亮和灭就可以用电路的输出是高电平还是低电平来替代了。这样,数字就和电平的高、低联系上了。(请想一下,我们还看到过什么样的类似的例子呢?(海军之)灯语、旗语,电报,甚至红、绿灯)

2、位的含义

通过上面的实验我们已经知道:一盏灯亮或者说一根线的电平的高低,可以代表两种状态:0和1。实际上这就是一个二进制位,因此我们就把一根线称之为一“位”,用BIT表示。

3、字节的含义

一根线可以表于0和1,两根线可以表达00,01,10,11四种状态,也就是可以表于0到3,而三根可以表达0-7,计算机中通常用8根线放在一起,同时计数,就可以表过到0-255一共256种状态。这8根线或者8位就称之为一个字节(BYTE)。

三、存储器的工作原理

1、存储器构造

存储器就是用来存放数据的地方。它是利用电平的高低来存放数据的,也就是说,它存放的实际上是电平的高、低,而不是我们所习惯认为的1234这样的数字,这样,我们的一个谜团就解开了,计算机也没什么神秘的吗。


如上图左所示:一个存储器就象一个个的小抽屉,一个小抽屉里有八个小格子,每个小格子就是用来存放“电荷”的,电荷通过与它相连的电线传进来或释放掉,至于电荷在小格子里是怎样存的,就不用我们操心了,你可以把电线想象成水管,小格子里的电荷就象是水,那就好理解了。存储器中的每个小抽屉就是一个放数据的地方,我们称之为一个“单元”。

有了这么一个构造,我们就可以开始存放数据了,想要放进一个数据12,也就是00001100,我们只要把第二号和第三号小格子里存满电荷,而其它小格子里的电荷给放掉就行了(看上图右)。可是问题出来了,看上图右,一个存储器有好多单元,线是并联的,在放入电荷的时候,会将电荷放入所有的单元中,而释放电荷的时候,会把每个单元中的电荷都放掉,这样的话,不管存储器有多少个单元,都只能放同一个数,这当然不是我们所希望的,因此,要在结构上稍作变化,看上图右,在每个单元上有个控制线,我想要把数据放进哪个单元,就给一个信号这个单元的控制线,这个控制线就把开关打开,这样电荷就可以自由流动了,而其它单元控制线上没有信号,所以开关不打开,不会受到影响,这样,只要控制不同单元的控制线,就可以向各单元写入不同的数据了,同样,如果要某个单元中取数据,也只要打开相应的控制开关就行了。

2、存储器译码

那么,我们怎样来控制各个单元的控制线呢?这个还不简单,把每个单元的控制线都引到集成电路的外面不就行了吗?事情可没那么简单,一片27512存储器中有65536个单元,把每根线都引出来,这个集成电路就得有6万多个脚?不行,怎么办?要想法减少线的数量。我们有一种方法称这为译码,简单介绍一下:一根线可以代表2种状态,2根线可以代表4种状态,3根线可以代表几种,256种状态又需要几根线代表?8种,8根线,所以65536种状态我们只需要16根线就可以代表了。

3、存储器的选片及总线的概念

至此,译码的问题解决了,让我们再来关注另外一个问题。送入每个单元的八根线是用从什么地方来的呢?它就是从计算机上接过来的,一般地,这八根线除了接一个存储器之外,还要接其它的器件,如图4所示。这样问题就出来了,这八根线既然不是存储器和计算机之间专用的,如果总是将某个单元接在这八根线上,就不好了,比如这个存储器单元中的数值是0FFH另一个存储器的单元是00H,那么这根线到底是处于高电平,还是低电平?岂非要打架看谁历害了?所以我们要让它们分离。办法当然很简单,当外面的线接到集成电路的引脚进来后,不直接接到各单元去,中间再加一组开关就行了。平时我们让开关打开着,如果确实是要向这个存储器中写入数据,或要从存储器中读出数据,再让开关接通就行了。这组开关由三根引线选择:读控制端、写控制端和片选端。要将数据写入片中,先选中该片,然后发出写信号,开关就合上了,并将传过来的数据(电荷)写入片中。如果要读,先选中该片,然后发出读信号,开关合上,数据就被送出去了。读和写信号同时还接入到另一个存储器,但是由于片选端不同,所以虽有读或写信号,但没有片选信号,所以另一个存储器不会“误会”而开门,造成冲突。那么会不同时选中两片芯片呢?只要是设计好的系统就不会,因为它是由计算控制的,而不是我们人来控制的,如果真的出现同时出现选中两片的情况,那就是电路出了故障了,这不在我们的讨论之列。

从上面的介绍中我们已经看到,用来传递数据的八根线并不是专用的,而是很多器件大家共用的,所以我们称之为数据总线,总线英文名为BUS,总即公交车道,谁也可以走。而十六根地址线也是连在一起的,称之为地址总线。

围观 313


硬件设备由 MCU、MCU 上的 OS、各种传感器、WIFI/蓝牙/3G/4G 以及其他联网通信模块和应用程序构成。 其中硬件设备有两种接入方式, 第一种就是通过联网通信模块接入网关, 通过网关完成数据的发送与接收, 最终将数据转发到云平台或者手机端。 第二种就是硬件设备直接与手机实现本地连接, 进行数据的交换包括配网等操作。 因为云端平台数据传输采用JSON协议,因此,硬件堆JSON的解析非常重要。传统的C JSON解析非常庞大,在微处理器中,这无疑是一个巨大的问题。因此,编写了一个非常简单的JSON你判定,解析,与键值校验的三个纯C语言函数。占用空间非常小。具体的代码如下文所示:

硬件设备由 MCU、MCU 上的 OS、各种传感器、WIFI/蓝牙/3G/4G 以及其他联网通信模块和应用程序构成。 其中硬件设备有两种接入方式, 第一种就是通过联网通信模块接入网关, 通过网关完成数据的发送与接收, 最终将数据转发到云平台或者手机端。 第二种就是硬件设备直接与手机实现本地连接, 进行数据的交换包括配网等操作。

因为云端平台数据传输采用JSON协议,因此,硬件堆JSON的解析非常重要。传统的C JSON解析非常庞大,在微处理器中,这无疑是一个巨大的问题。因此,编写了一个非常简单的JSON你判定,解析,与键值校验的三个纯C语言函数。占用空间非常小。具体的代码如下文所示:

/***************************************

name: JSON C函数库 C文件

***************************************/

#include "include.h"

/***************************************

name: 函数声明

input:

output:

description:

***************************************/

char json_check(char *str); //JSON 校验函数

char json_get_value(char *json,char *json_key , char *json_value); //JSON获取键值

char json_check_value(char *str1, char *str2); //JSON 键值对比函数

/***************************************

name: JSON 校验函数

input: 字符串

output: 合法JAON 返回1 不合法JSON 返回0

description:

***************************************/

char json_check(char *str)

{

char str_length; //定义字符长度变量

str_length = strlen(str); //计算字符长度

if(str[0] == '{' && str[str_length-1] == '}') //通过首尾大括号判断是否为JSON

{

return 1; //如果字符串为合法JSON 返回1

}

else

{

return 0; //如果字符串为合法JSON 返回0

}

}

/***************************************

name: JSON 获取键值函数

input: JSON字符串 要获取的键名 获取键值的字符串

output: 如果获取成功返回1 获取失败返回0

description:

***************************************/

char json_get_value(char *json,char *json_key , char *json_value)

{

char *json_key_start; //定义键名开始的位置

char *json_key_end; //定义键名结束的位置

char json_key_length; //定义键名长度

char *json_value_start; //定义键值开始的位置

char *json_value_end; //定义键值结束的位置

char json_value_length; //定义键值长度

json_key_start = strstr(json,json_key); //获取键名开始的位置

json_key_length = strlen(json_key); //获取键名的长度

json_key_end = json_key_start + json_key_length; //获取键名结束的位置

if(json_key_start != 0 && *(json_key_start - 1) == '\"' && *(json_key_end) == '\"' && *(json_key_end + 1) == ':' && *(json_key_end + 2) == '\"' )

{

json_value_start = json_key_end + 3; //获取键值开始的位置

json_value_end = strstr(json_value_start,"\""); //获取键值结束的位置

json_value_length = json_value_end - json_value_start; //获取键值的长度

strncpy(json_value,json_value_start,json_value_length); //将键值存入指针数组

json_value[json_value_length] = '\0'; //指针最后一位补字符串结束符 \0

return 1; //成功获取键值 返回1

}

else

{

json_value[0] = '\0';

return 0; //失败获取键值 返回0

}

}

/***************************************

name: JSON 键值对比函数

input: JSON 键值 要匹配的字符

output: 如果匹配成功返回1 失败返回0

description:

***************************************/

char json_check_value(char *str1, char *str2)

{

if(strcmp(str1,str2) == 0)

{

return 1; //匹配成功返回1

}

else

{

return 0;

//匹配成功返回0

}

}

© 著作权归作者所有

作者:VIROR

文章来源:开源中国社区

围观 3212


说单片机与通用型中央处理单元芯片不同,是因为前者一般很容易配合最小型的外部支持芯片制成工作计算机。这样就可以很容易的把单片机系统植入装置内部来控制装置了。近年来为了在指令和数据上使用不同的字宽,并提高处理器流水线速度,哈佛结构在微控制器(Microcontrollers)和数字信号处理器(DigitalSignalProcessor,DSP)也逐渐得到了广泛的应用。
  
传统的微处理器是不允许这么做的。它要完成单片机的工作,就必须连接一些其他芯片。比如说,因为芯片上没有数据存储器,就必须要添加一些RAM的存储芯片,虽然所添加存储器的容量很灵活,但是至少还是要添加。另外还需要添加很多连线来传递芯片之间的数据。与以上的情况相比,单片机的工作则相对独立,一个典型的微控制器只需要一个时钟发生器和很少的RAM和ROM(或者EPROM,E2PROM)就可以在软件和晶振下工作了。同时,微控制器具有丰富的输入输出设备,例如模拟数字转换器(Analog-to-DigitalConverter,ADC),定时器,串口,以及其他串行通讯接口,比如I2C,SPI(串行周边接口),CAN(控制器局域网)等。通常,这些集成在内部的设备可以通过特殊的指令来操作。
  
单片机时钟频率通常较同时代的计算机芯片低,但它价格低廉,能够提供充足的程序存储器、丰富的片上接口。某些架构的单片机生产厂商众多,例如8051系列、Z80系列。一些现代的微控制器支持一些内建的高级编程语言,比如BASIC语言、C语言、C++等。
  
单片机的位元数
  
根据总线或资料暂存器的宽度,单片机又分为4位元、8位元、16位元和32位元单片机。4位单片机多用于冰箱、洗衣机、微波炉等家电控制中;8位、16位单片机主要用于一般的控制领域,一般不使用操作系统;32位用于网络操作、多媒体处理等复杂处理的场合,一般要使用嵌入式操作系统。
  
常见的单片机
  
微芯公司的PIC系列出货量居于业界领导者地位;Atmel的51系列及AVR系列种类众多,受支持面广;德州仪器的MSP430系列以低功耗闻名,常用于医疗电子产品及仪器仪表中;瑞萨单片机在日本使用广泛。
  
单片机的开发
  
单片机的软件开发中,以往多使用汇编语言,如今越来越多的使用C语言,又或者使用BASIC语言等更适合初学者的语言,部分集成开发环境支持C++。单片机的软件测试需要使用单片机开发器或模拟器。
  
随着技术的发展,2000年后已经有很多单片机自带了ISP(在线编程设计)或支持IAP,彻底地改变了传统的开发模式,使得开发单片机系统时不会损坏芯片的引脚,加速了产品的上市并降低了研发成本,缩短了从设计、制造到现场调试的时间,简化了生产流程,大大提高了工作效率。这类单片机包括AT89S系列单片机、AVR系列单片机等。
  
硬件
  
开发板可以进一步简化程序的开发和烧制过程。开发板可能包含实际芯片或是仿真器。通过配套的下载线连接电脑与开发板,在电脑上编写程序下载到开发板。批量生产会用到编程器。
  
软件开发环境
  
一些知名的微控制器开发环境有:
  
微芯公司的MPLABIDE可用于该公司全系列微控制器的开发与除错,除支持该公司的ASM组译器C语言编译器外,也支援许多第三方的编译器。
 
ARM公司的μVision集成开发环境(原为Keil公司产品,2005年该公司已由ARM购并),包含组译器与C编译器,可用于51单片机及ARM开发。
  
PROTEUS
  
Proteus软件是初学者入门的首选软件,它是LabcenterElectronics公司的一款商业版电路设计与仿真软件。内包括ISIS、ARES等软件模块。ARES模块主要用来完成PCB的设计,ISIS模块用来完成电路原理图的布图与仿真。
  
Proteus的软件仿真基于VSM技术,它与其他软件最大的不同也是最大的优势就在于能仿真大量的单片机芯片,比如MCS-51系列、PIC系列等等,甚至ARM处理器,以及单片机外围电路,比如键盘、LED、LCD等等。该软件还附带了一些案例和丰富的帮助文件。

文章来源: ofweek

围观 454


一个单片机应用系统的硬件电路设计包含两部分内容:一是系统扩展,即单片机内部的功能单元,如ROM、RAM、I/O、定时器/计数器、中断系统等不能满足应用系统的要求时,必须在片外进行扩展,选择适当的芯片,设计相应的电路。二是系统的配置,即按照系统功能要求配置外围设备,如键盘、显示器、打印机、A/D、D/A转换器等,要设计合适的接口电路。

系统的扩展和配置应遵循以下原则:

1、尽可能选择典型电路,并符合单片机常规用法。为硬件系统的标准化、模块化打下良好的基础。

2、系统扩展与外围设备的配置水平应充分满足应用系统的功能要求,并留有适当余地,以便进行二次开发。

3、硬件结构应结合应用软件方案一并考虑。硬件结构与软件方案会产生相互影响,考虑原则是:软件能实现的功能尽可能由软件实殃,以简化硬件结构。但必须注意,由软件实现的硬件功能,一般响应时间比硬件实现长,且占用CPU时间。

4、系统中的相关器件要尽可能做到性能匹配。如选用CMOS芯片单片机构成低功耗系统时,系统中所有芯片都应尽可能选择低功耗产品。

5、可靠性及抗干扰设计是硬件设计必不可少的一部分,它包括芯片、器件选择、去耦滤波、印刷电路板布线、通道隔离等。

6、单片机外围电路较多时,必须考虑其驱动能力。驱动能力不足时,系统工作不可靠,可通过增设线驱动器增强驱动能力或减少芯片功耗来降低总线负载。

7、尽量朝“单片”方向设计硬件系统。系统器件越多,器件之间相互干扰也越强,功耗也增大,也不可避免地降低了系统的稳定性。随着单片机片内集成的功能越来越强,真正的片上系统SoC已经可以实现,如ST公司新近推出的μPSD32××系列产品在一块芯片上集成了80C32核、大容量FLASH存储器、SRAM、A/D、I/O、两个串口、看门狗、上电复位电路等等。

单片机系统硬件抗干扰常用方法实践

影响单片机系统可靠安全运行的主要因素主要来自系统内部和外部的各种电气干扰,并受系统结构设计、元器件选择、安装、制造工艺影响。这些都构成单片机系统的干扰因素,常会导致单片机系统运行失常,轻则影响产品质量和产量,重则会导致事故,造成重大经济损失。

形成干扰的基本要素有三个:

(1)干扰源。 指产生干扰的元件、设备或信号,用数学语言描述如下:du/dt, di/dt大的地方就是干扰源。如:雷电、继电器、可控硅、电机、高频时钟等都可能成为干扰源。

(2)传播路径。 指干扰从干扰源传播到敏感器件的通路或媒介。典型的干扰传播路径是通过导线的传导和空间的辐射。

(3)敏感器件。 指容易被干扰的对象。如:A/D、D/A变换器,单片机,数字IC, 弱信号放大器等。

干扰的分类

1、干扰的分类

干扰的分类有好多种,通常可以按照噪声产生的原因、传导方式、波形特性等等进行不同的分类。

按产生的原因分:可分为放电噪声音、高频振荡噪声、浪涌噪声。

按传导方式分:可分为共模噪声和串模噪声。

按波形分:可分为持续正弦波、脉冲电压、脉冲序列等等。

2、 干扰的耦合方式

干扰源产生的干扰信号是通过一定的耦合通道才对测控系统产生作用的。因此,我有必要看看干扰源和被干扰对象之间的传递方式。干扰的耦合方式,无非是通过导线、空间、公共线等等,细分下来,主要有以下几种:

(1)直接耦合:

这是最直接的方式,也是系统中存在最普遍的一种方式。比如干扰信号通过电源线侵入系统。对于这种形式,最有效的方法就是加入去耦电路。从而很好的抑制。

(2)公共阻抗耦合:

这也是常见的耦合方式,这种形式常常发生在两个电路电流有共同通路的情况。为了防止这种耦合,通常在电路设计上就要考虑。使干扰源和被干扰对象间没有公共阻抗。

(3)电容耦合:

又称电场耦合或静电耦合 。是由于分布电容的存在而产生的耦合。

(4)电磁感应耦合:

又称磁场耦合。是由于分布电磁感应而产生的耦合。

(5)漏电耦合:

这种耦合是纯电阻性的,在绝缘不好时就会发生。

常用硬件抗干扰技术

针对形成干扰的三要素,采取的抗干扰主要有以下手段。

1、 抑制干扰源

抑制干扰源就是尽可能的减小干扰源的du/dt,di/dt。这是抗干扰设计中最优先考虑和最重要的原则,常常会起到事半功倍的效果。 减小干扰源的du/dt主要是通过在干扰源两端并联电容来实现。减小干扰源的di/dt则是在干扰源回路串联电感或电阻以及增加续流二极管来实现。
抑制干扰源的常用措施如下:

(1)继电器线圈增加续流二极管,消除断开线圈时产生的反电动势干扰。仅加续流二极管会使继电器的断开时间滞后,增加稳压二极管后继电器在单位时间内可动作更多的次数。

(2)在继电器接点两端并接火花抑制电路(一般是RC串联电路,电阻一般选几K 到几十K,电容选0.01uF),减小电火花影响。

(3)给电机加滤波电路,注意电容、电感引线要尽量短。

(4)电路板上每个IC要并接一个0.01μF~0.1μF高频电容,以减小IC对电源的影响。注意高频电容的布线,连线应靠近电源端并尽量粗短,否则,等于增大了电 容的等效串联电阻,会影响滤波效果。

(5)布线时避免90度折线,减少高频噪声发射。

(6)可控硅两端并接RC抑制电路,减小可控硅产生的噪声(这个噪声严重时可能会把可控硅击穿的)。

2 、切断干扰传播路径

按干扰的传播路径可分为传导干扰和辐射干扰两类。

所谓传导干扰是指通过导线传播到敏感器件的干扰。高频干扰噪声和有用信号的频带不同,可以通过在导线上增加滤波器的方法切断高频干扰噪声的传播,有时也可加隔离光耦来解决。电源噪声的危害最大,要特别注意处理。

所谓辐射干扰是指通过空间辐射传播到敏感器件的干扰。一般的解决方法是增加干扰源与敏感器件的距,用地线把它们隔离和在敏感器件上加蔽罩。

切断干扰传播路径的常用措施如下:

(1)充分考虑电源对单片机的影响。电源做得好,整个电路的抗干扰就 解决了一大半。

许多单片机对电源噪声很敏感,要给单片机电源加滤波电路或稳压器,以减小电源噪声对单片机的干扰。比如,可以利用磁珠和电容组成π形滤波电路,当然条件要求不高时也可用100Ω电阻代替磁珠。

(2)如果单片机的I/O口用来控制电机等噪声器件,在I/O口与噪声源之间应加隔离(增加π形滤波电路)。

(3)注意晶振布线。晶振与单片机引脚尽量靠近,用地线把时钟区隔离起来,晶振外壳接地并固定。

(4)电路板合理分区,如强、弱信号,数字、模拟信号。尽可能把干扰源(如电机、继电器)与敏感元件(如单片机)远离。

(5)用地线把数字区与模拟区隔离。数字地与模拟地要分离,最后在一点接于电源地。A/D、D/A芯片布线也以此为原则。

(6)单片机和大功率器件的地线要单独接地,以减小相互干扰。 大功率器件尽可能放在电路板边缘。

(7)在单片机I/O口、电源线、电路板连接线等关键地方使用抗干扰元件如磁珠、磁环、电源滤波器、屏蔽罩,可显着提高电路的抗干扰性能。

3 、提高敏感器件的抗干扰性能

提高敏感器件的抗干扰性能是指从敏感器件这边考虑尽量减少对干扰噪声 的拾取,以及从不正常状态尽快恢复的方法。

提高敏感器件抗干扰性能的常用措施如下:

(1)布线时尽量减少回路环的面积,以降低感应噪声。

(2)布线时,电源线和地线要尽量粗。除减小压降外,更重要的是降低耦 合噪声。

(3)对于单片机闲置的I/O口,不要悬空,要接地或接电源。其它IC的闲置端在不改变系统逻辑的情况下接地或接电源。

(4)对单片机使用电源监控及看门狗电路,如:IMP809,IMP706,IMP813,X5043,X5045等,可大幅度提高整个电路的抗干扰性能。

(5)在速度能满足要求的前提下,尽量降低单片机的晶振和选用低速数字电路。 (6)IC器件尽量直接焊在电路板上,少用IC座。

4 、其它常用抗干扰措施

交流端用电感电容滤波:去掉高频低频干扰脉冲。

变压器双隔离措施:变压器初级输入端串接电容,初、次级线圈间屏蔽层与初级间电容中心接点接大地,次级外屏蔽层接印制板地,这是硬件抗干扰的关键手段。次级加低通滤波器:吸收变压器产生的浪涌电压。

采用集成式直流稳压电源:因为有过流、过压、过热等保护。

I/O口采用光电、磁电、继电器隔离,同时去掉公共地。

通讯线用双绞线:排除平行互感。

防雷电用光纤隔离最为有效。

A/D转换用隔离放大器或采用现场转换:减少误差。

外壳接大地:解决人身安全及防外界电磁场干扰。

加复位电压检测电路。防止复位不充份,CPU就工作,尤其有EEPROM的器件,复位不充份会改变EEPROM的内容。

印制板工艺抗干扰:

①电源线加粗,合理走线、接地,三总线分开以减少互感振荡。

②CPU、RAM、ROM等主芯片,VCC和GND之间接电解电容及瓷片电容,去掉高、低频干扰信号。

③独立系统结构,减少接插件与连线,提高可靠性,减少故障率。

④集成块与插座接触可靠,用双簧插座,最好集成块直接焊在印制板上,防止器件接触不良故障。

⑤有条件采用四层以上印制板,中间两层为电源及地

围观 570

页面

订阅 RSS - 单片机