博客
MSP430系列单片机的各个模块都可以独立运行,如定时器、输入/输出端口、A/D转换、看门狗、液晶显示器等都可以在CPU休眠的状态下独立工作。若需要主CPU工作,任何一个模块都可以通过中断唤醒CPU,从而使系统以最低功耗运行。
让CPU工作于突发状态可以充分利用CPU的低功耗性能。通常,使用软件将CPU设定到某一低功耗模式,在需要时使用中断将CPU从休眠状态中唤醒,完成工作后又可以进入相应的休眠状态。如:让CPU工作在LPM3状态,通过中断事件转换到AM活动模式,根据运行需要,又可以从AM状态进入相应的低功耗模式:LPM0/LPM3或LPM4。
PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果。这是个什么概念呢?我们一步步来介绍。
注意:此文是写给单片机初学者的。
<strong>为什么要写篇文章?</strong>
虽然这个问题对于电子老白来说不值一提,不过对于初学单片机的朋友,问这个问题的人实在是太多了,以前总是一句一句的解释给你们听,重复的劳动实在没有意义,看来非常有必要在这里统一的说一下了。
<font color="blue"><strong>PCB层的定义:</strong></font>
<center><img width="600" src="http://mcu.eetrend.com/files/2017-08/%E5%8D%9A%E5%AE%A2/100007373-23775…; alt="PCB层的定义"></center>
<font size="3"><strong> 第六章 支持模块</strong></font>
本章描述为管理整体应用程序行为所提供的一些基础支持特征及配置参数的APIs所对应的模块。
<strong> 6.1 应用支持和管理模块</strong>
SYS/BIOS和XDCtools提供了数个模块用于支持和管理整个应用程序行为。以下模块提供了属于这个类别的APIs和配置设置:
LED驱动电源把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。
<strong>什么是LED驱动电源?</strong>
LED驱动电源把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。
而LED驱动电源的输出则大多数为可随LED正向压降值变化而改变电压的恒定电流源。LED电源核心元件包括开关控制器、电感器、开关元器件(MOSfet)、反馈电阻、输入滤波器件、输出滤波器件等等。
在电力电子控制中,PWM几乎是无处不在的,不论是AC/DC,DC/AC,还是DC/DC,都涉及到PWM,PWM具体是什么可以自行百度,网上资料非常多,这里就不再赘述。在电力电子变换里面,PWM波形生成有两种方式,模拟和数字,专用的模拟IC不在此文探讨范围之内,本文主要介绍怎样用MCU来生成PWM。
单片机一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。
事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。
<strong>单片机攻击技术</strong>
目前,攻击单片机主要有四种技术,分别是:
<strong>1、软件攻击</strong>
目前为止,接触单片机已有不少,从选择元器件、原理图、PCB、电路硬件调试、软件开发也算小有心得。
单片机软件开发里面第一步当属下载程序了,如果这一步都有问题,那么后面的一切便无从谈起,记得当初刚接触单片机时,对于下载电路方法及原理也是一头雾水。好在随着经验的积累以及自己的努力探求,现在对此问题算是有了点点自己的经验理解。故今天在此针对常用51单片机下载程序问题做下详解,以求新手们少走弯路。
<strong>原理</strong>
单片机又称单片微控制器,它是把一个计算机系统,包括cpu、ram、rom、定时/计数器和多种i/o接口集成到一个芯片上。由于单片机的种种优点和特性,其应用领域极其广泛。单片机系统同样也由硬件系统和软件系统构成,因此涉及到程序的编写问题。单片机的编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,一般用户已经不再使用。下面分别对汇编语言和最常用的高级语言进行分析。
<strong>单片机的汇编语言</strong>
之前一直把Timer翻译为计时器,感觉定时器更贴切些。之后全部翻译为定时器。
<strong>5.3 定时器模块</strong>
ti.sysbios.hal.Timer模块是一个面向定时器外设的标准接口。此模块将于8.3节进行详细描述,因为它是硬件抽象层(HAL)的一部分。
你可以使用此模块创建定时器(就是标记使用的定时器)并配置为定时器到期时调用一个tickFxn。仅在定时器外设无需任何自定义配置时使用此模块。
计时器可被配置为单周期或多周期模式。period可被指定为定时器次数或微秒。
<strong>5.4 Seconds模块</strong>
<font color="#FF8000">作者:电子创新网张国斌</font>
据说搞IC设计的人因为压力大都少年老成,第一眼看到王翔,就感觉他虽有个娃娃脸但确实有一点沧桑,一打听才知道他虽只有三十多岁,但已经有14年IC设计经验,而且在MCU领域有超过10年设计经验!开发过13款MCU!这在本土IC设计领域也算是一个不折不扣的“老兵”了,在成都国腾微电子、海思半导体、富士通半导体等公司的工作经历让他积累了不少压力和丰富的设计经验,不过,这也让他在创办成都蓉芯微两年后就推出了号称业界功耗最低的MCU!
这是他的团队开发的Cortex-M0内核的RSM32M0P32E MCU的功耗指标,大家看一看,shut-down模式下竟然做到了7nA!
时间服务
时间服务概览
• 在 SYS/BIOS和XDCtools中,有几个模块涉及计时和时钟相关服务:
ti.sysbios.knl.Clock模块:负责内核用于保持时间轨道的周期性系统tick。所有SYS/BIOS APIs期望一个timeout参数来中断根据时间ticks所设置的timeout。时钟模块用于调度那些在时钟ticks中指定的内部运行的函数。默认情况下,时钟模块使用硬件抽象层。计时器模块则获取基于硬件的tick。另外,时钟模块可配置为使用应用程序提供的tick源,详见5.2节(时钟模块代替了早期DSP/BIOS版本中的CLK和PRD)。
<strong>单片机主要作用是控制外围的器件,并实现一定的通信和数据处理。但在某些特定场合,不可避免地要用到数学运算,尽管单片机并不擅长实现算法和进行复杂的运算。下面主要是介绍如何用单片机实现数字滤波。</strong>
在单片机进行数据采集时,会遇到数据的随机误差,随机误差是由随机干扰引起的,其特点是在相同条件下测量同一量时,其大小和符号会现无规则的变化而无法预测,但多次测量的结果符合统计规律。为克服随机干扰引起的误差,硬件上可采用滤波技术,软件上可采用软件算法实现数字滤波。滤波算法往往是系统测控算法的一个重要组成部分,实时性很强。
<strong>采用数字滤波算法克服随机干扰的误差具有以下优点:</strong>
作者:王朋朋
单片机进入中国30年,也正是单片机高速发展的时代。从简单的控制到嵌入式系统,再到物联网,从工业领域到消费电子、安防、医疗、汽车、智能家居等产品,单片机无处不在,并从高科技领域越来越多的进入我们的日常生活。
单片机的发展从8位开始,目前8位单片机仍占有较高市场份额,在很多应用中发挥重要作用,但32位的ARM产品显然成长更快。从8位到32位,不仅仅是位数和CPU内核的变化,在软件开发、工具和环境、工程师开发方式、生态系统方面,都带来了深刻的变化。甚至产品的名字也从早期的“单片机”,到更多地使用“微控制器”或者“嵌入式系统”这样的术语(如表1)。我们下文更多以MCU或微控制器来指代这一产品。
<font size="3"><strong>Mailboxes(邮箱)</strong></font>
ti.sysbios.knl.Mailbox模块提供了一系列函数管理mailboxes。Mailboxes可用于在相同处理器的两个task中传递缓冲。一个Mailbox实例可用于多个readers和writers。
Mailbox模块拷贝缓冲到合适尺寸的内部缓冲。这些缓冲的尺寸和个数在Mailbox实例创建时指定。拷贝在通过Mailbox_post()发送缓冲时建立。另外一份拷贝在通过Mailbox_pend()接收缓冲时建立。
<strong>Gates(门)</strong>
Gates是用于防止并发访问代码关键区域的设备。各种门关于如何锁住关键区域的实现并不一样。
线程可以被更高优先级线程抢占,一些代码段在被另一个线程执行前需要被一个线程执行完毕。使用代码改变关键区域的全局变量这样的普通应用需要通过Gate来进行保护。
Gates通常用于禁用一些级别的抢占,如禁用task切换或甚至硬件中断,或用于二元semaphore。通过使用一个key,所有Gate实现支持嵌套。
<font size="3"><strong>信号量(Semaphores)</strong></font>
SYS/BIOS在semaphores的基础上提供了一系列用于任务间同步和通信的函数。Semaphore通常用于协调访问一系列竞争任务间的共享资源。Semaphore模块提供的函数通过Semaphore_Handle类型句柄来操作semaphore对象的访问。参阅video introducing Semaphores进行概览。
<font size="3"><strong>The Idle Loop</strong></font>
dle Loop是 SYS/BIOS中的后台线程,在没有Hwi、Swi或Task时持续运行。任何其它线程在任何时间可抢占Idle Loop。
Idle管理器允许你在Idle Loop中插入函数运行。在configured. Idle_loop中会调用的每个Idle对象所相联的函数。Idle Loop每次调用一个函数,并在一个连续循环中往复调用所有函数。
所有Idle线程都按顺序运行于相同的优先级。函数按照创建的顺序依次运行。一个Idle函数必须完成后才会开始另一个Idle函数。当最后一个Idle函数完成,则又重新运行第一个Idle函数。