雅特力

近日,雅特力与SEGGER共同宣布J-Link仿真调试器与Flasher在线烧录器全面支持AT32 MCU产品,SEGGER工具链的加持使AT32 MCU开发如虎添翼。

1.png

雅特力自2018年对外销售以来,基于32位ARM®-Cortex®-M4内核,推出超值型、主流型、高效能、无线型及车载型系列MCU,并即将发表M0+低功耗系列及马达专用MCU,共六大产品系列200多个产品型号,提供多种封装尺寸产品组合。回顾2023年,共推出3大系列产品,如超值型多管脚AT32F423系列,以高性价比抢攻高性能应用市场;车规级AT32A403A系列,通过AEC-Q100车规级可靠性认证,广泛适用于车身控制、ADAS辅助驾驶、车用影音和BMS等新能源车用领域;主流型AT32F402/F405系列,内建独立的HS USB OTG(仅AT32F405支持)与FS USB OTG,满足高速USB市场需求,一经推出即获市场好评。上述产品系列已全部支持SEGGER J-Link仿真调试器与Flasher在线烧录器,满足客户从产品开发到生产的需求。

SEGGER J-Link作为市场上使用最广泛的调试工具之一,不但提供免费软件和固件在线更新,更是具备快闪加载器(Flashloader)、高速下载能力与在MCU的Flash中设定无限数量断点优势,且调试速度快、稳定性和兼容性高,易上手操作,降低开发难度,同时大幅提升开发效率。

雅特力表示,"藉由与SEGGER合作,提供客户最佳的嵌入式开发工具,无论在性能、效率和易用性上,SEGGER开发调试平台极具人性化,也全力支持AT32 MCU,共同实现缩短产品开发量产进程。"

SEGGER大中华区总经理陈国威(Lionheart)表示,"SEGGER和雅特力科技将持续合作,提供完善的编程和调试工具支持AT32 MCU,以领先的性能、稳定性和高质量产品,共同协助客户完成项目开发,加速产品上市时程。"

关于SEGGER

SEGGER Microcontroller GmbH由Rolf Segger于1992年创立,SEGGER在嵌入式系统领域已有超过三十年的经验,拥有先进的RTOS和软件库、J-Link和J-Trace调试和代码追踪器、In-system的编程烧录器Flasher,以及软件开发工具如集成开发环境(IDE)Embedded Studio等。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 15

嵌入式系统应用市场广泛,早已遍及日常生活,随着产品需求复杂度的提升,32位MCU开发难度也随之增加,如何降低开发成本,缩短开发周期,是所有嵌入式开发人员的共同课题。

面对市场竞争日益加剧的情形,雅特力在产品开发上不断推陈出新,在产品效能、质量上追求精进,以32位ARM®-Cortex®-M4高效能和M0+低功耗为内核,推出低功耗、超值型、主流型、高效能、无线型和车载型六大系列,和15大产品线,采用通用型设计,全系列管脚支持Pin-to-Pin兼容(AT32F405不支持),可进行快速产品升级和迭代。为了降低MCU软件工程师的开发难度和提高设计灵活性,雅特力还提供一系列丰富的软硬件开发工具,通过易用的图形化代码生成软件工具(GUI),加速嵌入式软件开发,缩短产品上市时间。

AT32 Workbench 嵌入式开发工具提供初始化C语言代码生成,图形化配置使MCU软件工程师更有效率进行应用开发和优化程序代码,并兼容Windows®和Linux®等多平台操作系统,提升用户体验及便捷,同时支持Keil、IAR、AT32 IDE等常见IDE开发工具,轻松实现平台转换移植。

AT32 Workbench 特色

  • 支持外设初始化配置
  • 支持PIN MUX配置,并可自定义PIN脚标签和参数
  • 支持系统时钟自动化配置,进行MCU时钟路径及参数配置
  • 支持在线代码预览,实时查看当前配置自动生成的代码
  • 支持Windows、Linux等多平台,无须安装可直接运行程序
  • 支持软件在线升级,以及MCU固件在线下载
  • 支持Keil、IAR、AT32 IDE等常见IDE工程自动生成
  • 重新生成代码时保留用户代码,已有代码将不会被新生成工程覆盖
  • 支持配置PDF报告的生成

1.jpg

▲AT32 Workbench 开发环境界面

AT32 Workbench 嵌入式开发工具基于GUI图形化配置功能,协助开发人员简单轻松配置MCU引脚和周边,且快速产生初始化代码,满足设计需求和降低整体开发时间,使应用开发流程更为高效、可靠,有效缩短产品上市周期。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 25

触摸屏介绍

对于四线电阻式触摸屏的结构如下图1,在玻璃或丙烯酸基板上覆盖有两层透平,均匀导电的ITO层,分别做为X电极和Y电极,它们之间由均匀排列的透明格点分开绝缘。其中下层的ITO与玻璃基板附着,上层的ITO附着在PET薄膜上。X电极和Y电极的正负端由“导电条”(图中黑色条形部分)分别从两端引出,且X电极和Y电极导电条的位置相互垂直。引出端X-,X+,Y-,Y+一共四条线,这就是四线电阻式触摸屏名称的由来。当有物体接触触摸屏表面并施以一定的压力时,上层的ITO导电层发生形变与下层ITO发生接触,该结构可以等效为相应的电路,如下图2。

1.png

图1. 触摸屏结构图

2.png

图2. 触摸屏等效电路

计算触点的X,Y坐标分为如下两步:

1) 计算Y坐标,在Y+电极施加驱动电压Vdrive,Y-电极接地,X+做为引出端测量得到接触点的电压,由于ITO层均匀导电,触点电压与Vdrive电压之比等于触点Y坐标与屏高度之比。

2) 计算X坐标,在X+电极施加驱动电压Vdrive,X-电极接地,Y+做为引出端测量得到接触点的电压,由于ITO层均匀导电,触点电压与Vdrive电压之比等于触点X坐标与屏宽度之比。

测得的电压通常由ADC转化为数字信号,再进行简单处理就可以做为坐标判断触点的实际位置。四线电阻式触摸屏除了可以得到触点的X/Y坐标,还可以测得触点的压力,这是因为top layer施压后,上下层ITO发生接触,在触点上实际是有电阻存在的。压力越大,接触越充分,电阻就越小,通过测量这个电阻的大小可以量化压力大小。

通常在触摸屏应用中对于触摸屏控制有专门的控制芯片,主要就是为了完成两个任务:其一,完成电极电压的切换;其二,采集接触点处的电压值(ADC数据)。本案例中触摸屏使用的触摸感应驱动芯片为XPT2046,显示器驱动芯片为ILI9341,下面将分别做介绍。

触摸感应器

触摸感应器使用的驱动芯片为XPT2046,其包含了采样/保持、模数转换、串口数据输出等功能。同时芯片集成有一个2.5V的内部参考电压源、温度检测电路,工作时使用外部时钟。XPT2046可以单电源供电,电源电压范围为2.7V~5.5V。参考电压值直接决定ADC的输入范围,参考电压可以使用内部参考电压,也可以从外部直接输入1V~VCC范围内的参考电压(要求外部参考电压源输出阻抗低)。X、Y、Z、VBAT、Temp和AUX模拟信号经过片内的控制寄存器选择后进入ADC,ADC可以配置为单端或差分模式。选择VBAT、Temp和AUX时可以配置为单端模式;作为触摸屏应用时,可以配置为差分模式,这可有效消除由于驱动开关的寄生电阻及外部的干扰带来的测量误差,提高转换准确度。

3.png

图3. XPT2046原理框图

LCD显示器

LCD显示器为一块240*320的RGB屏幕,使用驱动芯片为ILI9341。ILI9341能够支持并行和串行数据总线,此案例中我们使用串行总线接口(SPI)来进行数据传输。ILI9341驱动器能够通过窗口地址函数在内部GRAM中指定动态图像的区域,并且可选择地更新此窗口区域,这样就可以在独立于静态图像区域的同时显示动态图像。ILI9341支持全彩色,8色显示模式和休眠模式,能够通过软件进行精确的电源控制,使得ILI9341能够作为手机、MP3和PMP等便携设备理想的液晶驱动器。

触摸屏工作原理

下面将对XPT2046驱动芯片的工作原理进行介绍。

模拟输入

下图描述了XPT2046片内多路选择器、ADC的模拟差分输入和差分参考电压基准。

4.png

图4. 模拟输入简图

内部参考电压

XPT2046的内部2.5V参考电压源可通过控制位PD1进行关闭或者打开。一般地,内部参考电压只用于单端模式下Vbatt、Temp和AUX输入测量。使用差分模式,触摸屏可以获得最佳性能。如果要与ADS7843兼容,XPT2046的内部参考电压源必须强行关闭。因此,上电后要对控制位PD1置0以确保关闭内部参考源。

5.png

图5. 内部电压源示意图

外部参考电压输入

+REF和-REF(见图3)之间的电压差(下文用VREF表示)决定了模拟输入的电压范围。XPT2046的参考电压输入范围为1V~VCC。参考电压越低,则ADC输出的二进制数据结果每一个数字位所代表的模拟电压也越低。在12位工作方式下,数据结果的最低位所代表的模拟电压为VREF/4096,其余位依此类推。因此,参考电压越低,干扰引入的误差会越大,此时要求尽可能使用低噪声、低波动的参考电压源;在设计电路板时,尽可能减少干扰,输入的信号噪音也不能太高,否则会直接影响转换精度。

差分工作模式

如前所述,当触摸感应器XPT2046作为触摸屏应用时,可以配置为差分模式。差分模式的优点是:+REF和-REF的输入分别直接接到YP、YN上,可消除由于驱动开关的导通电阻引入的坐标测量误差。缺点是:无论是采样还是转换过程中,驱动开关都需要接通,相对单端模式而言,功耗会有增加。当SER/DFR置为低电平时,XPT2046为差分工作模式,如下图所示。

6.png

图6. 差分参考源工作模式简图

软件流程

接下来将简单介绍本案例的触摸屏驱动软件代码流程。首先上电之后需要对所用到的外设进行初始化,包括CRM、GPIO、SPI和DMA等外设。外设初始化完成后即可开始进行触摸校准,通过调用touch_adjust()函数完成。校准完成后会在屏幕显示一系列的校准参数,用于后续计算触摸坐标使用。随后,即可开始进行触摸测试,测试过程中会在屏幕画出已触摸的坐标点,以及坐标值。还设置了清屏按钮,点击即可清除屏幕已显示内容和坐标值。为了提高数据传输效率,此demo中清屏和画点数据通过DMA-SPI进行传输,软件流程图如下:

7.png

图7. 软件流程图

注:由于触摸校准对触摸功能来说是必须完成的,如果未完成校准则无法进行后续的工作。

触摸屏快速使用方法

硬件资源

1) AT32-Video-EV

2) 2.4寸TFT_LCD

3) AT-START-F403A V1.2实验板

8.png

图8. 触摸屏硬件资源图

Note:

1.该demo是基于AT32F403A的硬件条件,若使用者需要在AT32其他型号上使用,请修改相应配置即可。

2.供电部分:使用电源供电,或USB线供电(勿使用Link单独供电)。

软件资源

AN0154_LCD_Touch_Sourcecode,触摸屏案例测试代码,工程路径位于:Sourcecode\utilities\mdk_v5

关键代码

1) 触摸点坐标获取函数,用于获取触摸坐标值,关键代码如下:

9.png

2) 触摸校准函数,用于获取校准参数,关键代码如下:

10.png

3) 触摸屏测试函数,用于测试触摸屏,关键代码如下:

11.png

4) LCD清屏函数,用于清除显示内容,关键代码如下:

12.png

5) LCD画点函数,用于显示触摸坐标点,关键代码如下:

13.png

LCD Touch demo 使用

LCD Touch demo使用步骤如下:

1) 编译下载触摸屏案例测试代码。

2) 触摸屏进入校准界面,依次点击四个校准坐标点,如下图8。

3) 校准完成后LCD会显示校准信息,包含四个校准参数VX、VY、CHX和CHY,如下图9。

4) 点击屏幕任意处,将会跳转到触摸屏测试界面,此时触摸屏会将触摸点绘制在LCD上,还会实时显示触摸点的坐标,点击Clear按钮将清除界面,如下图10。

14.png

图9. 触摸屏校准界面

15.png

图10. 触摸屏校准信息

16.png

图11. 触摸屏测试界面

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 55

DTM操作说明

资源准备

1) 硬件环境:
  • AT-START-WB415
  • MT8852B

2) 软件环境:

SourceCode\projects\ble_app_gatt

软件设计

本范例不推荐用户修改,直接下载程序即可使用

测试流程

1. 将测试程序编译后刻录到AT-START-WB415上

2. 连接AT-START-WB415上的RF SMA接头以及UART 2(P16, P17)到MT8852B(UART baud rate = 115200), 电源可以由UART2提供或是AT-START上的VDD

1.png

图1. AT-START-WB415上的SMA接头

3. 打开MT8852B BLE测试项目时,先选EUT addr进入EUT BT Address页

2.png

图2. 进入EUT BT Address页面

4. 进入EUT BT Address页面,按选Update读取EUT Address

3.png

图3. 选择Update

5. 得到Address后再按MT8852B上的按键(RUN)开始测试

4.png

图4. 确认得到地址后开始测试

6. 等待测试项目完成,过程画面如下

5.png

图5. 测试过程画面

7. 测试完成,可以透过选单去得知各项数据及结果

6.png

图6. 测试完成

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 14

过去商务办公成立必不可少的四机设备,复印机、打印机、扫描机和传真机等,为缩短人力作业时间,提升工作效率,各种办公设备也逐步推出更符合人性化需求,多功能一体机也是其中一大变革之一。多功能一体机主要是将打印、复印、扫描和传真等不同用途的机器整合为一机,并结合联网功能。随着设备功能越多,信息安全及隐私外泄风险增加,微控制器作为一个可编程的集成电路芯片,具有处理和控制功能,能够执行复杂的指令集,管理各功能模块间通信和协同工作,以确保整个系统的高效稳定和安全运作。

雅特力高效能AT32F435/F437系列MCU具有高效数据处理能力,以ARM® Cortex®-M4为内核,最高主频288MHz,支持最高4032KB Flash和高达512KB SRAM,内建FPU、DSP和各种复杂外设,供客户灵活运用,如双QSPI、双OTG、DVP和多种通信接口,且XMC支持SDRAM、SRAM、PSRAM等存储器拓展,此外还提供3组高速(5.33Msps)ADC独立引擎,能处理复杂的打印、扫描、复印和传真任务,快速的响应时间和高效率的算法使得多功能一体机能够在短时间内完成各种操作。

AT32F435/F437多功能一体机的应用特色

高效能CPU主频,提供一个可配置的硬体管道,支持打印、扫描、复印和传真等功能。支持多组高速PWM输出,可同时处理多颗马达控制。多通道ADC/DAC支持多组sensor,精准感测及打印控制。高达18个定时器, 满足打印单元控制输出的高度整合运动控制,从而降低整体系统成本和复杂性。电路板小型化,内建高速片上振荡器,提供小尺寸封装。导入sLib安全库 (Security Library),支持密码保护指定范围程序区,确保芯片高度安全性。整合关键高速通信接口,如USART/UART、USB OTG、CAN、SDIO、Ethernet(仅AT32F437系列支持)等,提升连网系统效率和稳定性。支持芯片软件OTA升级,便于多功能一体机更新、改进及扩展。

1.png

▲硬件系统框图

关于雅特力
雅特力科技于2016年成立,是一家致力于推动全球市场32位微控制器(MCU)创新趋势的芯片设计公司,专注于ARM ®Cortex®-M4/M0+的32位微控制器研发与创新,全系列采用55nm先进工艺及ARM® Cortex®-M4高效能或M0+低功耗内核,缔造M4业界最高主频288MHz运算效能,并支持工业级别芯片工作温度范围(-40°~105°)。雅特力目前已累积相当多元的终端产品成功案例:如微型打印机、扫地机、光流无人机、热成像仪、激光雷达、工业缝纫机、伺服驱控、电竞周边市场、断路器、ADAS、T-BOX、数字电源、电动工具等终端设备应用,广泛地覆盖5G、物联网、消费、商务及工控等领域。

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 15

HTTPS概述

HTTPS的安全性是基于Transport Layer Security (TLS), TLS是一种网络加密通信的方式,作为Secure Sockets Layer (SSL)的接续协议,TLS允许客户端与服务端的互相验证。TLS以凭证为概念,凭证包含:公钥、服务器身份、凭证颁发单位的签名。对应的私钥永远不会公开,任何使用私钥加密的密钥数据只能用公钥来解密,反之亦然。整个加密通信流程,可以透过图1来简单描述:

1. 客户端发起hello交握:给服务器的讯息有:

  • 包含时间戳的32位随机数字client_random
  • 加密协定
  • 客户端支持的加密方式

2. 服务端必须要有一套证书,可以自制或向组织申请。自己颁发的证书需要客户端验证通过,才可以继续访问,使用受信任单位申请的证书不会弹出提示页面。

3. 一对公钥和私钥,可以想象成一把钥匙(私钥)和一个锁头(公钥),把锁头给客户端将重要的数据锁起来,客户端将锁好的数据传给服务器,只有服务器有开锁的钥匙可以解开,所以即使传送过程被截取也无法破解。

4. 对于客户端的hello交握,服务端响应以下讯息给客户端:

  • 另一个包含时间戳的32位随机数字server_random
  • 加密协定
  • 加密方式
  • 服务器证书:包含拥有者名称、网站地址、证书公钥、证书颁发机构数字签名、过期时间等。

5. 客户端验证服务器传来的凭证是否有效?例如颁发机构、过期时间等,如果发现异常,则会弹出一个警告框,提示证书存在问题。(本应用笔记不是使用第三方证书授权中心(CA)签发的凭证,而是使用自己颁发的凭证,所以客户端必须先取得签发机构的公钥(下一节的kvm5.pem)来验证颁发机构签名,才不会弹出警告框)

6. 在此之前的所有TLS交握讯息都是明文传送,现在收到服务器的证书且验证没问题,则客户端先产生PreMaster_Secret

  • 使用加密算法,例如:RSA, Diffie-Hellman,对server_random运算产生。

  • 或称PreMaster_Key

  • 是一个48个位的Key,前2个字节是协议版本号,后46字节是用在对称加密密钥的随机数字。

7. 客户端用服务端送来的公钥加密PreMaster_Secret。

8. 客户端将加密的PreMaster_Secret传送给服务端,目的是让服务端可以像客户端用一样随机值产生Master_Secret。

9. 服务端用私钥解密PreMaster_Secret。

  • 此时客户端与服服务端都有一份相同的PreMaster_Secret和随机数client_random, server_random。

  • 使用client_random及server_random当种子,结合PreMaster_Secret,客户端和服务端将计算出同样的Master_Secret。
  • 作为资料加解密相关的Key Material。

10. 作为资料加解密相关的Key Material。

11. 作为资料加解密相关的Key Material。

1.png

图1. HTTPS原理

例 HTTPS服务器

功能简介

本示例需要使用到EMAC的功能,搭配LwIP协议栈,此协议栈有提供HTTPS的API, 但会使用到mbed TLS的加密功能,这包库从Keil的官方网站或是透过Keil内的Pack Installer可以获得。

2.png

图2. 透过Run-Time管理器加入mbed TLS

资源准备

1) 硬件环境:

对应产品型号的AT-START BOARD

2) 软件环境

at32f4xx\project\mdk_v5

软件设计

1) 配置流程

  • 配置EMAC功能

  • 初始化LwIP协议栈
  • 配置私钥及CA凭证给服务器
  • 初始化HTTPS服务器

2) 代码介绍

  • ssl_server函数代码描述

3.png

使用OpenSSL建立自签凭证

在本应用笔记中,我们将使用自签凭证来建立TLS联机,而发行自签凭证会使用到OpenSSL这个工具,以下会简单介绍在Windows上及在Linux Ubuntu上,如何安装OpenSSL。

  • Windows

因为OpenSSL未提供可执行的安装档,因此我们透过Git for Windows来达到安装OpenSSL的目的;当安装完成后,默认执行文件路径为C:\Program Files\Git\usr\bin\openssl.exe,你可以将C:\Program Files\Git\usr\bin路径加入到PATH环境变量之中,以后就可以直接输入openssl来执行此工具。

  • Ubuntu

只需要在终端机中下命令

4.png

在确定PC上有OpenSSL这个工具后,基本上只要按照以下步骤,就一定可以建立出合法的自签凭证:

1. 建立ssl.conf配置文件

5.png

上述配置文件内容的[dn]区段(Distinguished Name)为凭证的相关信息,你可以自由调整为你想设定的内容,其中O(Organization)是公司名称,OU(Organization Unit)是部门名称,而CN(Common Name)则是凭证名称,你可以设定任意名称,设定中文也可以,但请记得档案要以UTF-8编码存盘,且不能有BOM字符。

配置文件的[alt_names]区段,则是用来设定SSL凭证的域名,这部分设定相当重要,如果没有设定的话,许多浏览器都会将凭证视为无效凭证。这部分你要设定几组域名都可以,基本上没有什么上限,因为自签凭证主要目的是用来开发测试之用,因此建议可以把可能会用到的本机域名(localhost)或是局域网络的IP地址都加上去,以便后续进行远程联机测试。

2. 打开终端机工具后,切换到存放ssl.conf的目录下后,透过OpenSSL命令产生出自签凭证与相对应的私钥,输入以下命令就可以建立出私钥(server.key)与凭证档案(server.crt):

6.png

生成的私钥与凭证档案会跟ssl.conf在同一个目录下。

3. 汇入自签凭证到「受信任的跟证书授权单位」

光是建立好自签凭证还是不够的,网站服务器也设定正确才行,这毕竟是一个PKI基础架构,你还必须让所有需要安全联机的端点都能互相信任才行,因此你还须将建立好的自签凭证安装到「受信任的跟证书授权单位」之中,这样子你的操作系统或浏览器才能将你的自签凭证视为「可信任的联机」。以下为手动汇入的步骤:

  • 开启档案总管,并鼠标双击server.crt档案
  • 点击「安装凭证」按钮
  • 选取「目前使用者」并按「下一步」继续
  • 选取「将所有凭证放入以下的存放区」并按下「浏览」按钮
  • 选取「受信任的跟证书授权单位」并按下「确定」
  • 按「下一步」继续
  • 按「完成」继续
  • 在安全性警告窗口按下「是(Y)」即可完成设定

4. 将私钥及凭证汇入到TLS server

TLS server负责解密数据,在本应用笔记中就是MCU端,分别将私钥及凭证填入demo code中的mbedtls_test_srv_key及mbedtls_test_srv_crt即可。

实验效果

  • 浏览器的网址以HTTPS开头,且锁头图示为上锁的状态
7.png
图3. HTTPS页面

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 65

KWS概述

关键字定位(Keyword Spotting,KWS)技术,已成为可穿戴设备、物联网设备和其他智能终端的关键。诸如“Alexa”,“Hey Siri”或“Ok Google”等短语唤醒智能手机和家用电器上的语音激活功能,已经是语音交互设计产品的广泛需求。

对于KWS,实时响应和高精度才能获得良好的用户体验。最近,神经网络已成为KWS架构的一个有吸引力的选择,因为与传统的语音处理算法相比,它们具有更高的准确性。

由于需要实时在线识别的要求,导致KWS应用在内存和计算能力有限的微型微控制器上运行会受到一定限制。KWS的神经网络架构设计必须考虑这些限制。于是,研究人员设计出由于传统CNN的深度可分离卷积神经网络(DS-CNN)架构技术。

为了进一步介绍了DS-CNN架构,并展示了开发人员如何在MCU上实现DS-CNN KWS。2018年ARM和斯坦福大学进行了合作,并开源了预训练TensorFlow模型及其语音关键词识别代码,并将结果发表在论文Hello Edge: Keyword Spotting on Microcontrollers中。

本文基于此开源模型和代码,在AT32 MCU上对KWS效果进行展示。

KWS实现原理

关键词识别KWS

一个典型的KWS系统由一个特征提取器和一个基于神经网络的分类器组成,如下图所示。首先,长度为L的输入语音信号被分成长度为l且步幅为s的重叠帧,总共有帧T帧。

T=(L−l)/S+1

从每一帧中提取F个语音特征,则长度为L的整个输入语音信号总共生成T×F个特征。Logmel filter bank energies (LFBE)和Mel-frequency cepstral coefficients (MFCC)常用于基于深度学习的语音识别,特别适用于传统语音处理技术。使用LFBE或MFCC进行特征提取涉及将时域语音信号转换为一组频域频谱信号,从而实现输入信号的维度压缩。提取的语音特征矩阵服务于输入分类器模块,该模块导出所输出分类的概率。在需要从连续音频流中识别关键字的实际场景中,利用后端处理模块可以在一段时间内平均每个输出类的输出概率,从而提高预测的整体置信度。

1.png
图1. KWS数据管道

卷积神经网络CNN

基于DNN的KWS的一个主要缺点是它无法有效地对语音特征中的局部时间和频谱相关性进行建模。CNN是通过将输入时域和谱域特征视作图像,并对其进行二维卷积处理。卷积层之后通常是批量归一化、基于ReLU的激活函数和可选的最大/平均池化层,这些处理可以降低特征的维数。在推理过程中,批量归一化的参数可以折叠到卷积层的权重中。在某些情况下,为了减少参数和加速训练,在卷积层和密集层之间添加了一个线性低秩层,这是一个没有非线性激活的全连接层。

深度可分离卷积神经网络DS-CNN

深度可分离卷积神经网络(DS-CNN)。最近,深度可分离卷积已被提出作为标准3-D卷积操作的有效替代方案,并已用于在计算机视觉领域实现紧凑的网络架构。DS-CNN首先将输入特征图中的每个通道与一个单独的2-D滤波器进行卷积,然后使用逐点卷积(即1x1)在深度维度上组合输出。通过将标准的3-D卷积分解为2-D卷积,然后是1-D卷积,深度可分离卷积在参数数量和操作方面都更加高效,这使得即使在资源受限的微控制器设备中也可以实现更深、更宽的架构。

例 KWS实作

KWS测试平台

KWS系统需要使用到两个平台,即PC端和AT32 MCU端。

PC端:

利用TensorFlow与Python撰写完整的深度学习程序代码并训练模型,因本文件使用的学习模式为监督式的学习,需给系统大量的训练数据和Labels,接着将提取到的特征用以训练CNN模型,并反复修正训练的模型,直到模型为此系统优化的状态。

AT32 MCU端:

利用ARM提供的CMSIS-NN的函式库、DSP函数库和CNN函数库,结合PC端训练好的模型(该模型已下载待MCU)。对输入到MCU端的音频数据进行识别,实现对该语音数据可能的标签进行分类和预测。

因此,对于既定模型的KWS识别,AT32 MCU端可实现完全离线识别,无需实时与PC通信或联网通信。本示例,AT32 MCU端智能识别的关键词列表如下

"yes","no","up","down","left","right","on","off","stop","go";

没有输入信号时,输出标签为"Silence";输入信号不在关键词列表时,输出标签为

"Unknown"。

注意:由于篇幅限制,本文只介绍AT32 MCU的实现流程,如下图阴影部分。

2.png
图2. KWS实现流程

资源准备

1) 硬件环境:

AT-START-F403A BOARD V1.x

AT32-Audio-EV V2.x

3.png
图3. KWS测试的硬件环境

2) 软件环境

MDK V5.31或更新版本,使用ARM Compiler V6进行编译

…\PACK\ArteryTek.AT32F403A_407_DFP.2.1.2.pack或更新版本

…\PACK\ARM.CMSIS-DSP.1.11.0.pack或更新版本

ML-KWS-for-MCU-master\Project\mdk_v5

软件设计

实验结果

在AT32-Audio-EV V2.x端LINE_IN输入语音信号后,AT Link虚拟串口会打印输出KWS识别的标签和概率。

4.png
图4. 串口打印识别信息

识别效果视频链接 https://b23.tv/3UNwWEH

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 119

概述

ANCS(Apple Notification Center Service)即苹果通知中心服务,此服务为外围蓝牙设备(手表、耳机等)访问IOS设备(iPhone、iPad等)上生成的多种通知提供了一种简单方便的机制。ANCS围绕三个原则设计:简单性、高效性和可扩展性,因此,不论是简单的LED设备还是具有大显示屏的功能强大的“配套”设备等配件来说,这项服务都具有很高的可用性。

ANCS是基于BLE协议中的通用属性协议(Generic Attribute Profile,GATT)来实现的,即ANCS是GATT协议的一个子集。作为GATT客户端的蓝牙设备可以在使用ANCS时自由访问和使用IOS设备提供的其他服务。

通常ANCS传输的所有数值的字节序都应为小端,传输的字符串值都应由UTF-8编码的unicode字符组成。

AT32WB415 ANCS程序设计

ANCS服务特征

ANCS的服务UUID为7905F431-B5CE-4E99-A40F-4B1E122D00D0。由于IOS的特性,BLE设备应查找并订阅GATT服务的Service Changed特征,以便随时监控ANCS潜在的发布和发布取消。ANCS提供三个服务特征:

通知源(Notification Source):UUID 9FBF120D-6301-42D9-8C58-25E699A21DBD(通知)控制点(Control Point):UUID 69D1D8F3-45E1-49A8-9821-9BBDFDAAD9D9(可写响应)数据源(Data Source):UUID22EAC6E9-24D6-4BB5-BE44-B36ACE7C7BFB(通知)所有这些特征都需要授权才能访问,即BLE设备连接上IOS设备并且完成配对和绑定后才能进行访问。这三个特征中对通知源特征的支持是强制性的,而对控制点特征和数据源特征的支持是可选的。

关于ANCS更多详细内容请参阅:Apple通知中心服务(ANCS)规范(查看AN0147文档)

BLE模块软件设计

对于BLE模块部分的软件,主要就是依据上述ANCS规范来设计的,也就是ANCS规范的软件实现。在使用ANCS服务前需要进行服务设置,流程如下:

1) 等待IOS设备连接BLE模块,并完成配对和绑定

2) BLE模块获取ANCS服务和特征

3) BLE模块订阅数据源(可选项)和通知源,等待ANCS发送通知

1.png
图1. 服务设置流程

下面以来电通知为例讲解通知接收流程

1) IOS设备发送来电通知,UID=3

2) BLE模块获取通知属性,UID=3,需要获取内容包含Title,Message和AppID

3) IOS设备将UID=3的通知数据发送给BLE设备

4) BLE模块发送得到的AppID获取App属性,需要获取内容为DisplayName

5) IOS设备将该AppID的DisplayName发送给BLE设备

2.png

图2. 通知接收流程

对于本案例,BLE模块能够处理的ANCS通知包括来电通知和应用通知两种,用户可按照这两种通知的处理方式来开发其他ANCS通知处理函数。对于不同的通知产生的不同事件BLE模块会通过串口发送不同的数据标志给MCU端,如下:

  • 0x5AA501,表示接收到来电通知添加事件(CategoryID=1,EventID=0)
  • 0x5AA502,表示接收到来电通知移除事件(CategoryID=1,EventID=4)
  • 0x5AA503,表示接收到应用通知添加事件(CategoryID=4,EventID=0)
  • 0x5AA504,表示接收到应用通知移除事件(CategoryID=4,EventID=4)

MCU软件设计

上面提到BLE端对接收到的数据进行判断后会通过串口发送不同的数据标志给到MCU端,MCU端对接收到的BLE串口数据处理方式如下:

1) 通过串口(USART3)接收BLE模块发送的通知数据

2) 接收到0x5AA501,点亮LED2提示来电通知

3) 接收到0x5AA502,关闭LED2提示来电通知移除

4) 接收到0x5AA503,点亮LED3提示应用通知

5) 接收到0x5AA504,关闭LED3提示应用通知移除

6) 除ANCS通知外,对蓝牙连接状态也会进行显示:

接收到0x5AA505,点亮LED4提示蓝牙连接配对成功

接收到0x5AA506,关闭LED4提示蓝牙连接断开

7) 除LED表示通知类型外,还会将接收到的通知数据发送到串口(USART2)来模拟通知显示

PS. “ANCS案例使用”可点击此处查看AN0147

来源:AT32 MCU 雅特力科技

免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:cathy@eetrend.com)。

围观 18

页面

订阅 RSS - 雅特力