雅特力

触摸屏介绍

对于四线电阻式触摸屏的结构如下图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)。

围观 18

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)。

围观 7

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

雅特力高效能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)。

围观 7

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)。

围观 26

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)。

围观 31

概述

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)。

围观 8

概述

OTA(Over-The-Air Technology)即空中下载技术,利用OTA技术可以在不接触(接线)的情况下对芯片程序进行升级。AT32WB415的OTA是通过蓝牙的方式实现的,利用芯片中的蓝牙模块(BLE)接收上位机发送的升级命令和程序代码。OTA分为两个部分,用户可以选择OTA升级BLE模块APP,也可以选择OTA升级MCU端。对于MCU端的升级参考了IAP功能的实现,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行正常的功能操作,而只是通过串口接收程序或数据,执行对第二部分代码的更新;第二个项目代码才是真正的功能代码。

AT32WB415 OTA程序设计

地址分布

表1. 地址分布

1.png

注:mcu bootloader区域最后一个扇区,用于存放防止升级过程掉电的flag,用户编译修改bootloader时,要保证不覆盖flag的地址。

上位机软件设计

为了方便用户开发,本应用指南提供了可用于AT32WB415升级的上位机OTA软件,其主要包括扫描、连接蓝牙设备,获取设备信息,打开并下载OTA文件等。软件流程如下:

1) 扫描并连接设备

2) 调用FFC0服务中的FFC1特征,发送0x00,等待BLE端回复设备信息数据,共10 bytes,包括2 bytes app版本号,2 bytes app长度,4 bytes uid,2 bytes rom版本号;

3) 选择下载的bin文件,再次调用FFC1特征,发送bin文件头部信息,共16 bytes,等待BLE端接收该信息,并返回2 bytes数据,返回值为0x0000;

4) 调用FFC2特征,开始发送bin文件,每次发送18 bytes,包括2 bytes block number和16 byts bin文件数据,当block number等于bin文件头部信息中的bit[6:7]/4时,传输完成

5) 调用FFC1特征发送0x5AA5,请求BLE返回OTA结果,如果返回0,则持续发送0x5AA5,如果返回非0值,则发送0xA55A提示BLE进行复位。BLE端返回值含义:

— 0x0000:正在进行OTA

— 0xFFF0:成功

— 0xFFF1:错误

— 0xFFF2:超时

— 其他值:返回值错误

程序执行整体流程框图如下:

2.png

图1. 上位机程序执行流程

BEE模块软件设计

对于BLE模块部分的软件设计,boot&stack code部分无需修改,软件设计都在app code。主要包含了以下内容:

1) 接收上位机蓝牙数据

2) 对蓝牙接收到的bin文件进行分析,在bin档头部包含了app版本、rom版本、uid等内容

3) 判断app版本号,app_version>0x8000,则用于MCU app升级,否则用于BLE模块app升级

4) MCU app升级时,先发送0xa55a5aa5到MCU,提示其复位芯片,进入bootloader程序,然后通过串口将接收到的蓝牙数据发送给MCU

5) BLE模块app升级时,直接将接收到的数据写入flash中OTA数据存放区域

6) 等待发送完成,复位BLE模块程序执行整体流程框图如下:

3.png

图2. BLE程序执行流程

MCU软件设计

MCU软件设计分为Bootloader和App两部分,应用在App中执行,升级过程在bootloader中执行。Bootloader功能包含:

1) 读取flash中的标志判断是否需要更新app

2) 如果无需更新则直接跳转app执行,需要更新则继续执行下面的操作

3) 接收BLE模块发送的串口数据,将数据保存至mcu ota code区域

4) 数据接收完成后将OTA数据搬运至mcu app code区域并跳转至app执行

App功能包含:

1) 清除flash中的OTA更新标志

2) 运行app功能代码(IO翻转)

3) 串口持续监测是否收到OTA升级命令(0xa55a5aa5)

程序执行整体流程框图如下:

4.png

图3. MCU程序执行流程

一、 bootloader project设置

1) Keil设置

5.png

图4. bootloader project中address 4在Keil设置

2) bootloader源程序修改Iap.h文件中

6.png

图5. bootloader project中address 5在程序中设置

二、app project设置

IAP demo提供了2个app程序供测试用,皆以address 5(0x800 4000)为起始地址。app1 LED3闪烁,app2 LED4闪烁。以app2为例,设计步骤如下:

1) Keil工程设置

7.png

图6. app project中address 5在Keil设置

2) app1源程序设置

8.png

图7. app project向量表偏移在程序中设置

3) 编辑generate_app.bat批处理文件

文件中的“-v 0x8002”为app程序版本号,可配置为0x8000-0Xffff范围内的任意值。

4) 编译生成bin文件

通过User选项卡,设置编译后调用fromelf.exe,根据axf文件生成bin文件,然后设置调用encrypt_app.bat批处理文件,生成OTA升级所需的bin文件。

通过以上3个步骤,我们就可以得到一个APP程序,将bin文件添加到OTA上位机软件即可实现app程序的更新。

如果在设计app code过程中需要对app project进行单独调试,请按照以下操作

a) 先下载bootloader工程

b) 再调试app工程

PS. “通过PC上位机OTA升级”及”通过Android APP OTA升级”案例可点击此处查看AN0144

来源:AT32 MCU 雅特力科技

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

围观 17

电子竞技行业近年来发展迅速,成为一个全球性的热潮。根据统计数据,2022年全球电竞观众数量已经超过了5亿人,市场规模也达到了13亿美元。这个行业的快速发展得益于技术的不断进步,其中高速USB接口技术便是其中一个重要因素。

电竞游戏节奏快速,需要实时传输和响应大量的数据,对键盘、鼠标、显示器等设备的灵敏度、舒适度有着更高要求,需要玩家能够快速、准确地输入指令,从而在游戏中获得优势,这就需要电竞设备具备高效的数据传输能力,以避免数据拥堵或延迟。高速USB接口因其通用性、便捷性和快速传输数据的特性,在键盘与鼠标上得到了广泛的应用,有效改善了传统键鼠容易出现卡顿和延迟的情况,设备连接更加便捷,按键响应更加迅速,用户可以更快地完成输入,提高游戏体验感。

1.jpg

MCU作为应用的核心控制单元,负责协调和管理各个组件的工作,包括按键、USB接口和其它外设,承担着键鼠与计算机之间的数据传输和信号处理任务,确保了产品的高速、稳定和可靠。基于雅特力AT32F405的电竞键鼠应用方案搭配高速USB 2.0 OTG,可实现有线或无线的高Report Rate,最高可达8k Report Rate的速率。通过拓展外部RF可实现三模连接,即USB+BLE+2.4G模式,为游戏玩家提供了更加流畅、方便快捷的输入体验。

2.jpg

▲8K Report Rate 实测USB数据包

基于AT32F405的电竞键鼠应用方案

AT32F405集成独立的HS USB OTG(内建PHY)与FS USB OTG,HS USB 2.0数据传输速率达480Mbps,大幅提升电竞键鼠反应速度和精准度,以更低延时在竞技类游戏中占得先机。高速USB接口还支持多通道数据传输,可以同时处理多个设备的数据传输请求,使得电竞键鼠能够更稳定地连接到电脑。

电竞键鼠需要具备高度的自定义功能,以满足不同玩家的需求。AT32F405拓展了丰富外设接口,1组QSPI、1组CAN总线、8个UART、3个SPI/I²S与1个独立全双工I²S、3个I²C、1个16位高级定时器、7个16位通用定时器、1个32位通用定时器、2个16位基本定时器,同时还扩展了最高1个采样率高达2Msps的12位16通道高速ADC。丰富的接口为电竞键鼠的设计和应用提供了广阔的空间,可以实现高性能、个性化的产品应用,为玩家带来更好的操作体验。

通过SPI接口连接外部存储器、传感器等器件,通信速率最高可达36兆位/秒,可实现对电竞键鼠RF无线模块的灵活控制。AT32F405还内建PHY,大大降低了外围电路成本,提供封装尺寸最小为4 x 4mm,可满足各类小体积无线USB Dongle需求。

3.png

电竞键鼠利用多路PWM控制信号来实现灯光和多媒体控制功能。AT32F405通过优化PWM信号的频率和占空比,以及整合多路信号,实现多种炫酷的灯光效果,为玩家带来沉浸式的操作体验。

此外,AT32F405搭载ARM®-Cortex®-M4内核,CPU主频达216MHz,内建单精度浮点运算单元(FPU)和数字信号处理器(DSP),具有高效的运算能力,搭配高DPI光学传感器,可捕捉到鼠标移动的微小细节,并快速处理和计算鼠标光学传感器采集的数据,实现更快速、更精准的移动和定位,同时提高键盘按键响应能力和速度。

来源:AT32 MCU 雅特力科技

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

围观 12

页面

订阅 RSS - 雅特力