低功耗

  •   佐臻推出的Sigfox模块搭载意法半导体低功耗蓝牙BLE系统单芯片以及Sub-1GHz收发器,具有高能效、低耗电、市场价格有竞争力等特色。

  •   此模块可应用于物联网智能节点,在全球范围内覆盖广域、低功耗无线网络Sigfox。

意法半导体与台湾模块设计供应商佐臻股份有限公司(Jorjin Technologies Inc)于近日联合推出Sigfox和低功耗蓝牙(BLE)双功能无线模块。

采用了意法半导体的BlueNRG-1低功耗蓝牙(BLE)系统单芯片(System-on-Chip, SoC)和S2-LP Sub-1GHz无线收发器的领先技术,佐臻WS211X系列Sigfox与低功耗蓝牙(BLE)双功能模块因让佐臻的的模块能够提供创新无线通信技术和强调节能的物联网应用。

佐臻推出的Sigfox模块内设意法半导体超低功耗Arm® Cortex®-M0 MCU 平台,可独立支持系统运行。低功耗蓝牙(BLE)和Sigfox低功耗广域物联网(LPWAN)的结合可同时在物联网系统内支持数种重要功能,例如:固件可透过低功耗蓝牙(BLE)下载(Over-the-air,OTA)进行更新,这个功能若是在仅支持Sigfox单模模块的状况下无法完成。另外,利用Sigfox与低功耗蓝牙(BLE)双功能模块,Sigfox可以远距离连接及同时支持蓝牙低功耗(BLE)近距离传输,以达成联网设置安装及维修的诸多设定,或是针对如蓝牙Beacon定位等不同应用的结合,通过该模块进行资产追踪。

佐臻董事长梁文隆表示:“很高兴我们公司的第一颗低功耗广域网络Sigfox与低功耗蓝牙(BLE)双功能模块能获得认证,我们感到非常荣幸。意法半导体Sigfox团队的支持,对我们有很大帮助,我们对未来双方的长期合作非常期待也很有信心。”

意法半导体模拟、MEMS传感器产品部低功耗射频总监Maria Rosa Borghi进一步表示:“高能效、低功耗的双功能模块问世和成功得到Sigfox的认证,对我们和佐臻的合作是非常重要的里程碑。产品设计者如今可以用最领先、创新的设计方案,来构建市场接受度高且支持多种无线的低功耗联网产品。”

Sigfox生态系构建总监Raouti Chehih表示:“我们很高兴欢迎佐臻的加入,以持续扩张Sigfox生态系统,并再次和意法半导体携手加速推广物联网的各类应用。佐臻模块成功取得认证,可以让我们加速发展Sigfox连网设备,以快速跟上持续增长的市场需求。”

佐臻WS211X系列模块的开发板采用Arduino界面,便于快速开发,并且可以与意法半导体MEMS动作传感器、环境传感器或光学传感器(ToF)等Arduino开发板直接连接。软件开发工具包现已完成,便于开发者针对WS211X系列模块及使用意法半导体传感器开发板做快速了解。此外佐臻也提供了AT指令表,便于客户测试模块的低功耗蓝牙(BLE)和的低功耗广域网Sigfox功能。

编者按:

佐臻新的模块目前已为量产阶段,且产品备有两个版本:WS2118-00已通过Sigfox RCZ1(欧洲、中东、南非)和RCZ3(日本)的P1认证。 WS2119-A0则是通过RCZ2(美国、墨西哥、巴西)和RCZ4(澳洲、纽西兰、中国台湾、中国香港、新加坡、阿根廷)的P1认证。

围观 341

Semtech Corporation日前宣布:推出其新一代LinkCharge LP(低功耗)无线充电平台。新平台将接收器和电池充电器集成在同一块芯片中,使其非常适合于极小尺寸的应用,包括可穿戴设备,平板电脑键盘和基于LoRa的传感器。

Semtech发布新一代LinkCharge LP(低功耗)无线充电平台

新款芯片是一个大小为2.3mm×2.3mm的、集成了锂离子或锂聚合物电池充电器的全集成式无线接收器。LinkCharge LP无线充电平台提供带有开关的系统轨引脚,可同时为电池充电并为系统供电。该无线充电器可提供高达250mA的充电电流,并且可以与Semtech的评估模块(EVM)配合使用。此外,LinkCharge LP能够为多个基于LoRa的传感器充电,而无需连接电线。

“Semtech的新一代LinkCharge LP无线充电平台将继续提供使用先进技术的业界领先解决方案,”Semtech无线和传感产品事业部电源和高可靠性产品线经理Francois Ricodeau表示。“凭借将接收器和充电器集成在一块芯片中,新型LinkCharge LP提供了一套完整的系统解决方案,可以改善物联网传感器的可用性,并有助于LoRa技术的发展和采用。”

LinkCharge LP即刻由Semtech开始供货。EVM的数据手册可登录 www.semtech.com 获取。

新一代LinkCharge LP的应用:

  •   可穿戴设备(即手表、手环、健身臂带、智能珠宝、智能眼镜)
  •   健康监测仪和小型医疗应用
  •   电动牙刷
  •   耳机和助听器
  •   平板电脑键盘和触控笔
  •   基于LoRa的传感器

来源:http://www.c114.com.cn

围观 298

MAX32660和MAX32652基于低功耗Arm Cortex-M4,是可穿戴传感器和电池供电应用的理想选择

Maxim宣布推出超低功耗MAX32660和MAX32652微控制器,帮助物联网(IoT)传感器、环境传感器、智能手表、医疗/预防性健康可穿戴设备以及其他尺寸受限的设备延长电池寿命、增强功能。这些微控制器基于Arm® Cortex®-M4 FPU处理器核,针对功耗严格受限的高端应用设计。 Maxim的达尔文系列MCU结合了可穿戴电源管理技术,提供同等产品中最大存储容量,及业界最先进的嵌入式安全技术。

MAX32660技术细节: https://www.maximintegrated.com/cn/products/microcontrollers/MAX32660.html
MAX32652技术细节: https://www.maximintegrated.com/cn/products/microcontrollers/MAX32652.html
下载高清图片:
https://www.maximintegrated.com/content/dam/images/newsroom/2018/MAX3266...
下载MAX32660方框图:
https://www.maximintegrated.com/cn/products/microcontrollers/MAX32660.ht...
下载MAX32652 方框图: https://www.maximintegrated.com/cn/products/microcontrollers/MAX32652.ht...
了解更多Maxim达尔文系列MCU产品: https://www.maximintegrated.com/cn/products/microcontrollers/low-power-m...

MAX32660:以最小尺寸提供最强处理能力

对于需要为智能IoT应用设计更复杂算法的工程师来说,存储容量、器件尺寸、功耗和处理能力至关重要。现在的方案呈现出两个极端——拥有优异的功耗指标,但处理和存储能力有限;或者拥有强大的处理和存储能力,但功耗很大。MAX32660为设计者提供了最佳平衡,其既能访问足够的存储空间支持高级算法的运行,又能管理传感器 (256KB闪存和96KB SRAM) 。器件也拥有优异的功耗指标 (低至50uW/MHz)、极佳的小尺寸 (1.6mm x 1.6mm,WLP封装),提供高性价比。工程师现在能够构建更智能的传感器和系统,且尺寸更小、价格更低,同时拥有较长的电池寿命。

MAX32652:低功耗、可扩展存储器

随着IoT设备越来越智能,系统开始需要更多的存储器和附加的嵌入式处理器,这些器件不但昂贵且耗电大。MAX32652为设计者提供了替代方案,使其能够充分利用嵌入式微控制器的低功耗以及应用处理器的强大处理能力。MAX32652片上集成3MB闪存和1MB SRAM,工作频率高达120 MHz,为IoT设备提供高度集成的解决方案,能够实现更高的处理能力和智能化管理。集成高速外设,例如高速USB 2.0、安全数字(SD)存储卡和控制器、薄膜晶体管(TFT)显示屏以及完整的安全引擎,使MAX32652可以充当IoT设备的高级大脑,运行功耗极低。此外,器件能够通过HyperBus或XcellaBus从外部存储器执行代码,使得MAX32652可满足未来更多的设计需求,为设计者提供先进的可扩展存储器架构,满足智能设备日益增长的预期需求。

主要优势

• 超低功耗:最低功耗的有效模式,提供先进的电源管理;低功耗SRAM保持模式,延长电池寿命
• 高度集成:集成高速外设,包括SD存储卡和控制器、高速USB 2.0、TFT显示屏及外部存储器
• 安全性:充分利用业界最佳的Maxim安全工具箱,为IoT设备搭建安全传感器方案

评价

“这些微控制器提供了先进的功能,使设计者能够摆脱当前开发应用的局限。”Maxim Integrated微处理器与安全产品事业部总监Kris Ardis表示:“在过去,设计者必须优先考虑以下三个关键特性中的两个:更低功耗,更高性能或更低系统成本。而利用Maxim的低功耗微控制器,他们现在可以兼顾三者。”

供货及价格

MAX32660和MAX32652均可通过Maxim官网及特许经销商购买

提供MAX32660EVKIT#MAX32652EVKIT# 评估板,均可通过Maxim官网购买

围观 273

在工作过程中,遇到这样一个产品,它基于 Cortex-M7 内核的 STM32F769 芯片,同时使用了 FreeRTOS 实时操作系统。

由于该产品使用电池供电,因此有着低功耗的需求。

接下来,我将简单描述一下 STM32 与 FreeRTOS 各自的低功耗特性,以及在配合使用时如何去实现产品的低功耗。

一、STM32F769 芯片的三种低功耗模式

STM32F769 支持三种低功耗模式,它们分别是:SLEEP、STOP和STANDBY,其省电能力依次增强。

• SLEEP

在 SLEEP 模式下,只有 Cortex-M7 内核停止了工作,而外设仍然在运行。

在进入 SLEEP 模式后,所有中断均可唤醒 MCU,从而退出 SLEEP 模式。

• STOP

在 STOP 模式下,内核停止工作,并且所有的时钟(如 HCLK, PCLK1, PCLK2 等)也停止工作,即所有外设停止工作,这里有一点要特别注意,此时 SYSTICK 也会被停掉。当然,我们产品中的 RTC 还在继续运行,因为它的时钟源为外部的 32.768K 晶振。

在进入 STOP 模式后,只有外部中断(EXTI)才能唤醒 MCU(由于 RTC 中断挂在外部中断线上,所以 RTC 中断也能唤醒 MCU)。

• STANDBY

在 STANDBY 模式下,内核、所有的时钟、以及后备 1.2V 电源全部停止工作。

从 STANDBY 模式中唤醒后,系统相当于执行了一次复位操作,程序会从头来过。

综上所述,很明显地,在STM32 提供的这三种低功耗模式中,我们只能使用其中的 SLEEP 和 STOP 这两种,STANDBY 不适用。

关于 STM32769 更详细的低功耗内容介绍,请查看 Reference Manual 的4.3节 – Low-power modes.

二、FreeRTOS 的低功耗实现

在启动任务调度器时,FreeRTOS 会创建一个 IDLE 任务,其任务优先级最低,当且仅当所有其它任务均被阻塞时,IDLE 任务才会获得 CPU 使用权。

因此,可以很容易想到在 IDLE 任务里去实现进入与退出 STM32F769 的低功耗模式,即在切入 IDLE 任务后,让 STM32 也进入低功耗模式,而在即将切换出 IDLE 任务之前,去唤醒 STM32。

另外,较新版本的 FreeRTOS 中,增加了 Tickless mode,更详细的介绍请查看参考文献[2].

三、整个产品的低功耗实现

那么在 IDLE 任务里,要如何去确定当前 STM32 应该是进入 SLEEP 还是 STOP 模式呢?

考虑到 SLEEP 和 STOP 两者之间的差异,即 SLEEP 下任何中断均可唤醒 STM32,而在 STOP 下,只能通过外部中断去唤醒,所以,我们的产品采用了如下的机制:

在可确定的将来的一段时间内,如果程序员知道这期间会发生一个非外部中断,这时,就不能让 STM32 进入 STOP 模式。因为,一旦进入了 STOP,STM32 就只能响应外部中断,而不能对非外部中断(如串口、I2C 等外设中断)作出响应。

举个例子会更便于理解。假设这样一个场景 —— 通过中断去读取 I2C 数据。在程序员配置好 I2C 读取数据中断后,系统就处于等待 I2C 中断的状态。之后如果产生了 I2C 中断,就代表数据已经读取完毕,程序员接下来就可以去处理数据了。

接上面的,在配置好 I2C 读取数据中断后,如果此时 IDLE 任务得到执行,那么,这种情况下就不能让 STM32 进入 STOP 模式,而只能进入 SLEEP 模式。一旦产生了 I2C 中断,则 STM32 就会从 SLEEP 中被唤醒。而如果之前 STM32 进入了 STOP 模式,那么这个 I2C 中断就会被略掉了。

所以,在这个产品中,我们提供了两个接口,disable_enter_stop_mode 和 enable_enter_stop_mode,分别用来告知,当前不能进入 STOP 模式和当前可以进入 STOP 模式了。

整理一下,我们可以得到如下的流程图:

STM32与FreeRTOS实现低功耗

如果当前可以进入 STOP 模式,在真正进入 STOP 之前,还有一件事要做——配置 RTC 唤醒定时器,让其在某一时刻来唤醒 STM32。具体能在 STOP 模式下睡多长时间,由 FreeRTOS 中的 prvGetExpectedIdleTime 接口计算得出。

RTC 唤醒定时器配置完成后,即可通过调用 HAL_PWR_EnterSTOPMode 让 STM32 进入 STOP 模式了。如果此时没有任何中断处于 PENDING 状态,则 STM32 会立即进入 STOP 模式,如果此时有中断处于 PENDING 状态,则 STM32 不会进入 STOP 模式,代码会继续往下执行。

在 STM32 处于 STOP 模式期间,如果产生了任何外部中断(EXTI 中断),则 STM32 会被立马唤醒,不管 RTC 唤醒定时器有没有超时。如果期间一直没有外部中断,那么 STM32 会一直处于 STOP 模式,直到 RTC 唤醒定时器超时,从而将 STM32 唤醒。

另外,由于在 STOP 下,为 FreeRTOS 提供心跳时钟的 SYSTICK 也停止了工作,所以,在被唤醒之后,还需要将在 STOP 下流逝的时间告诉 FreeRTOS。

总之,降低整个产品功耗的基本思想,就是让 FreeRTOS 仅可能多的时间处于 IDLE 任务,让 STM32 尽可能多的时间处于 STOP 模式,最终达到尽可能多的降低功耗的目的。

转自: icuic

围观 834

- 全新的Si532xx缓冲器系列产品为低功耗1.5V/1.8V应用首次提供符合PCIe Gen 4标准的解决方案 -

Silicon Labs(亦称“芯科科技”)日前推出了一系列低功耗PCI Express® (PCIe®) Gen 1/2/3/4时钟缓冲器,设计旨在为1.5V和1.8V应用提供超低抖动时钟分发。Silicon Labs的新型Si532xx PCIe时钟缓冲器具有40fs RMS(典型值)的附加抖动性能,可为严格的PCIe Gen 3和Gen 4抖动规范提供超过90%的余量,从而简化时钟分发和降低产品开发风险。

越来越多的数据中心硬件设计正在使用低功耗1.5V或1.8V电源,以最大限度地降低整体功耗,这些数据中心硬件设计包括网络接口卡(NIC)、PCIe总线扩展器和高性能计算(HPC)加速器。Si532xx缓冲器由单个1.5V-1.8V电源供电,具有多达12路时钟输出,非常适合在低功耗设计中提供低抖动PCIe时钟分发。Si532xx时钟器件支持PCIe通用时钟、分离参考无展频(SRNS)和分离参考独立展频(SRIS)架构,能够满足各种应用需求。

Si532xx时钟是基于非PLL的扇出缓冲器,支持展频时钟信号的分发而不影响信号完整性。随着PCIe端点数量在服务器和存储应用中的不断增长,要求系统设计人员提供更多的PCIe参考时钟的缓冲时钟副本。新型Si532xx系列产品的超低抖动性能使得设计人员能够级联多个缓冲器,同时仍能达到0.5ps RMS的最大允许系统PCIe抖动预算。

Si532xx器件输出驱动器利用Silicon Labs的推挽式HCSL技术,该技术不像使用恒流输出驱动器技术的传统PCIe缓冲器那样需要外部终端电阻。内部电源滤波可防止电源噪声降低时钟抖动性能,从而消除了竞争解决方案所需的离散式低压差稳压器。Si532xx系列产品支持85欧姆和100欧姆阻抗选项。

Silicon Labs时钟产品高级营销总监James Wilson表示:“我们利用Silicon Labs在高性能时钟设计方面的专业技术来降低PCIe时钟分发应用中的抖动和功耗。我们新推出的Si532xx系列产品显示Silicon Labs致力于帮助整合并简化数据中心、工业、通信和消费类设计中的高速时钟树设计。”

由于时钟抖动是所有PCIe应用的关键设计参数,Silicon Labs提供PCIe Gen 1/2/3/4软件工具,可简化PCIe抖动测量。开发人员可免费下载该易于使用的实用软件工具: www.silabs.com/pcie-learningcenter

价格与供货

Si532xx PCIe时钟缓冲器已经量产,并可提供样片,其中包括多种输出选项。Si53212、Si53208和Si53204时钟器件提供12路、8路和4路PCIe时钟输出。样片可在两周内发货,批量订购可在四周内发货。在一万片采购量时,4路输出时钟器件的单价为1.40美元起,12路输出时钟器件的单价为2.17美元起。Silicon Labs的新型Si53204-EVB开发套件零售价为175美元,可提供快速、简单的PCIe缓冲器评估。有关Si532xx PCIe缓冲器系列产品的更多信息或订购样片及开发套件,请浏览网站: http://www.silabs.com/clock-buffers

围观 431

降功耗对于一款使用电池供电的产品来说是至关重要的。当然这项工作不只是软件开发人员的责任,还需要硬件工程师合理的电路设计,器件选型,最终共同努力将功耗控制到可接受的范围。MCU降功耗可以从以下几个方面着手:

1.器件选型

基于成本的考虑,电路使用的元器件可能不是低功耗的最佳选择,如某些传感器,本身功耗就比较大,这时想通过软件降功耗就很麻烦了。最好选择那些可以配置的,存在低功耗模式的传感器。至于MCU,是显而易见的,肯定选一款功耗低,满足功能要求的,这些评审时自然会考虑到。一些8位MCU功耗是几十微安,睡眠模式1uA左右,成为首选。这类MCU最容易出现的就是资源有限,引脚个数少,如某款IC ROM只有1K,RAM32字节,这样最后的软件实现很可能捉襟见肘。

2.降低主频

众所周知,芯片主频越高,功耗越大。降功耗方案一般不使用外部晶振,使用内部晶振,频率选择常用的32768Hz虽然低,却只能得到秒一级别的精度,想得到ms或us级别的精度,大于1M的频率少不了。

3.睡眠模式

睡眠模式是降功耗的主要方式,MCU可以睡眠模式睡眠,模块也可以睡眠。在外部触发唤醒MCU之后,MCU再唤醒功耗更大的模块,完成功能或通信后,马上又进入睡眠,总之进入睡眠状态自然是省电的。一些模块存在多种睡眠模式,都是为了在不影响功能的前提下更加灵活地来降低功耗。

4.关闭未用资源

在使用稍复杂一点的MCU时,它本身所带的外设,未使用时一定关闭。使用简单的MCU时,可能所有的功能都是引脚模拟实现,如IIC,SPI,Uart之类,不过也要注意,进入睡眠停止工作之前,应将与之对应的传感器等器件关闭或使其进入PowerDown Mode,唤醒后再做初始化、配置的工作。

5.配置IO口

前面提到睡眠之前,关闭外部器件,你以为这样就可以了,其实未必。如果某些引脚接了外部上拉电阻,而MCU睡眠时该引脚置低,这样一来,有压差,有电阻,就形成了不必要的功耗。这点容易被忽略,所以各个引脚一定要根据外部电路合理配置。

6.间歇工作原则

所谓间歇工作,就是劳逸结合,工作休息交替进行,采用切电源的方式,开和关交替执行,这样该器件的功耗就降了一半。如果某器件上电后,需要预热一段时间,那这个方法就行不通了。还有一些电平驱动的元件,给一定占空比的脉冲就可以工作,还可以根据电压调整占空比,平衡负载,实现电源最大利用率,不过这又是一项复杂的工作了。

以上是一些从MCU的角度降功耗的基本方法。降功耗是一项艰巨又具有挑战的工作,要求越高,就越能发掘出越多的方法出来。

转自: Garfree不是猫

围观 384

本文选用了意法半导体公司基于ARM最新Cortex—M3内核的STM32F103RB作为主控芯片,通过选择合适的液晶模块,构建了一个高性能低功耗的中文人机界面系统。

1、系统的工作原理

本系统以STM32F103RBT6为核心,采用晶彩光电的AM240320TFT液晶屏作为显示器,完成内容的显示,由于STM32F103RBT6内部Flash为128K,如果用来储存汉字字库,对芯片资源是一种极大的浪费,所以本文中采用微控制器外挂SPI接口Flash的设计思路,将不用重复改变的中文字库存放在外部Flash芯片里面,需要时再通过SPI口调入处理器。由于STM32F103RBT6不带有FSMC,所以采用软件模拟总线的方法,完成对液晶模块的驱动。

2、系统硬件设计

2.1、供电部分电路

由于整个系统采用3.3V供电,所以必须外部稳压电路将电压稳定到3.3V,本设计中采用三端稳压芯片LM1117-3.3,将外部电池电压稳定为3.3V位系统提供电源,为处理器、液晶显示器、SPIFlash供电,采用二极管IN4007串接在电源正极,为系统提供电源反接保护。供电部分原理图如图1所示。

基于STM32的高性能低功耗人机界面系统设计
图1 系统供电部分原理图

2.2、液晶显示部分电路设计

液晶显示部分主要由微控制器驱动液晶显示模块完成人机界面状态的显示,通过发送命令字,完成液晶模块的初始化以及汉字的显示。

2.2.1、STM32F系列ARM微控制器的特点

STM32处理器采用ARM公司最新的V7体系架构的内核Cortex—M3,它的速度比ARM7快三分之一,功耗低四分之三,同时集成了分支预测,单周期乘法,硬件除法等功能,大大地提高了处理器的数据处理能力,同时采用最新的Thumb-2指令集,有效地降低了代码的密度,提高了程序的执行效率,通过对功耗和性能的分析,本文中采用的处理器为STM32F103RBT6,该处理器工作频率为72MHz,内置高速存储器(高达128K字节的闪存和20K字节的SRAM),丰富的增强I/O端口和联接到2条APB总线的外设。供电电压2.0~3.6V,一系列的省电模式保证低功耗应用的要求,达到了性能和功耗的平衡。

2.2.2、TFT液晶显示模块的特点

TFT液晶显示屏是薄膜晶体管型液晶显示屏。TFT液晶为每个像素都设有一个半导体开关,每个像素都可以通过点脉冲直接控制,因而每个节点都相对独立,并可以连续控制。不仅提高了显示屏的反应速度,同时可以精确控制显示色阶,所以TFT液晶的色彩更真。

由于大多数带有LCD控制器的ARM处理器都没有内部的程序存储器和数据存储器,而一般的Cortex—M3内核微控制器都不带有专门的LCD控制器,对于不带有LCD控制器的系统,一般长常用Intel8080接口或者Motorola的6800接口,本系统中采用STM32高速的IO口模拟8080接口时序。综上所述,选用的TFT液晶必须满足两个条件,第一,带有独立的显存。第二,带有8080接口。设计中采用了台湾采用晶彩光电的AM240320TFT液晶屏,它的主控制芯片为ILI9320,自带总大小为172820(24Ox320x18/8)的显存,模块的16位数据线与显寸的对应关系为565方式,它支持包括8080接口在内多种控制输入信号。

STM32采用外部8MHz的晶振作为输入时钟,内部锁相环将时钟倍频到72MHz作为系统时钟,采用GPIO口模拟8080时序并行驱动2.8寸TFT屏,显示部分的处理器和液晶显示器的硬件电路接口电路如图2所示。

基于STM32的高性能低功耗人机界面系统设计
图2 系统液晶接口原理图

2.3、SPI接口Flash存储叠的特点

由于在本系统中整个的汉字字库需要存储在外部Flash中,所以需要选择一种Flash存储芯片,Flash芯片选择需要满足以下要求。第一,尽量占用少的IO口,因为液晶显示器已经采用了并行接口,如果继续选用并行接口的Flash,对芯片的IO消耗较大,这样势必要选用IO更多的芯片,对于便携式设备来说,这是不合理的,所以本系统的设计过程中选用的Flash为SST公司的SST25VF080B,它采用SPI接口,SPI是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议,本文中的SPIFlash采用美国SST公司的SST25VF080B芯片,容量为8M位,它工作电压范围为2.7~3.6V,工作在SPI模式0或者模式3,最高工作在50MHz,最小擦除单位为4K字节的扇区,可擦写10万次,数据保持100年以上。而STM32F103RBT6带有高速的硬件SPI接口,可以很方便与SST25VF080B连接通信。所以我们采用SPIFlash来完成对汉字字库的存储,字库存储部分的硬件电路接口图如图3所示。

基于STM32的高性能低功耗人机界面系统设计
图3 SPIFlash接口部分原理图

3、系统软件设计

系统软件包括字库的调用和TFT液晶显示软件设计两个部分,字库调用主要是通过STM32F103RBT6的SPI接口调用存储在SST25VF080B中的中文字库。TFT液晶显示部分主要是通过STM32F103RBT6通用I/O口模拟16位的8080并口,实现对液晶显示器的驱动,在软件设计的过程中需要注意一个问题。就是不同字库编码的标准时不一样的,所以在解码时略有不同,常用的汉字字库有GB2312字库和GBK字库两种。

3.1、GB2312字库和GBK字库

GB2312收录简化汉字及符号、字母、日文假名等共7445个图形字符,其中汉字占6763个。GB2312规定“对任意一个图形字符都采用两个字节表示,每个字节均采用七位编码表示”,习惯上称第一个字节为“高字节”,第二个字节为“低字节”。GB2312—80包含了大部分常用的一、二级汉字,和9区的符号。该字符集是几乎所有的中文系统和国际化的软件都支持的中文字符集,这也是最基本的中文字符集。其编码范围是高位0xa1~0xfe,低位也是0xa1~0xfe;汉字从0xb0a1开始,结束于0xf7fe。GB2312将代码表分为94个区,对应第一字节(0xa1~0xfe);每个区94个位(0xa1~0xfe),对应第二字节,两个字节的值分别为区号值和位号值加32(20H),因此也称为区位码。01~09区为符号、数字区,16~87区为汉字区(0xb0~0xf7),10~15区、88~94区是有待进一步标准化的空白区。GB2312将收录的汉字分成两级:第一级是常用汉字计3755个,置于16~55区,按汉语拼音字母/笔形顺序排列:第二级汉字是次常用汉字计3008个,置于56~87区,按部首/笔画顺序排列。故而GB2312最多能表示6763个汉字。

而GBK内码完全兼容GB2312,同时支持繁体字,总汉字数有2万多个,编码格式如下,每个GBK码由2个字节组成,第一个字节为0X81~0XFE,第二个字节分为两部分,一是0X40~0X7E,二是0X80~0XFE。其中与GB2312相同的区域,字完全相同。把第一个字节代表的意义称为区,那么GBK里面总共有126个区(0XFE~0X81+1),每个区内有190个汉字(0XFE~0X80+0X7E~0X40+2),总共就有126x190=23940个汉字。点阵库只要按照这个编码规则从0X8140开始,逐一建立,每个区的点阵大小为每个汉字所用的字节数乘以190。

这样,就可以得到在这个字库里面定位汉字的方法:

当GBKL《0X7F时:Hp=((GBKH-0x81)&TImes;190+GBKL-0X40)&TImes;(sizex2);

当GBKL》0X80时:Hp=((GBKH-0x81)&TImes;190+GBKL-0X41)&TImes;(sizex2);

其中GBKH、GBKLL分别代表GBK的第一个字节和第二个字节(也就是高位和低位),size代表汉字字体的大小(比如16字体,12字体等),Hp则为对应汉字点阵数据在字库里面的起始地址。

3.2、系统软件流程

对于GBK字库和GB2312字库,他们的解码部分部分略有不同,这个区别主要是由于他们的编码方式不同引起的,对于GBK字库,解码的方式如下:

  qh=*code;
  ql=*(++code);
  if(ql《0x7f)
  ql-=0x40;
  else
  ql-=0x41;
  qh-=0x81;
  foffset=((unsignedlong)190*qh+ql)*(size*2);//得到字库中的字节偏移量
  对于GB2312字库,解码的方式如下:
  qh=*code;
  ql=*(++code);
  ql-=0xa1;
  qh-=0xa1;
  foffset=((unsignedlong)94*qh+ql)*(size*2);//得到字库中的字节偏移量

其中qh、ql分别代表GBK的第一个字节和第二个字节(也就是高位和低位),size代表汉字字体的大小(比如16字体,12字体等),foffset则为对应汉字点阵数据在字库里面的起始地址。

系统启动以后,首先完成时钟的初始化,采用外部8MHz的晶振作为输入时钟,内部锁相环将时钟倍频到72MHz作为系统时钟,完成GPIO的初始化,作为LCD驱动IO的通用IO口的时钟设置为50MHz的推挽模式,接着完成硬件SPI1的初始化,SPI时钟频率设置为18MHz,接着完成液晶的初始化,此过程是通过发送特定的命令序列来实现的,然后刷新显示背景颜色,设置字体颜色,通过上面的程序完成字库中汉字点阵序列的查询,将汉字点阵送液晶屏显示。

系统软件设计的流程图如图4所示。

基于STM32的高性能低功耗人机界面系统设计
图4 汉字显示部分程序流程图

采用方法还不但可以实现标准字体的显示,还可以根据系统要求,采用专用软件生成各种需要的字体,为设计多样性的人机界面系统提供了一种可行的方案。

4、结论

本文根据在全站仪应用于飞机的测量过程中的实际需要,设计了用于测量计算的人机界面系统,在该系统中,采用的处理器内核为ARM最新的Cortex—M3,它基于最新ARMv7架构,采用了至今为止最小的ARM内核,有效地降低了系统功耗。采用SPIFlash来存储汉字字库,通过彩色TFT液晶屏显示,有效地扩展了应用的范围,经过实验验证,本系统的设计方法完全达到设计要求。

来源: eepw.com

围观 370

页面

订阅 RSS - 低功耗