MCU

作者:何此昂@NXP

1、背景

一切温度高于绝对零度(-273.15℃)的物体都在不停向周围空间辐射红外能量。非接触式温度传感器主要是利用被测物体热辐射而发出红外线,从而方便地测量物体,例如如下图所示物体的表面温度测量。


1.1. 红外测温

红外线又称红外光,它具有反射、折射、散射、干涉、吸收等性质,利用红外线的物理性质来进行测量。物体的红外辐射特性如辐射能量的大小及其波长的分布与它的表面温度有十分密切的关系。因此,通过对物体自身辐射的红外能量的测量,便能准确地测定它的表面温度,这就是红外辐射测温的客观依据。

红外测温有如下特点:

A、响应时间快,测量速度快,理论上0.1秒就可以测出被测物体的温度。

B、非接触、使用安全及使用寿命长等优点。
由于和被测量介质不发生直接接触,所以不用考虑被接触介质的一些自身物理特性。例如:粘附、腐蚀、磨损等都不会对传感器造成损害, 同时由于不需要接触被测物体而快速测得温度,能可靠测量热的、危险的以及不方便接触的物体,同时不会污染或损坏被测物体。
而接触式的会面临这些问题。在产品质量控制和工业监测、设备在线故障诊断、安全保护以及节约能源等方面有重要作用。

C、受空间局限性影响小。
对一些距离较远不易接触到的被测量目标可以远距离测量温度。对于一些不方便接触测量的目标可以实现测量,例如旋转机械、运动中目标等等。

红外位于可见光和无线电波之间,红外辐射是一种电磁波,红外波长常用微米表示,波长范围为0.7um~1000um,实际上0.7um~14um米波带用于红外测温。

1.2. 红外测温技术

实现非接触红外测温的技术包括长波红外焦平面探测器、热释电红外探测器以及基于赛贝克效应的热电堆红外探测器。其中长波红外焦平面探测器因其较高的成本, 一般不适用于家庭测温应用。热释电红外探测器尽管成本低廉,但是因其需要机械斩波器,而使系统的可靠性降低也限制了其应用。而热电堆红外探测器因为其极高的性价比非常适合智能家居、智能楼宇测温场景。

最常用的是热电堆红外温度传感器,这种传感器直接感应热辐射,用于测量小的温差或平均温度,可以为非接触温度测量提供解决方案。非接触红外测温由光学系统、光电探测器、信号放大器及MCU信号处理、显示输出等部分组成,如下图所示。光学系统汇聚其视场内的目标红外辐射能量,视场大小由测温仪的光学零件及其位置确定。


1.3. 额温枪

► 额温枪工作原理:任何物体在高于绝对零度(-273℃) 以上时都会向外发出红外线,所以红外最开始是用在外太空测温的,额温枪通过传感器接收红外线,得出感应温度数据。

► 额温枪使用方法:额头部位相对体表温度来说是最接近正常体温的放射源。把额温枪放于距额头1-3cm处测温,精度为+/-0.3,此类精度不能做医用,但可做疫情时期非接触测温排查用,人体测温主要是做体温初步筛查,通过初步对人体表面温度进行筛查,快速找出温度异常的个体,发现温度异常目标之后,再进行专业医学体温测量,温度过高者经医院及时确诊而进行防治。

人体是个非常复杂的生物综合系统,体温是人体生命活动是否正常的重要参数,通常通过测量额头、耳蜗、肛门、口腔和腋窝等地方的温度来检测健康状况,不同部位测量出来的体温会有所不同,具体差异参考下表:


1.4. 额温枪应用

额温枪不只可以测量人体体温,涵盖很多日常场景:

人体体温测量:准确测量人体体温,替代传统的水银体温计。通过随时观察自己体温是否存在异常,避免感染流感,防范冠状病毒等。

皮肤温度测量:测量人体皮肤的表面温度,比如可用于断肢再植入手术时需要测量皮肤的表面温度。

物体温度测量:测量物体表面温度,比如可用于茶杯外表的温度的测量。

液体温度测量:测量液体的温度,如婴儿洗澡水的温度,宝宝洗澡的时候测一下水温,不再担心凉了或者烫着;还可以测量牛奶瓶的水温,方便冲调Baby的奶粉。

可以测量室温。

2、器件选型

低端家用的红外测温不同于高端的红外热成像仪,只需要低端低功耗的MCU就可以实现,目前市面上常见MCU主要的痛点在于:

  • 器件ADC的精度不高或者一批产品的ADC一致性不好,出现同一批设备在相同温度下,有的设备精度高有的设备精度低;
  • 运行功耗偏高;
  • Flash容量不够大;
  • 标定算法简单;在不同环境温度下针对同一测温对象的重复测量的精度差;
  • 专用的SOC内置的LCD引脚只能做Segment或者COM的功能,功能单一,如果不用LCD显示引脚的话,该功能无法复用成其他GPIO引脚,GPIO平台可扩展性不好。

如果使用NXP集成丰富的模拟外设和数字接口,针对成本敏感,低功耗电池供电应用场景应用的K32 L2B系列,可以很好的解决上述这些问题,其具有如下特性:

  • 集成多通道16-bit ADC,可用于采集红外温度传感器的信号,以及采集电池电压,目前K32L2B的16位单端模式精度可以达到13.9位,差分模式可以达到14.5位,使用芯片内置的ADC就可以满足要求,实现0.1度温度测量精度要求。
  • 12-bitDAC为外置运放提供偏置电压;可以节省一颗外部的3V转1.2V电平转换芯片或者外围分离器件搭建的降压转换电路(由于运放的偏置电路消耗电流只需要uA级,目前片内的一路DAC可以满足此要求)。另外Vref 该引脚可以内部输出1.2V参考电压,带载能力也可达1mA。
  • sLCD:低功耗段码显示支持24x8或者28x4段,sLCD引脚既可以做Segment,也可以做COM口的功能,即使未配置为sLCD的引脚也可以做其他IO功能控制口。
  • 3路I2C(其中的2路I2C中一路接红外数字传感器或者接近传感器,另外一路接高精度数字温度传感器,可外接NXP PCT2075温度传感器芯片,还有预留的1路I2C用FlexIO实现标准的I2C或者UART或者SPI通信) 。
  • 2路PWM用于驱动LED指示LED或者蜂鸣器报警信号,以及实现语音播放功能。
  • USB FS 2.0从设备接口,不要额外的晶体。
  • 支持最大256K Flash,48 MHz Arm® Cortex®-M0+内核。K32L2B11VLH0A 64K Flash,32K RAM的配置即可满足额温枪的需要。
  • 低功耗特征:运行模式达 54 uA/MHz,在深度睡眠模式下RAM和RTC处于保持状态的功耗为1.96uA;满足采用采用电池供电的手持式红外测温枪,对系统功耗苛刻的要求。
  • 具有小于10us的快速唤醒模式,能及时唤醒主控进入运行模式。
  • 64 LQFP封装, 至少提供5个GPIOs满足用户人机界面设置按键需求。如果是做额温测试模块外接高端i.MX系列带大屏幕彩色显示屏的应用,可以选择32脚封装的,例如K32L2B11VFM0A。
  • 额温枪对Flash容量大小的需求,主要是NTC(RT电阻温度换算表)和红外测温(VT电压温度换算表)标定参数的存储,语音播报数据的存储,64K Flash是可以满足要求的。
  • K32 L2B系列具有广泛的产品路线图,支持引脚功能完全兼容,扩展的Flash,可以添加诸如蓝牙以及二维码扫码等新型扩展功能需求。
  • 内置ROM bootloader方便用户程序在线升级和温度参数标定,内置高精度的内部时钟,此功能用于工厂固件生产配置,使用NXP提供的Kinetis Flash Tool下载工具软件GUI,可以直接方便的通过USB刷新固件和校准配置参数,无需额外的仿真下载调试工具。

MCUXpresso ConfigTool:易用的软件配置工具以及完整的外设驱动SDK包方便用户快速原型开发。

3、硬件设计

MCU 硬件框图如下。


其中,运放(AMP)的偏置电压设置采用K32L2B内置的DAC设置或者Vref输出。

红外温度传感器(Infrared sensor) 可以选择带数字接口I2C输出的,或者是纯模拟输出的,后面小节会对传感器选型详细介绍。

在没有按键触发的情况下,系统整体是断电的,如果有按键触发则启动温度探测以及sLCD显示,长时间如果没有按键被按下,则进入掉电状态。当按下测温按键, 额温枪便会利用红外传感器进行温度采集, 通过ADC能将模拟信号转换成数字, 微控制器MCU通过运算(插值,查表,或者线性拟合等方式)将其转化为温度。

3.1 红外温度传感器(Infrared sensor)

自然界的所有物体都能向外辐射红外热,不同温度的物体,其释放的红外能量的波长是不一样的,因此红外波长与温度的高低是相关的。人体辐射的红外光波长3~50um,其中8~14um占46%,峰值波长在9.5um。热释电红外传感器(PIR),它能将波长为8~12um之间的红外信号变化转变为电信号,并能对自然界中的白光信号具有抑制作用。因此在温度检测区域内,当无人体时,热释电红外感应器感应到的只是环境温度,当人体进人检测区,热释电红外感应器感应到的是人体温度与环境温度的差异信号。因此,红外探测器的原理就是感应人体与环境温度的差异。但是热释电精度不高,一般只是作为有无人体的检测。

目前额温枪红外温度传感器方案主要是热电堆传感器的方案,有两种一个是集成17或者18位ADC的带I2C接口的传感器, 价格大于一美元,主要优势是不用标定,设备生产商使用方便简单。

另外一种就是直接模拟输出的方案,因为MCU本身具有高精度的ADC,使用模拟传感器方案的成本优势明显,小于一美元。性能上面主要是考虑热敏电阻阻值@25℃,温漂大小,FOV视野角度,感应区面积,分辨率,测温范围等参数。

通过采集红外传感器收集到的物体发射的红外线信号,转化为微弱的uv-mv级的非线性输出电压信号,再经过运放近百或千倍的电压放大,并经过调节和线性化处理,最终输出的是线性mV或mA信号进入到MCU,通过高精度ADC转换,转换结果经过数字信号算法处理运算得到实际的温度,通过LCD或者语音播报出来。

实际电路设计中,由于结构的原因,有可能传感器板子是单独的板子,运放要靠近传感器摆放,使得传感器与MCU连接线受干扰影响小。

MCU内部的16位ADC具有内部1.2V参考电压Vref,可以提供更精确的电压基准,不受电池电压变化而影响测量结果。

热电堆每0.1度才大约5μV左右,ADC ( 16位分辨率)的精度一般能做到13位以上的就算不错了,也就是ADC在这种情况下的最小真有效的分辨电压是400μV。因此运放最小也要放大100倍,目前是240放大倍率,达到1000μv,也就是1mv。


硬件平均使能,32位采样平均,使能连续转换模式配置。

ADC0->SC3 = ADC_SC3_AVGE_MASK | ADC_SC3_AVGS(3) | ADC_SC3_ADCO_MASK;

实际测试了一下板子,用外部电源供电,采集同样的目标温度,换算为实际的电压范围跳动在1.235-1.251v,差不多有12mv的波动。而使能硬件平均后,采集电压跳动范围是1.218-1.220v,减小到2mv,而传感器输出信号每度变化是50*240 =12mv波动,可见ADC采集精度大优于传感器输出信号精度。

3.2 环境温度传感器(Temperature sensor)

环境温度传感器采用NXP PCT2075I2C接口数字温度传感器,其测温范围可达-25℃~100℃,其测量精度可以达到0.125度,作用是获取测量时的环境温度,以此从红外温度传感器的测量值中剔除环境温度,得出被测人体温度,对红外温度传感器做补偿。

此外检测环境温度,对精度要求不高,通常用NTC(负温度系数的热敏电阻,在室内温度环境中测温精度可达±0.2℃以内),其阻值随温度的升高而降低,用MCU的ADC能够准确分辨其阻值变化大小,通过RT电阻温度换算表,从而可计算出对应的温度值。

3.3 接近传感器(Proximity sensor)

环境光检测和数字接近传感器采用EM30719或者LTR-553ALS-01或者STK3311,用来判断被测物体与红外测温传感器间的距离,只有在最佳物距比的情况下才启动测量,保证测量数据的准确性。通过I2C接口连接到MCU端。

接近传感器越靠近物体,值越大,没有东西隔挡理想值是0。

额温计的传感器视场角通常很大。校准时接收黑体辐射源辐射不仅来自于黑体空腔底部,也有很大比例来自于接近空腔口的侧壁。常见的圆柱-圆锥空腔接近腔口侧壁的有效发射率会显著下降。因此,额温计的测量结果通常对测量距离敏感。

光学器件的主要特征是视场(FOV),即在指定距离处目标尺寸是多少?如在常见的透镜系统中,15英寸工作距离处目标直径为1英寸。根据平方反比定律,通过将距离加倍(30英寸),目标区域理论上也加倍(直径为2英寸)。如果目标占满整个视场(FOV),工作距离就不应影响精度。

以典型的额温计的测量距离为1-3cm为例。在1cm处,示值最高,示值对测量距离的敏感程度也最低,瞄准的测量重复性最好。因此在实际应用时,在1-3cm的测试距离测量结果最佳。

3.4 人机接口电路部分

液晶显示电路,能够将测量的人体温度以段码方式显示出来,并显示温度单位(℃/℉)、电量提示符号以及工作模式、过温提示报警等。本方案采用段码式sLCD显示屏,搭配如下3色LED导光板,成本低显示效果好。


绿色背光表示,低于37.3度,体温正常;黄色的预警值范围是37.4-37.9度,提醒关注体温变化;红色背光表示38度以上,建议到医院检查。

本方案设计了5个独立按键电路,最基本的是3个按键,可分别做为体温键、物温键和记忆键,另外还可以设计温度单位切换按键,声音提示按键,也可以设计为长短按键的形式,只使用3个按键的方式。

K32L2B MCU内部的sLCD驱动由于内置电荷泵,不会随电池电压变化而对段码LCD屏显示有所影响。

K32L2B MCU VLL3需要接上拉电阻,否则在做 sLCD显示时,对于没有配置为显示的段会有鬼影。

目前额温枪的设计是参考K32L2B的官方原理图SCH-46355来实现的,官方版图提供了完整的外设功能驱动设计参考。

3.5 电源供电部分

电源电路可以用2节、3节或4节电池供电,为系统提供3V、4.5V或6V的输入电源。

如果采用2节电池供电可以省略LDO,系统电路的电源都直接由电池提供。采用3节或4节电池供电的情况下,需要增加额外的LDO电路为其它电路供电。

当检测按键按下的时侯进入工作状态,使能电源引脚,如果30s内检测不到按键按下,则关闭电源使能。

目前的电路是用内部DAC输出电压1.2V给到运放提供偏置电压,负载电流1mA,省去外围的1.2V电路。

另外Vref out (VREFH)也可以输出1.2V(当Vrefv1模块使能的时候),应用上也是一个亮点,既可以为内部的ADC或者CMP比较器提供内部的参考电压,亦可以用它输出电压给模拟外设提供参考电压,Vref out 引脚输出负载也可以达到1mA,参考如下VREF表格。

Vref out (VREFH)也可以输出1.2v(当Vrefv1模块使能的时候),负载电流 1mA。应用上也是一个亮点,可以用它输出偏置电压给到运放。目前是用内部DAC输出电压1.2v给到运放提供偏置电压,负载电流1mA,省去外部的1.2v电压参考芯片。也可以用Vref out 提供偏置电压,这样可以用 DAC 输出语音播报做其他功能设置,Vref out 引脚输出负载也可以达到1mA,参考如下VREF表格。

目前64脚的IO资源已经用足,所以做额温枪,使用集成段码显示的单芯片,64脚封装应该是主流。当然也有48或者32脚的产品,一般都是需要外置sLCD显示驱动芯片。


3.6 K32L2B MCU部分

K32L2B MCU电路做为系统的检测和主控核心单元,其主要功能是通过片内的16位高精度ADC电路,检测经过信号调理电路放大滤波后的热释电信号,并参考当前的环境温度值做相应的校准和补偿。经过校准的测量值通过K32L2B MCU的sLCD接口送到显示驱动电路,以直观的数据显示出来。

热释电传感器测量人体和物体表面温度的范围是不同的,所做的校准和补偿方案也有所不同,MCU的控制电路使用模式按键来选择不同的测量模式,以达到最佳的测量精度。

为了直观的展示测量结果,MCU的控制电路可以驱动3种不同颜色的LED背光灯,灯光红黄绿表示不同的温度区间。同时还可以通过驱动蜂鸣器的“嘀嘀”声来表示测量状态和结果。

K32L2B MCU内置64KB Flash存储器,一方面可以保存系统功能代码,另一方面可以用于存储测量数据。

本文下半部分将介绍相关软件及校准等方面的内容。

来源:恩智浦MCU加油站,转载此文目的在于传递更多信息,版权归原作者所有。

围观 12

3月30日,Holtek新一代高抗干扰能力Enhanced Touch I/O Flash MCU系列,新增系列成员BS83A04C,特别要求低功耗特性,适合应用于需求低功耗的产品、各项家电及消费性产品,如蓝芽耳机、移动电源、智能手环、饮水机、空气清净机、厨房秤等触控按键应用。

HOLTEK新推出BS83A04C低功耗的Enhanced Touch MCU

BS83A04C于工作电压3V下平均工作电流不到3μA即可实现4个触摸键的侦测,同时还具有高抗干扰特性,可通过CS (Conductive Susceptibility)10V动态测试,工作电压范围1.8V~5.5V,接口支持I²C,最多8个可弹性应用的I/O,接脚定义与BS83B04C兼容,封装提供8SOP、10DFN及10MSOP。

Holtek同时提供软、硬件功能齐全的发展系统。在软件上提供触控函式库,使客户能快速上手。在硬件上使用e-Link搭配专用的OCDS (On Chip Debug Support) 架构的MCU,可提供与最终量产MCU相同封装及特性的模拟。

来源:Holtek

围观 3

这一篇主要讲讲ROM\RAM\Flash的一些零碎知识点,网上也能找到很多资料。

1、ROM

1.1 概述

只读存储器(Read-only memory, ROM),当然从广义上来讲,也有一些器件,例如Flash,EPROM等等,通过某种手段可以编程的,也属于ROM的范畴的。ROM一般用在一些程序的存储和数据的存储,这里程序多半是比较固定的程序(Firmware,固件,一种跟硬件强相关的程序,例如驱动等等),这里的数据多半是固化的表项,查找表等等不会怎么改变的表项。

1.2 基本原理

HDL设计中,对于小ROM,深度和位宽都不大,一般使用组合逻辑就可以做一个ROM。如果数据比较大,比如1K*4B这种,就换一种ROM,使用标准单元Mask ROM,来做存储,如下图所示。百度百科对MASK ROM的定义,是制造商为了要大量生产,事先制作一颗有原始数据的ROM或EPROM当作样本,然后再大量生产与样本一样的 ROM,这一种做为大量生产的ROM样本就是MASK ROM,而烧录在MASK ROM中的资料永远无法做修改。


1.3 分类

一种是真的写了就没法改的ROM;一种是可以写一次的ROM(one-time Programmable read-only memory),使用的高压反熔丝技术;一种是可擦出的能、能写多次的ROM(Erasable programmable read only memory),使用紫外线擦除;一种是电擦除的EEPROM(Electrically Erasable programmable read only memory,EEPROM),再到后来东芝搞的Flash。工业界第一种ROM和最后一种的Flash用的比较多。

2、Flash

1.1 原理

非遗失性的存储,是在ROM的基础上演进出来的。目前主流是NAND和NOR。模拟的团队来做flash。可以任意地址访问。对于连续地址读访问,NAND和NOR的带宽差距不大。NAND是存储块访问,NOR可以Byte访问。总的来说,NOR特点就是比较细的访问,基本启动程序放NOR中,稳定性和可靠性也稍微高一些;NAND访问数据块比较好,通常数据放NAND中,而且成本也较低。

图: NOR Flash的时序

ale: address lock enable;一般Flash不会直接集成到芯片中,如果集成在芯片外面,IO数量增加,NOR解决办法就是数据和地址复用,当ale为高的时候,addr上走的是地址,当ale为低且csn为低的时候,addr上走的是数据。
wen:write enable;用于指示读还是写。
rdy:对于芯片和FLash分离,因为是异步接口,所以使用rdy信号用来握手。对于MCU来讲,如果把小的NOR flash集成到芯片内部,就可以直接使用同步接口,也就是SRAM的接口。


图:NAND Flash时序

CLE:Chip Lock Enable;

可以看到NAND也是数据和地址线复用的。NAND可以大块的数据读写,多了些Command。NAND Flash在MCU中的比较少。Flash跟ROM和RAM不同,不想数字的可以直接用工具生成,这个需要模拟团队自己做。

3、RAM

1.1 基本概念

Static Random Access Memory,静态的,随机的访问。静态的,不用刷新,不像DRAM需要随时刷新,但是SRAM没有DRAM的集成度高,面积比较大。另外,速度和功耗比DRAM好一些。

图:存储一个bit的SRAM的结构

6个CMOS管子组成一个SRAM单元,Q1和Q3组成反相器,Q2和Q4组成反相器,两个反相器组成一个环路,这样,只要不掉电,这个逻辑环就不会变,跟触发器原理有点类似。Q5用于控制输入,Q6用于控制输出,两个管子相当于输入和输出的开关。

1.2 分类

single port SRAM:不会发生读写冲突,因为之后一个端口,要么读,要么写;尽量做到先写后读,或者初始化再度,否则读出来的数据有可能不对(原因是SRAM的软失效)。对于软失效,可以加一个ECC校验,例如寸10bir,其中2bit是校验位。

Two port SRAM:FOGA的读写冲突允许,但是ASIC不可以,在同一个时刻,读地址和写地址不要一样。FIFO一般是TP SRAM。

Dual port SRAM:也是两个端口A、B,可以A读B写,也可以A写B读,不在局限于只能谁读谁写。可靠性,面积和率都不是很好。

工程上,使用两个SRAM,做乒乓操作,实现TP SRAM的功能,一个读的时候,另外一个写。两个SRAM加起来面积可能比TP SRAM小一些。对于几百几K的bit位,直接用D触发器来存储比较好。

1.3 接口

SRAM有一个需要注意下,就是Redundancy接口,用于扩展SRAM的,在比较的大的memory中会用,例如cache,这个接口可选的。用法的话,举个例子这个就是说,当SRAM中有一块坏掉了,这个时候就在尾部在接一块SRAM存储,就把坏块的地址映射到新加的存储块中,这个时候就要用的Redundancy了。

1.4 时序

对于Single port SDRAM的时序,如下图:


读是在一个时钟周期完成,如果是连续写,红点处,write enable是可以一直拉低的;读的话,是要在下一个时刻才能采到数据,注意下。

本文转自:博客园 - yiwenbo,转载此文目的在于传递更多信息,版权归原作者所有。

围观 8

【原创】专用MCU是本土厂商突破机会?信号链MCU大有可为

demi的头像

IC Insights预测2018至2023年的MCU销售额复合年均增长率(CAGR)增长3.9%,到2023年出货可望达到382亿颗。不过,随着物联网深入发展,笔者注意到更多MCU玩家开始从通用转向专用发展了。

本文对于志在研究MCU防护的同学,能给很多参考思路,但对于想当黑客的人,后果概不负责...

Ⅰ:中央处理器CPU,包括运算器、控制器和寄存器组。是MCU内部的核心部件,由运算部件和控制部件两大部分组成。前者能完成数据的算术逻辑运算、位变量处理和数据传送操作,后者是按一定时序协调工作,是分析和执行指令的部件。

Ⅱ:存储器,包括ROM和RAM。ROM程序存储器,MCU的工作是按事先编制好的程序一条条循序执行的,ROM程序存储器即用来存放已编的程序(系统程序由制造厂家编制和写入)。存储数据掉电后不消失。ROM又分为片内存储器和片外(扩展)存储器两种。


RAM数据存储器,在程序运行过程中可以随时写入数据,又可以随时读出数据。存储数据在掉电后不能保持。RAM也分为片内数据存储器和片外(扩展)存储器两种。

Ⅲ:输入、输出I/O接口,与外部输入、输出(电路)设备相连接。PO/P1/P2/P3等数字I/O接口,内部电路含端口锁存器、输出驱动器和输入缓冲器等电路。其中PO为三态双向接口,P1/P2/P3数字I/O端口,内部驱动器为“开路集电极”输出电路,应用时内部或外部电路接有上拉电阻。每个端口均可作为数字信号输入或输出口,并具有复用功能(指端口功能有第一功能、第二功能甚至数个功能,在应用中可灵活设置)。

MCU器件,除数字I/O端口外,还有ADC模拟量输入、输出端口,输入信号经内部A/D转换电路,变换为数字(频率)信号,再进行处理;对输出模拟量信号,则先经D/A转换后,再输出至外部电路。

几种如何破解MCU方法及预防措施

一、非侵入式攻击

不需要对元器件进行初始化。攻击时可以把元器件放在测试电路中分析,也可单独连接元器件。一旦成功,这种攻击很容易普及,并且重新进行攻击不需要很大的开销。另外,使用这种攻击不会留下痕迹。因此,这被认为是对任意元器件的硬件安全最大的威胁。同时,通常需要很多时间和精力来寻找对特定元器件的非侵入式攻击方法。这通常对元器件进行反向工程,包括反汇编软件和理解硬件版图。

非侵入式攻击可以是被动的或主动的。被动攻击,也叫侧面攻击,不会对被攻击元器件发生作用,但通常是观察它的信号和电磁辐射。如功耗分析和时钟攻击。主动攻击,如穷举攻击和噪声攻击,特点是将信号加到元器件上,包括电源线。

一个简单的非侵入式攻击可以是复制一个上电配置的基于SRAM的FPGA。接上配置芯片用的JATG接口,用示波器或逻辑分析仪,捕捉所有信号。然后可以通过分析波形并回复独有的命令。

只使用到一半的FPGA资源时,可以轻微改变数据流来伪装盗版的事实。配置时留下一点空间而不影响元器件的运行。JTAG接口在发送信号时序时也有一些自由,故盗版的波形可以设置成看上去与原始信号不一样的。另外,破解者可以在上传时交换行地址,给人的印象是完全不同的设计。

防护与安全

半导体制造商给大客户提供了增强产品防破解能力的措施:包装上的客户印字代替了标准的芯片型号。这给人的印象是产品是由定制的集成电路设计的。众所周知,ASIC提供了很好地保护措施来防止多种攻击,只有极少数经验丰富且装备精良的破解者才有可能成功破解。这会使很多潜在的破解者望而却步。但一个信心坚定的破解者会尝试用简单的方法确定芯片是不是真的ASIC。最简单的方法是观察连接到电源,地,时钟,复位,串口或别的接口的引脚。与数据库中被怀疑的微控制器相比较,这种结果非常可靠,每种微控制器都有自己的引脚特点。一旦发现相似的,就把它放在通用烧写器上尝试读出结果。

另一个简单的方法是限制访问程序存储器。通常用在智能卡中,但一些微控制器中也用到。这不是很可靠且实用的方法。当然在智能卡中用得很好,所有的客户被与芯片制造商迫签署不扩散协议。但微控制器极少这样,能被通用烧写器烧写的微控制器世界上很多公司都能提供。即使文件中没有烧写的规格,用低成本的示波器几个小时就可以套出需要的波形。如果微控制器不被特殊通用烧写器所支持,仍然可以通过从制造商购买开发板来获得直接完整的协议。

二、时序攻击(Timing attacks)

一些安全相关的操作使用输入的值和密钥,由半导体芯片执行不同的时间来比较。小心的时序测量和分析就能恢复出密钥。这个方法最早在1996年的文献上提到。稍后这种攻击成功破解了实际的RSA签名的智能卡。

为了攻击成功,需要收集装置的信息,与处理时间整合比较,如问答延迟(question-answer delay)。很多密码算法容易受到时序攻击,主要原因是软件来执行算法。那包括执行适时跳过需要的分支和操作条件;使用缓存;不固定时间处理指令如倍频和分频;还有大量的其他原因。结果就是执行能力典型地取决于密钥和输入的数据。

为防止此类攻击可以使用盲签名(Blinding signatures)技术。这个方法是利用选定的随机数与输入数据混合来防止破解者知道输入数据的数学运算法则。

时序攻击可用在安全保护是基于密码的微控制器,或使用确定数字的卡或密码来进行访问控制的系统,如达拉斯的iButton产品。这些系统中共有的风险是输入的连续数字在数据库进行再次校验。系统需经常检查输入到数据库的密钥的每个字节,一旦发现不正确的字节就会立即停止,然后切换到下一个直到最后一个。所以破解者很容易测量出输入最后一个密钥倒请求另一个的时间,并得出发现的密钥相似度。尝试相对小的数字,有可能找到匹配的密钥。

为防止这些攻击,设计者需要小心计算处理器的周期。当密码进行比较时确保正确和错误的时间是一样的,例如:飞思卡尔的68HC08微控制器的内部存储器载入模块在输入正确的八字节密码后可以访问内部闪存。为达到正确和错误的密码都处理相同的时间,程序中增加了额外的空操作指令。这对时序攻击提供了很好的保护。一些微控制器有内部阻容振荡器,那样处理器的工作频率与电压和芯片的温度相关。这使得时序分析很困难,攻击时需要稳定元器件的温度并减少电源线上的噪声和电压波动。一些智能卡有内部随机时钟信号使得攻击时测量时间延迟无效。

三、穷举攻击(也称暴力攻击Brute force attacks)

暴力对于半导体硬件和密码来说是另一种意思。对于密码,暴力攻击是对系统尝试数量众多的密钥。通常是使用高速计算机来寻找匹配的密钥。 一个例子是微控制器中的密码保护设置。以TI的MSP430为例,密码本身长度为32字节(256位),抵挡暴力攻击已经足够了。但密码分配在与处理器中断矢量相同的存储器地址。那么,首先减少存储器内矢量一直指向的区域。然后当软件被更新时,只有小部分的密码被修改,因为大部分中断子程序指向的矢量是相同的地址。

结果是,如果破解者知道早前密码中的一个,就很容易做系统的搜索,在合理的时间内找到正确的密码。 暴力攻击也可用在ASIC或CPLD的硬件设计来实现。这种情况下,破解者使用所有可能的逻辑组合到元器件可能的输入端并观察所有输出。这种方法也称为黑箱分析(Black-box analysis),因为破解者不知道被测试元器件的情况。通过所有可能的信号组合,尝试获得元器件的功能。这种方法对相对小的逻辑器件很有效。另一个问题是破解者使用的ASIC或CPLD有触发器,故输出将可能是当前状态或输入的状态。但如果预先检查并分析信号,搜索的范围可以显著减少。例如,时钟输入,数据总线和一些控制信号是很容易认出的。

另一种可能的暴力攻击,对很多半导体芯片有效,是将外部高压信号(通常是两倍于电源电压)加到芯片引脚上,来试图进入工厂测试或编程模式。事实上,这些引脚用数字万用表很容易发现,因为它们没有保护二极管到电源脚。一旦发现对高压敏感的引脚,破解者就可以尝试可能的逻辑信号组合来加到别的引脚上,找出用于进入工厂测试或编程模式的部分。 破解者也可用元器件的通信协议来找出设计者嵌入在软件中的测试和更新用得隐藏功能。

芯片制造商经常提供给后期测试用得嵌入硬件测试接口。如果这些接口的安全保护没有适当设计,破解者很容易利用它来读写片上存储器。在智能卡中,这些测试接口通常位于芯片电路之外,并在测试后从物理上除去。 任何安全系统,不管软件和硬件,在设计上都可能有缺陷,对于破解者来说都是机会,暴力攻击有可能找到它。小心设计安全保护系统,进行适当的评估,可以避免很多问题,并使得这些攻击事实上不可行。

四、功耗分析(Power analysis)

一个运算设备的功耗取决于它当前的状态。依照CMOS晶体管的原理,各部分动态时的功耗比静态的要大。当输入电压加到反向器上,会引起一个晶体管短路,这个晶体管电流的增加比静态消耗的寄生漏电要大得多。在电源线上加个10-20欧的电阻,就可以测量电流的波动。为达到更好的效果,需要使用至少12位精度和50MHz采样速度的模数转换器。

这些获得的参数可以用来区别处理器的不同指令并估计总线上同时翻转的位数。 通过平均多次重复同样操作的电流,即使是没有通过总线的很小信号也能区别开。有些信号如移位状态特别有用,因为很多密码的密钥产生算法使用移位操作来逐一移出单个密钥倒进位标志。即使状态位的变化不能直接测量,它们通常会改变指令次序或微码的执行,这会导致功耗的明显变化。

不同指令导致不同级别的指令解码和运算单元的活动,可被清晰地区别开,故运算部分能被推测出。处理器的不同单元在时钟沿相关的不同时间里有独有的开关状态,能被高频仪器分离出来。

有多种不同的功耗分析技术用在破解密码算法上。整个分析过程是相对简单的,只需要标准的现有的廉价仪器设备。 功耗分析技术主要有两种:简单功耗分析(SPA:Simple Power Analysis)和差分功耗分析(DPA:Difference Power Analysis)。SPA是在密码或别的安全相关操作时直接观察功耗,可以得知设备运行时的信息如密钥资料。如果破解者知道密码算法,很容易通过观察处理器指令次序,特别是移位条件转移,找到一些位的信息。如果算法或逻辑运算的结果很容易被看出,如进位状态,零或负标志,就可以获得更多的信息。

DPA是种更有效的技术,因为破解者不需要知道密码算法是如何执行的。它使用静态分析和已知密码运算的大量功耗迹线来获取隐藏信息。用统计方法鉴别功耗的微小区别,可用来恢复密钥中的单个的位信息。 功耗特性当然包括噪声部分。额外的噪声可以通过减少获取信号的探针长度并小心使用测量仪器来降低它。测量接在地线上的电阻的功耗有一些优势。首先,减少了噪声电平。其次,可以用示波器的探头直接测量信号,因为大部分探针站有公共的地线与外部电源地相连。为了增加信噪比,可以通过提高平均采样数来获得。

有源探头能降低输入电容,增加对输入信号的带宽。一种方法是用高速低噪声的运放来构建相对简单的探头,另一种是用很短的同轴电缆直连到示波器的输入端。在这些情况下,探头的输入电容显著减少。

对现有的功耗分析步骤进行了改进。这是一种新的方法,尚未有类似的。我们用铁芯变压器来取代连到电源或地的电阻,那样波形就有点不一样,因为信号的直流成分丢失了,同时又有些有利条件。常用的方法对直流电流几乎没有什么限制。但对于10欧电阻来讲100mA的电流意味着有1V的电压降,那可能中断微控制器的正常操作。

减少这个电阻可以解决这个问题,但会使得难以识别功耗的微小变动。使用变压器后,不需要使用昂贵的有源探头,标准的无源探头就可以给出几乎相同的结果。如果信号太小,调节二次侧的线圈就可以增加振幅。变压器也担当无源滤波器的角色,如波形,同样的处理器指令对电阻和变压器所测量到的波形有不同的影响。那可以通过对获得的信号进行处理。为了攻击获得成功,需要采集数千的样本,然后快速分析处理所展现的秘密。

最近,芯片设计上已考虑这种攻击,并将使得这种攻击方法更难获得成功。

五、噪声攻击(Glitch attacks)

噪声攻击是快速改变输入到微控制器的信号,以影响它的正常运行。通常噪声是叠加在电源上或时钟信号上,但噪声也可以是外加的短暂电场或电磁脉冲。在离芯片表面数百微米处放置两根金属针,然后加上少于1微秒的数百伏电压的窄脉冲,晶圆衬底会感应出一个电场,使得邻近晶体管的阈值电压发生变化。最近出现一种改进的方法:使用几百圈金属线绕在微探针的针尖构成一个小型电感。当电流进入线圈会产生磁场,针尖将集中磁力线。

每个晶体管和与它相连的线路构成有时延特性的RC电路。处理器的最大可用时钟频率取决于该电路的最大延迟。同样的,每个触发器在接收输入电压和由此引致的输出电压之间有个特征时间窗口。这个窗口由给定的电压和温度来确定。如果用时钟噪声(比正常的时钟脉冲要短得多)或电源噪声(电源电压的快速波动)将会影响芯片里的某些晶体管,导致一个或多个触发器进入错误状态。通过改变参数,处理器会被导致执行许多完全不同的错误指令,有时甚至是不被微码支持的。经管我们不会预先知道何种噪声会导致何种芯片的何种错误,但它能相当简单地进行系统的搜索。

1、时钟噪声攻击(Clock glitches)

时钟信号的噪声攻击在目前是最简单的,且相当实用。实际应用中的噪声通常用来取代跳转条件并试验先前的测试指令。可以在安全密码问询处理时创建一个攻击窗口,简单预防执行这些指令。指令噪声也能用来扩大循环的时间。如,串口子程序在输出缓冲后再读更多的内容;或在密钥操作时减少循环次数来传一个弱的密码。 为获得噪声,时钟需要临时增加一个或大于半个周期,有些触发器在到达新状态之前就获得输入。时钟噪声通常针对处理器的指令流。对硬件执行安全保护的微控制器没有什么效果。实际中,仅使用时钟噪声来攻击微控制器或智能卡的软件程序接口。

这类保护的破解是相对容易的。如处理器在循环里只执行一个指令,攻击时可用不同的时钟噪声导致处理器误操作。不需要小心地与时钟信号同步,只需要随机制造噪声就可在数次攻击内成功。插入噪声是相对容易的,无需使用外部发生器,瞬间短路晶振即可。当谐振器在不同的泛音上产生震荡会发出很多噪声。大部分情况下需要在确定的时钟周期内获得所需结果,在这种情况下用信号发生器更好。

使用时钟噪声来攻击某些微控制器也许是很困难的。例如德仪的MPS430微控制器在内部RC震荡器工作的启动模块。很难与内部时钟同步,攻击时很难估计精确的时间。一些智能卡在处理器指令流里会随机插入延迟,使得攻击更为困难。使用功耗分析会有帮助,但要求非常昂贵的设备来实时获得参考信号。

2、电源噪声攻击(Power glitches)

电源供应电压的波动会导致晶体管阈值电平的漂移。结果就是一些触发器在不同的时间里采样它们的输入,或读出错误的安全熔丝的状态。 通常用瞬间增加电源电压或电压跌落来制造噪声,一般在10个时钟周期内。电源噪声通常用在微控制器的程序接口上,能影响处理器运行或硬件安全电路。一般地,弱点比时钟噪声更难找到并利用,因为对于时域参数,振幅,上升/下降时间都是变量。

一个例子是上例提到的攻击MC68C05B6.如果在执行AND $0100指令时电源电压减少50-70%,处理器从EEPROM中取出的值是FFh而不是实际的值。这会对应熔丝未加密状态。窍门是小心计算执行时间来减少电源电压,否则处理器会停止运行或进入复位状态。这种任务并不难,复位后目标指令在第一个一百周期内被执行。破解者可以使用矢量发生器或构建一个自己的噪声源。

另一个是微芯的老旧的PIC16F84。芯片的擦除操作会解除安全保护。但同时会芯片上程序和数据存储器中的内容。安全保护电路在硬件设计上是在安全熔丝复位之前擦掉存储器。但我们发现在芯片擦除操作时电源电压几微秒内增加到大约10V,会中断存储器擦除操作,但安全熔丝正常完成复位,这使得有可能读出存储器里的内容。如此高压需要谨慎使用,如果时间过长会损伤芯片。新版本的PIC16F84A增加了防欠压和过压攻击的能力。如果电源电压低于3V或6V,通过编程接口的任意修改存储器的操作会被立即中断。

不是一直需要电源噪声超过电源电压范围的规格。例如,PIC18F84A微控制器,保护机制可以阻止在芯片擦除操作开始后使用大于50mV的噪声。那会导致中止程序存储器的擦除操作但不会擦掉熔丝。

上述例子表明噪声攻击时无需特殊工具就有很好的效果。智能卡里有时钟监控电路但极少微控制器有。

六、数据保持能力分析(Data remanence)

处理器一般会把密钥保存在静态RAM里,如果元器件被篡改就会掉电,RAM内容丢失,从而保护密钥不被窃取。众所周知的是在低于零下20度时,SRAM里的内容会“冰冻”。很多元器件把温度低于这个阈值视为发生篡改事件。我们做了一些实验来确定现代SRAM数据保持能力与温度的关系。我们的实验表明传统的思维不再有效。即使在高温下,数据保持能力也是个问题。数据保持能力不仅仅对SRAM有影响,对DRAM, UV EPROM, EEPROM和闪存也有影响。结果是,仍然可以从已擦除的存储器中获得一些信息。

这会给安全设备带来很多问题。 安全工程师都很关注断电后SRAM器件能保持数据的时间。原因如下:很多产品使用密钥或类似的方法进行加密和别的安全相关的计算,需要不能被读出或改变。最普遍的解决方法是把安全密钥放在带篡改传感器的易失存储器中。一旦检测到发生篡改,易失传感器会掉电或短路到地。但如果数据保留时间大于破解者打开元器件并对存储器上电的时间,那保护机制就被摧毁了。

在二十世纪八十年代,发现低温能将SRAM的数据保存时间增加到几秒甚至几分钟。对于那个时候的元器件,发现零下20度就可以增加数据保存时间,并且会随着温度的降低而增加保持的时间。有些就增加了温度传感器,温度低于零下20度就触发篡改事件,立即清零存储器。本次试验是重复这个工作,察看2000年后的产品是否也有此特性。

另一个需要关注的是即使部分内容已被破坏,安全信息也能被复原。假设破解者获得了n=128位密钥中的m=115位,也就是90%的信息。他可以通过搜索n!/(m!(n-m)!=128!/(115!13!)=2.12*1017~258个可能的密钥。通过1万台电脑,每台每秒进行10亿次搜索密钥的操作,破解者只需6个小时就能搜遍所有密钥。如果只有80%的信息,也就是知道128位密钥中的103位,那就有2.51*1026~288种可能。几乎增大了一百倍,破解者要花百万年来搜索密钥,故认为均匀的128位密钥不能被恢复。

来源:张飞实战电子

围观 18

我们正在见证,我们人生中最惊心动魄的一段历史。美国也成为全球除中国以外第5个确诊病例数过万的国家,其他4国分别为意大利、伊朗、西班牙、德国。 全球疫情升级,测温方案也在升级。

为何做一把合规的额温枪困难重重?

红外额温枪利用“普朗克黑体辐射定律”,吸收人体的红外辐射来测温。国标要求,16°C到35°C范围内,测温精度达到±0.2℃即可。但额温枪测量的并非理想信号,还需要考虑客观误差、环境影响等因素。所以硬件设计时,要求达到±0.1℃甚至更高的精度。

图为CS32A039红外额温枪单芯片方案示意图

信号链MCU——CS32A039

考虑到硬件的固定误差可以在生产中校准,实际测量误差主要来源于放大器失调电压温漂、增益误差温漂、ADC测量误差、及基准的温漂。所以零漂移放大器、高性能ADC和低漂移基准是红外测温枪设计的关键。为解决痛点,芯海科技推出了新一代信号链MCU——CS32A039,实现了单芯片红外额温枪方案。

图为CS32A039的框图

高精度&高集成度

CS32A039集成了24位全差分ΣΔADC、零漂移放大器、低温漂参考电压/LDO,无需额外的外围器件,足以满足高精度红外测温的需求。

芯片还集成12位高速SAR-ADC、温度传感器、电池电压测量通道,可同步测量环境温度、电池电压等参数。

除此之外,CS32A039的信号链IO还支持红外热释电、压力、惠斯通电桥等多种传感器,实现人体感应、压力触控、气压检测等多种功能。

图为高精度红外测温示意图

可靠性高,易过认证

芯片符合IEC60730的可靠性标准,抗干扰能力强,支持Memory硬件校验、安全时钟等多种可靠性措施,可以满足工业控制、医疗等应用场合的可靠性要求。

生态成熟,开发方便

芯片选用ARM Cortex-M0内核,频率48MHz。还包括5通道DMA,内置8KB SRAM和64KB Flash,CRC-32计算模块和96位UNID,处理能力强。开发者可以使用芯海科技32位通用MCU的开发资源,以及网上海量的开发资源,实现快速、灵活的开发和调试。

图为信号链MCU开发套件

外设丰富,扩展性好

芯片集成多个高性能高级定时器、实时时钟(RTC)、PWM、USART、高速SPI、主从I2C等丰富的数字外设,以满足多样的控制、通讯需求。

强大的双ADC信号链MCU,不止测温

疫情终将过去,发展才是根本。相比友商,CS32A039最大的特点就是双ADC架构(高速ADC和高精度24位ADC),以及32位的M0带来的处理能力。除了存储空间大,成熟的开发环境能让更多人轻松上手信号链MCU。强大的芯片加上芯海的算法优势和高级别的产业链安全等级,势必会为全球抗疫物资的补给提供有力的保障。

精准测温绝不是在疫情时期的昙花一现,CS32A039的优势战场不仅在红外额温枪,“志在产业升级”不是一句空话。芯海全系列信号链MCU将在AIoT中发挥“精准感知+精准控制+精准一站式服务”的作用。

有意请联系(微信同号)
陈先生:17190417123
李先生:18666193687

来源:芯海科技

围观 8

MCU功耗明明应该只有176nA,可是测出来的硬是达到了700mA!简直是不能忍啊,想死的心都有了。

平常我们在使用MCU低功耗时经常会出现实际功耗比理论功耗偏差较大,如在某些低到微安级的功耗模式,而我们设计的低功耗怎么测都是毫安级的,电流竟然能够高出理论几百到上千倍,遇到这种情况千万不要怕,只要认真你就赢了。

下面列出在设计低功耗时需要注意的五点。

1、掐断外设命脉——关闭外设时钟

先说最直观的,也是我们都比较注意的方面,就是关闭MCU的外设时钟。对于现在大多数的MCU,其外设模块都对应着一个时钟开关,只要打开这个外设时钟,就可以正常使用该外设了,当然,该外设也就会产生相应的功耗;反之,如果想要让这个外设不产生功耗,一般只需要关闭该外设时钟即可。

2、让工作节奏慢下来——时钟不要倍频

除了外设模块功耗消耗之外,还有一个功耗大户,那就是PLL和FLL模块。PLL和FLL主要是用来对原始的时钟信号进行倍频操作,从而提高系统得整体时钟,相应的其功耗也会被提上去。所以在进入低功耗前,需要切换时钟模式,旁路掉PLL和FLL模块,等到MCU唤醒之后再把时钟切换回去。


3、围堵涓涓细流——注意IO口的电平状态

如果认为只要关闭外设时钟就能够保证外设不在耗电,那你就真的太年轻了。如果IO口没有做好处理的话,它就会在暗地里偷走功耗,而你却浑然不知。具体原因是这样的,一般IO内部或者外部都会有上下拉电阻,举个例子如下图所示,假设某个IO口有个10KΩ的上拉电阻,根据欧姆定律,此引脚就会消耗3.3V/10K=0.33mA的电流,假如有四、五个这样的IO口,那么几个毫安的电流就这样贴进去了,太可惜了。

所以在进入低功耗之前,请逐个检查IO的状态:

  • 如果该IO口带上拉,请设置为高电平输出或者高阻态输入;
  • 如果该IO口带下拉,请设置为低电平输出或者高阻态输入;


4、睦邻友好合作——注意IO与外设IC的统筹

IO口的上下拉电阻消耗电流这一因素相抵比较明显,下面咱们来说一个不明显的因素:IO口与外部IC相连时的电流消耗。假如某个IO口自带上拉,而与此IO相连的IC引脚偏偏是自带下拉的,那么无论这个引脚处于什么样的电平输出,都不可避免的会产生一定的电流消耗。所以凡是遇到这一类的情况,首先需要阅读外设IC的手册,确定好此引脚的状态,做到心中有数;然后再控制MCU睡眠前,设置好MCU的IO的上下拉模式及输入输出状态,要保证一丝儿电流都不要被它消耗掉。

5、断开调试器连接——不要被假象所迷惑

还有一类比较奇特,检测出来的电流消耗很大,可实际结果是自己杞人忧天,什么原因呢?是因为在测试功耗的时候MCU还连着调试器呢!这时候大部分电流就会被调试器给掳走,平白无故的让我们产生极度郁闷的心情。所以在测试低功耗的时候,一定不要连接着调试器,更不要边调试边测电流。

本文转自:ZLG立功科技,转载此文目的在于传递更多信息,版权归原作者所有。

围观 23

截止目前,华大半导体MCU事业部累计额温枪项目订单量已近千万颗!为响应广大额温枪制造企业的需求,华大半导体MCU事业部同期组织了一场主题为【额温枪用MCU及方案介绍】在线视频直播技术培训。客户踊跃参加,介入直播的账号超过400个,实际观看人数过千人!


随着新冠状病毒全球的蔓延,对额温枪的市场需求将越来越大。额温枪市场需求量井喷,而市面上的芯片方案却远远无法满足供应需求。针对这种现状,MCU事业部在疫情发生的第一时间,迅速成立“防疫产品紧急项目部”,由华大半导体高级副总经理、MCU事业部总经理谢文录牵头,一线指挥,下设“客户交付”、“方案开发”、“客户导入”三个小组。项目部争分夺秒,全力组织协调市场、销售、研发、工程、供应链等部门,抓客户、开发方案、帮助客户调试、组织及时交付等工作;及时响应客户多种紧急的选型需求,及时更新相关技术方案,争分夺秒,调动一切资源,全力支持客户研发工作。同时,为了解决了市场上外置ADC方案带来的供货难题,“方案开发”小组设计出内置ADC方案。该方案一经推出,便受到额温枪制造企业的极力追捧!

华大半导体自主研发的HC32L系列超低功耗MCU芯片产品,具有高整合度、高抗干扰、高可靠性和超低功耗的特点,曾获得“2019年度CEC集团科技进步一等奖”,可广泛应用于额温枪等防疫重点医疗电子产品。而基于HC32L系列的额温枪方案,采用内置集成ADC,及通用型号外围元器件,具有生产物料容易筹集的巨大优势,特别适合当前疫情条件下的快速组织生产,得到了广大客户的肯定和认可!

额温枪方案示意图

华大MCU将积极发挥企业优势,为防疫产品供应足量货源,以帮助全球抵御疫情,为坚决打赢疫情防控人民战争、总体战、阻击战贡献一份力量!

来源:华大半导体有限公司

围观 24

MCU整体工作流程可总结如下:

上电——>主时钟起振——>启动代码——>用户程序(main函数)。

对于我们应用开发来说,大部分工作重点是在应用程序编写这块。特别是高级MCU的出现,如ARM系列的STM32、LPC等32位MCU,以及芯片原厂的完善底层代码,启动代码已经固化在芯片内部flash(称为BootLoader),或者已经提供完整的汇编启动源码。因此,启动过程这块,我们比较陌生,但基本的原理还需了解,不排除面试或者使用到实时系统(RTOS)时需要修改启动汇编代码。

MCU上电(复位)时,从固定的地址启动,一般是地址0x00000000,如ARM7;个别特殊的如STM32默认启动地址为0x8000000(flash区启动)。启动过程主要完成两部分工作,一个是硬件执行环境,如中断向量表、寄存器、看门狗等,另一个是软件环境,如C库环境、ZI(未初始化的内存变量)等。

一、硬件环境工作

1.初始时钟
初始化内核时钟,主时钟,各个外设的时钟。

2.关闭看门狗
看门狗是用来监控应用程序的异常跑飞而复位CPU,在初始化阶段,由于没有“喂狗”这一动作,有可能导致CPU不断复位,因此,首先会关闭看门狗,初始化完,再开启。

3.建立中断向量表
中断向量表,中断源的识别标志,可用来形成相应的中断服务程序的入口地址,或者中断服务程序入口地址的偏移量和段基值。CPU利用中断向量表转入中断服务程序处理相关事务。

4.初始化堆栈寄存器
堆栈的作用一个就是保存现场(上下文),如函数调用或者中断发送时,将当前执行地址压栈,调用完成再返回此处执行程序。另一个作用就是保存参数,如临时变量。因此,在启动阶段需初始化堆栈寄存器、堆栈的大小、起始地址等。

5.内存初始化
选择内部或者外部RAM。

二、软件环境工作

1.把RO,RW从它们的加载域复制到它们的运行域中去。

2.初始化(清零)ZI域。

3.初始化堆栈指针

4.初始化C库环境
包括C库所需的内存空间、程序执行所需资源、C库初始化。

三、CortexM3启动

CortexM3有3种启动方式
1、BOOT1=1BOOT0=1,中断向量表定位于SRAM区,即起始地址为0x2000000,同时复位后PC指针位于0x2000000处。
2、BOOT1=xBOOT0=0,中断向量表定位于FLASH区,即起始地址为0x8000000,同时复位后PC指针位于0x8000000处。
3、BOOT1=0BOOT0=1,中断向量表定位于内置Bootloader区,此时可通过串口下载程序的二进制文件到flash区。

而Cortex-M3内核规定,起始地址必须存放堆顶指针,而第二个地址则必须存放复位中断入口向量地址,这样在Cortex-M3内核复位后,会自动从起始地址的下一个32位空间取出复位中断入口向量,跳转执行复位中断服务程序。对比ARM7/ARM9内核,Cortex-M3内核则是固定了中断向量表的位置而起始地址是可变化的。即是对于flash启动来说(正常工作也是flash启动),0x8000000地址存放的是栈顶地址__initial_sp,0x8000004地址存放的是复位中断向量Reset_Handler入口地址(STM32使用32位总线,存储空间为4字节对齐);在编写多段程序时,偏移地址空间需注意,如编写一个BootLoader,从BootLoader到应用程序段的相互跳转。

参考
[1]
http://blog.csdn.net/whiteshark1991/article/details/6635296

版权声明:本文为CSDN博主「acuity_」的原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_20553613/article/details/79568441

围观 14

世界正在快速进入万物互联的IoT时代,智能手机、智慧家庭、智能网联汽车、智慧城市、工业物联网、可穿戴设备等已成为公众耳熟能详的词汇。小到家庭中的智能门锁,大到城市基础设施中的“智慧电灯杆”,都属于IoT设备的范畴。尽管IoT的具体应用五花八门,包罗万象,但对于IoT边侧设备的要求却呈现出相当的一致性,即:低功耗、更强的计算能力、安全性和连接性。

这对IoT边侧设备的设计提出了全新的挑战。而为这些设备选择最适合的处理器,则是诸多挑战中的重中之重。传统的微控制器(MCU)诞生在“前IoT时代”,主要是为了满足某个或某些市场应用需求而设计,虽具有较强的通用性,但并非专为IoT而打造,因而难以同时满足上述大部分或全部需求,比如兼顾更强的计算能力和低功耗。而应用处理器(Application Processor)则主要适用于运行移动操作系统的相对复杂的多功能设备,如智能手机和智能网联汽车等。

虽然与多核MCU一样可以拥有多个Arm内核,但应用处理器通常还会包含几个GPU、缓存、存储控制器等,构成一个大型的SOC,以便管理更复杂的系统并处理多种应用需求,其成本和功耗对于大量功能相对简单的非核心IoT边侧设备而言,是难以承受的。可见,无论是通用MCU还是应用处理器都不是IoT设备的理想选择,这一巨大的新兴市场需要根据其需求量身定制的IoT专用MCU。

传统的应用处理器和MCU难以满足IoT设备的需求

赛普拉斯早已预见到这一市场机会,利用其在MCU和可编程片上系统(PSoC)领域的多年积累,于2017年推出了专为IoT边侧设备而打造的MCU -- PSoC 6系列,既能够提升IoT智能设备的计算能力和安全性,又不必牺牲功耗和成本。PSoC 6采用超低功耗40纳米SONOS工艺,拥有Arm®Cortex®-M4 和 M0+双核架构,并具有可选的有线和无线连接能力、领先业界的CapSense电容感应技术,以及可编程外设。同时,它还集成了基于硬件的安全执行环境、安全数据存储和传输加密功能。

PSoC 6双核MCU系统架构

PSoC 6具有多种功耗模式,通过动态调节工作电压和工作频率,可同时兼顾设备对计算能力和功耗的要求。其双核架构还可以用M0+内核处理非计算密集型工作,同时使耗电较高的高性能M4内核处于休眠状态,从而达到更高的能效。

PSoC 6的五种功耗模式

PSoC 6 可同时支持多种安全环境,而无需使用外部存储器和安全元件。用户可对其安全需求进行自定义,并选择不同的片上安全存储器大小,还可通过集成的硬件安全处理器执行包括DES//TDES/AES对称加密和RSA/ECC非对称加密在内的业界标准加密算法。此外,PSoC 6还提供了内部安全存储空间,可存储固件、应用数据和各类安全资产(如秘钥等)。

PSoC 6基于硬件的安全执行环境在无线或有线连接的环境下均具备较高的安全性

PSoC 6提供了丰富的产品组合,可以适应不同的IoT应用需求。其中包括M4单核的PSoC 61基础系列、M0+/M4双核的PSoC 62高性能系列、集成BLE并支持WICED WiFi和蓝牙的PSoC 63连接性系列、具有可信任根的PSoC 64安全MCU系列。各系列中均有部分产品已经量产,还有更多的产品处于概念、研发、样片的阶段,预计2019年内将有多达10几款产品可提供给客户进行评估和生产。

PSoC 6各产品线

经过两年的发展完善和市场检验,PSoC 6现已成为IoT专用MCU中的佼佼者,在可穿戴设备、智慧家庭、健康管理等领域获得了市场的广泛关注和认可,是IoT边侧设备开发者的理想之选。

PSoC 6获得美国《EE Times》2017年度电子产品创意奖和《Electronic Products》2017年度产品奖

为便于您进行基于PSoC 6的IoT产品开发,赛普拉斯为您准备了多种软硬件开发工具。通过免费的、拥有图形用户界面的PSoC Creator集成开发环境,用户只需在设计图中拖放预先定义好的各种模拟和数字“元件(Component)”,并进行简单的配置,即可很方便地进行开发,大大加快您的开发进度。目前,PSoC Creator可提供多达150种预先定义并验证好的外设元件。使用这些元件,产品开发就像搭积木那样简单。

PSoC 6功能模块配置示意图

来源:Cypress赛普拉斯半导体

围观 14

页面

订阅 RSS - MCU