0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

雅特力AT32 MCU基于Zbar解码库的QR Decode应用程序

雅特力 AT32 MCU 2023-10-10 09:50 次阅读

二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的;在代码编制上巧妙地利用构成计算机内部逻辑基础的“0”、“1”比特流的概念,使用若干个与二进制相对应的几何形体来表示文字数值信息,通过图象输入设备或光电扫描设备自动识读以实现信息自动处理。二维码由于自身设计特点,可包含更多的信息量,编码信息范围更广,并且由于二维码具有一定的校验功能等。同时还具有对不同行的信息自动识别功能、以及处理图形旋转变化点,二维码译码更加准确,其误码率为千万分之一。下图为QR二维码构造框图。图1. QR码符号的结构671212c2-670f-11ee-9788-92fbcf53809c.png1) 位置探测图形、位置探测图形分隔符:用于对二维码的定位,对每个QR码来说,位置都是固定存在的,只是大小规格会有所差异;这些黑白间隔的矩形块很容易进行图像处理的检测。2) 定位图形:这些小的黑白相间的格子就好像坐标轴,在二维码上定义了网格。3) 格式信息:表示该二维码的纠错级别,分为L、M、Q、H。4) 数据区域:使用黑白的二进制网格编码内容。8个格子可以编码一个字节。5) 版本信息:即二维码的规格,QR码符号共有40种规格的矩阵(一般为黑白色),从21x21(版本1),到177x177(版本40),每一版本符号比前一版本每边增加4个模块。6) 纠错码字:用于修正二维码损坏带来的错误。

二维码解码流程

了解了QR二维码的构造,下面我们来了解解码流程,QR二维码的解码流程如下图2所示。图2. QR码译码步骤67276b22-670f-11ee-9788-92fbcf53809c.png1) 定位并获取符号图像。深色与浅色模块识别为“0”与“1”的阵列。2) 识读格式信息(如果需要,去除掩模图形并完成对格式信息模块的纠错,识别纠错等级与掩模图形参考)。3) 识读版本信息,确定符号的版本。4) 用掩模图形参考,从格式信息中得出对编码区的位图进行异或处理消除掩模。5) 根据模块排列规则,识读符号字符,恢复信息的数据与纠错码字。6) 用与纠错级别信息相对应的纠错码字检测错误,如果发现错误,立即纠错。7) 根据模式指示符和字符计数指示符将数据码字划分成多个部分。8) 最后,按照使用的模式译码得出数据字符并输出结果。二维码的解码流程具体实现的步骤和方法是比较复杂,涉及到了QR二维码的标准规则及相对应的算法,知识点很多,网络上相关资料充足,这里就不再赘述。

QR decode快速使用方法

硬件资源

1) USB2) LCD 93413) Sensor OV5640 or OV26404) Buzzer(PE3)5) USER Key6) AT32F435_DVP_EVB_V1.0实验板图3. 硬件资源图67443900-670f-11ee-9788-92fbcf53809c.png

硬件连接及数据流

本例程中主要使用到的外设包括:DVP、I2C、XMC、DMA和USB,其中DVP用于摄像头数据接收,I2C用于初始化摄像头,XMC用于发送LCD显示数据至LCD设备,DMA用于DVP至buffer和buffer至XMC的数据传输,USB用于将数据发送至PC端。摄像头数据会以Y8的格式用DVP进行采集,通过DMA传输至内存buffer,此buffer会用于LCD显示和Zbar解码。在LCD显示部分,由于LCD无法直接显示Y8格式数据,所以首先会将Y8格式转换为RGB格式,然后通过DMA将数据传输到XMC用于LCD显示摄像头画面;在Zbar解码部分,解码成功后会将解析结果通过USB传输至PC端,并通过XMC将结果显示到LCD上。硬件连接以及数据流如下图所示:图4. 硬件连接及数据流图676d6e56-670f-11ee-9788-92fbcf53809c.png

QR decode demo使用

由于该demo运行占用了256KB的SRAM,而AT32F435/437的SRAM大小是可配置的(SRAM默认大小为384KB),为了方便使用,demo已经在启动文件中将SRAM修改为了默认大小,亦可自行在extend_sram()函数中进行SRAM大小的配置。图5. 修改SRAM大小67756f7a-670f-11ee-9788-92fbcf53809c.png1) 连接USB线到PC,通过上位机可以识别到该设备:Artery Virtual COM Port,注意需要安装USB驱动:Artery_VirtualCOM_DriverInstall.exe。2) 根据LCD显示信息,查看摄像头初始化是否成功,demo提供的初始化代码可自动识别OV5640或OV2640两种摄像头,若想更换其他摄像头请自行修改摄像头初始化代码。3) 初始化成功后,将摄像头对准二维码,LCD显示当前抓取的摄像头图像,此时芯片一直在通过Zbar进行二维码解码。4) 若芯片解析到数据,蜂鸣器会进行提示并将解析次数及解析结果显示在LCD底部,如图6所示。同时如果连接了USB至PC端并识别到了Artery Virtual COM Port,还会将解析到的数据通过USB传输到PC端,如图7所示。当解析到新的图码数据时会将解析次数清零,并更新解析结果。5) 若芯片未解析到图码数据,LCD将无结果显示,或保留上次解析的结果及次数。6) 蜂鸣器提示音可以通过USER Key进行开关。7) 可通过以下宏定义来对摄像头输出数据大小进行设置,为了兼顾成像效果和资源占用,建议输出大小设置为160至240(pixel)之间:#define CAMERA_SIZE 2408) 可通过以下宏定义来选择是否开启LCD显示:#define LCD_DISPLAY9) 应用效果展示视频链接如下:https://b23.tv/Y4nhMNR图6. LCD显示解析数据67905632-670f-11ee-9788-92fbcf53809c.png图7. USB传到上位机数据67a6af4a-670f-11ee-9788-92fbcf53809c.png

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    146

    文章

    16780

    浏览量

    349287
  • 雅特力
    +关注

    关注

    0

    文章

    150

    浏览量

    7946
  • AT32
    +关注

    关注

    1

    文章

    110

    浏览量

    2045
收藏 人收藏

    评论

    相关推荐

    AT32讲堂087 | AT32 IDE快速入门指南

    新建项目新项目向导AT32ID提供支持MCU的C语言项目模板,方便用户快速创建项目。菜单栏【File】>【New】>【CProject】。新建项目向导的对话框将出现。在对
    的头像 发表于 09-15 08:08 237次阅读
    <b class='flag-5'>AT32</b>讲堂087 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> IDE快速入门指南

    AT32 MCU的随机数生成

    概述产品和生态系统安全性的需求比以往任何时候都更加重要。真随机数是所有安全系统的核心,其质量会影响设计的安全性。因此在没有内置硬件TRNG的AT32的微控制器系列中,如何提高随机数的有效,来符合
    的头像 发表于 08-30 12:26 318次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>的随机数生成

    AT32讲堂085 | AT32 MCU HICK时钟校准

    简介AT32系列MCU内部都有提供适合运行的内部高速时钟(HICK),其本质就是内置于芯片的RC振荡器。在25℃下,其典型值频率8MHz的精度由工厂校准到±1%,在-40到105℃,该内部高速时钟
    的头像 发表于 08-30 12:26 399次阅读
    <b class='flag-5'>AT32</b>讲堂085 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b> HICK时钟校准

    AT32 MCU通过IEC 60730功能安全认证,为家电产品提供安全保障

    ‍‍近日,AT32MCU安全顺利通过IEC60730功能安全认证,为家电产品提供安全质量保证。国际公认的测试、检验和认证机构SGS为
    的头像 发表于 05-20 08:15 442次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>通过IEC 60730功能安全认证,为家电产品提供安全保障

    AT32F423入门使用指南

    初步环境准备开发环境下载地址:
    的头像 发表于 05-14 08:15 1069次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F423入门使用指南

    AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,与SEGGER共同宣布J-Link仿真调试器与Flasher在线烧录器全面支持AT32 MCU产品,SEGGER工具链的加持使
    的头像 发表于 02-23 10:27 300次阅读

    AT32 MCU与SEGGER携手合作,开发量产事半功倍

    近日,与SEGGER共同宣布J-Link仿真调试器与Flasher在线烧录器全面支持AT32MCU产品,SEGGER工具链的加持使AT32MC
    的头像 发表于 02-22 08:13 401次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>与SEGGER携手合作,开发量产事半功倍

    AT32 MCU实现高效电机驱动控制与应用

    发展。受邀出席此次会议,产品市场总监林金海发表了题为“AT32
    的头像 发表于 11-17 08:15 745次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>实现高效电机驱动控制与应用

    与您相约2023电机控制先进技术研讨会

    由电子发烧友主办的2023电机控制先进技术研讨会将于11月16日在深圳益田威斯汀酒店举办。产品市场总监林金海将发表“
    的头像 发表于 11-14 08:15 520次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>与您相约2023电机控制先进技术研讨会

    如何使用AT32 MCU定时器进行PWM输入测试

    如何使用AT32 MCU定时器进行PWM输入测试
    的头像 发表于 10-27 14:20 2274次阅读
    如何使用<b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b><b class='flag-5'>AT32</b> <b class='flag-5'>MCU</b>定时器进行PWM输入测试

    AT32微控制器上实现基于Zbar解码QR Decode应用程序

    本应用笔记的目的是提供在AT32微控制器上实现基于Zbar解码QR Decode
    发表于 10-26 08:07

    AT32 MCU SDIO入门指南

    AT32 MCU SDIO入门指南本应用入门指南主要介绍以下几部分内容:1.基于提供V2.x.x 的BSP板级支持包来进行SD 存储卡
    发表于 10-25 08:08

    AT32 MCU QSPI应用说明

    AT32 MCU QSPI Application Note主要介绍以下几部分内容:1. 基于提供的V2.x.x 的BSP 板级支持包
    发表于 10-25 06:18

    AT32微控制器上实现QR Decode应用程序

    QR USB HID keyboard目的是提供在AT32微控制器上实现QR Decode应用程序,并通过USB HID模拟keyboard
    发表于 10-24 07:40

    AT32微控制器上创建Multi MCU IAP应用程序的方法

    对于大多数基于闪存的系统,一项重要要求是能够在最终产品中安装固件时进行更新。此功能称为应用程序内编程(IAP)。本应用笔记的目的是提供在AT32微控制器上创建Multi MCU IAP应用程序
    发表于 10-24 06:48