judy的博客

涨知识:LED驱动电源类别及性能

judy的头像

LED驱动电源把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

什么是LED驱动电源?

LED驱动电源把电源供应转换为特定的电压电流以驱动LED发光的电压转换器,通常情况下:LED驱动电源的输入包括高压工频交流(即市电)、低压直流、高压直流、低压高频交流(如电子变压器的输出)等。

而LED驱动电源的输出则大多数为可随LED正向压降值变化而改变电压的恒定电流源。LED电源核心元件包括开关控制器、电感器、开关元器件(MOSfet)、反馈电阻、输入滤波器件、输出滤波器件等等。

根据不同场合要求、还要有输入过压保护电路、输入欠压保护电路,LED开路保护、过流保护等电路。

按驱动方式分类

(1)恒流式

恒流驱动电路输出的电流是恒定的,而输出的直流电压却随着负载阻值的大小不同在一定范围内变化,负载阻值小,输出电压就低,负载阻值越大,输出电压也就越高;

恒流电路不怕负载短路,但严禁负载完全开路;

恒流驱动电路驱动LED是较为理想的,但相对而言价格较高;

MCU是怎样输出PWM波形的

judy的头像

在电力电子控制中,PWM几乎是无处不在的,不论是AC/DC,DC/AC,还是DC/DC,都涉及到PWM,PWM具体是什么可以自行百度,网上资料非常多,这里就不再赘述。在电力电子变换里面,PWM波形生成有两种方式,模拟和数字,专用的模拟IC不在此文探讨范围之内,本文主要介绍怎样用MCU来生成PWM。

在所有的MCU里,都会有Timer定时器,PWM就是通过这个外设生成的,基本的原理可以通过下图(以STM32F407的寄存器为例)来解释。

一文了解单片机“攻击”与“防守”技术

judy的头像

单片机一般都有内部ROM/EEPROM/FLASH供用户存放程序。为了防止未经授权访问或拷贝单片机的机内程序,大部分单片机都带有加密锁定位或者加密字节,以保护片内程序。如果在编程时加密锁定位被使能(锁定),就无法用普通编程器直接读取单片机内的程序,这就是所谓拷贝保护或者说锁定功能。

事实上,这样的保护措施很脆弱,很容易被破解。单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序。

单片机攻击技术

目前,攻击单片机主要有四种技术,分别是:

1、软件攻击

该技术通常使用处理器通信接口并利用协议、加密算法或这些算法中的安全漏洞来进行攻击。软件攻击取得成功的一个典型事例是对早期ATMELAT89C 系列单片机的攻击。攻击者利用了该系列单片机擦除操作时序设计上的漏洞,使用自编程序在擦除加密锁定位后,停止下一步擦除片内程序存储器数据的操作,从而使加过密的单片机变成没加密的单片机,然后利用编程器读出片内程序。

2、电子探测攻击

【原创】惊!一位年轻的本土半导体“老兵”竟捣鼓出业界功耗最低的MCU?

judy的头像

作者:电子创新网张国斌

据说搞IC设计的人因为压力大都少年老成,第一眼看到王翔,就感觉他虽有个娃娃脸但确实有一点沧桑,一打听才知道他虽只有三十多岁,但已经有14年IC设计经验,而且在MCU领域有超过10年设计经验!开发过13款MCU!这在本土IC设计领域也算是一个不折不扣的“老兵”了,在成都国腾微电子、海思半导体、富士通半导体等公司的工作经历让他积累了不少压力和丰富的设计经验,不过,这也让他在创办成都蓉芯微两年后就推出了号称业界功耗最低的MCU!

这是他的团队开发的Cortex-M0内核的RSM32M0P32E MCU的功耗指标,大家看一看,shut-down模式下竟然做到了7nA!

单片机pwm控制基本原理详解

judy的头像

PWM是Pulse Width Modulation的缩写,它的中文名字是脉冲宽度调制,一种说法是它利用微处理器的数字输出来对模拟电路进行控制的一种有效的技术,其实就是使用数字信号达到一个模拟信号的效果。这是个什么概念呢?我们一步步来介绍。

首先从它的名字来看,脉冲宽度调制,就是改变脉冲宽度来实现不同的效果。我们先来看三组不同的脉冲信号,如图所示。

单片机编程语言的比较

judy的头像

单片机又称单片微控制器,它是把一个计算机系统,包括cpu、ram、rom、定时/计数器和多种i/o接口集成到一个芯片上。由于单片机的种种优点和特性,其应用领域极其广泛。单片机系统同样也由硬件系统和软件系统构成,因此涉及到程序的编写问题。单片机的编程语言很多,大致分成三类:机器语言、汇编语言、高级语言。机器语言由于繁琐容易出错,一般用户已经不再使用。下面分别对汇编语言和最常用的高级语言进行分析。

单片机的汇编语言

汇编语言是一种用文字助记符来表示机器指令的符号语言,是最接近机器码的一种语言。其主要优点是占用资源少,程序执行效率高,由于它一条指令就对应一条机器码,每一步的执行动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。但是不同的类型的单片机,其汇编语言可能有点差异,所以不易移植,因为他们的指令系统是有区别的。但懂得汇编语言可帮助了解影响任何语言效率的特殊规定。例如,懂得汇编语言指令就可以使用在片内ram作变量的优势,因为片外变量需要几条指令才能设置累加器和数据指针进行存取。同样的,当要求使用浮点数和启用函数时也只有具备汇编编程经验才能避免生成庞大的、效率低的程序,对于这方面的编程,没有汇编语言是做不到的。

单片机的c语言

浅谈单片机下载程序电路原理

judy的头像

目前为止,接触单片机已有不少,从选择元器件、原理图、PCB、电路硬件调试、软件开发也算小有心得。

单片机软件开发里面第一步当属下载程序了,如果这一步都有问题,那么后面的一切便无从谈起,记得当初刚接触单片机时,对于下载电路方法及原理也是一头雾水。好在随着经验的积累以及自己的努力探求,现在对此问题算是有了点点自己的经验理解。故今天在此针对常用51单片机下载程序问题做下详解,以求新手们少走弯路。

原理

单片机的TXD、RXD是TTL电平,所以你得万变不离其宗的将其它信号转成TTL电平,只有这样给单片机下载程序才有可能成功!其中CH340、PL2303等芯片是直接将USB信号转换为TTL电平,而MAX232等芯片是将TTL转换为RS232信号或者将RS232信号转换为TTL.下面请看利用这种原理的两种常用方法:

方法一:

基于TI-RTOS的CC2650DK开发(16)---Timer(定时器)

judy的头像

之前一直把Timer翻译为计时器,感觉定时器更贴切些。之后全部翻译为定时器。

5.3 定时器模块

ti.sysbios.hal.Timer模块是一个面向定时器外设的标准接口。此模块将于8.3节进行详细描述,因为它是硬件抽象层(HAL)的一部分。

你可以使用此模块创建定时器(就是标记使用的定时器)并配置为定时器到期时调用一个tickFxn。仅在定时器外设无需任何自定义配置时使用此模块。

计时器可被配置为单周期或多周期模式。period可被指定为定时器次数或微秒。

5.4 Seconds模块

ti.sysbios.hal.Seconds模块提供了一种设置或获取自格林尼治时间1970年1月1日00:00:00以来走过的秒数。Seconds模块如果可用的话,将通过一个指定设备Seconds委托来维护时间。如果指定设备Seconds模块不可用,ti.sysbios.hal.SecondsClock模块将作为Seconds委托使用。SecondsClock内部使用时钟模块周期性地增加秒数。

Seconds模块的APIs是:

程序的思考「从单片机到PC」

judy的头像

关于程序的执行,以前想的不多,没有意识到一个程序在运行时,从哪里读指令,数据又写在哪里呢

从单片机上知道,在上电的那一刻,MCU的程序指针PC会被初始化为上电复位时的地址,从哪个地址处读取将要执行的指令,由此程序在MCU上开始执行(当然在调用程序的 main之前,还有一系列其他的的初始化要做,如堆栈的初始化,不过这些我们很少回去修改)。PC在上电时,和MCU差不多,不过读取的是BIOS,有它完成了很多初始化操作,最后,调用系统的初始化函数,将控制权交给了操作系统,于是我们看到了Windows,Linux系统启动了。如果将操作系统看作是在处理器上跑的一个很大的裸机程序(就是直接在硬件上跑的程序,因为操作系统就是直接跑在CPU上的,这样看待是可以的,不过这个裸机程序功能很多,很强大),那么操作系统的启动很像MCU程序的启动。前者有一个很大的初始化程序完成很复杂的初始化,后者有一段不长的汇编代码完成一些简单的初始化。这一点看,它们在流程上是很相似的。

基于TI-RTOS的CC2650DK开发(15)---Clock(时钟)

judy的头像

时间服务

时间服务概览

• 在 SYS/BIOS和XDCtools中,有几个模块涉及计时和时钟相关服务:
ti.sysbios.knl.Clock模块:负责内核用于保持时间轨道的周期性系统tick。所有SYS/BIOS APIs期望一个timeout参数来中断根据时间ticks所设置的timeout。时钟模块用于调度那些在时钟ticks中指定的内部运行的函数。默认情况下,时钟模块使用硬件抽象层。计时器模块则获取基于硬件的tick。另外,时钟模块可配置为使用应用程序提供的tick源,详见5.2节(时钟模块代替了早期DSP/BIOS版本中的CLK和PRD)。

• ti.sysbios.hal.Timer模块:提供使用计时器外设的标准接口。它隐藏了计时器外设的所有目标/设备的具体特征。计时器的目标/设备具体属性由 ti.sysbios.family.xxx.Timer模块支持(例如,ti.sysbios.family.c64.Timer)。你可以使用计时器模块来在计时器到期时调用一个tickFxn。详见5.3节和8.3节。

页面

订阅 RSS - judy的博客