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

    文章

    17043

    浏览量

    350532
  • 雅特力
    +关注

    关注

    0

    文章

    157

    浏览量

    7988
  • AT32
    +关注

    关注

    1

    文章

    113

    浏览量

    2083
收藏 人收藏

    评论

    相关推荐

    发布高性能电机控制专用MCU

    近日,科技正式推出了其首款高性能电机控制专用MCU——AT32M412/M416。这款MCU专为出行工具、家电及工业控制等应用而设计,
    的头像 发表于 11-01 18:11 845次阅读

    AT32讲堂088 | AT32F402/F405时钟配置

    介绍如何结合提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置的方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 09-15 08:08 440次阅读
    <b class='flag-5'>AT32</b>讲堂088 | <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F402/F405时钟配置

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

    新建项目新项目向导AT32ID提供支持MCU的C语言项目模板,方便用户快速创建项目。菜单栏【File】>【New】>【CProject】。新建项目向导的对话框将出现。在对
    的头像 发表于 09-15 08:08 393次阅读
    <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 488次阅读
    <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 544次阅读
    <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新品与应用方案亮相2024慕尼黑上海电子展

    7月8日,2024慕尼黑上海电子展electronicaChina在上海新国际博览中心拉开序幕,作为全球电子行业的盛会,汇聚了国内外众多优质电子企业,为业界呈现一场前所未有的科技盛宴。携高性能
    的头像 发表于 07-09 08:15 637次阅读
    <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>新品与应用方案亮相2024慕尼黑上海电子展

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

    ‍‍近日,AT32MCU安全顺利通过IEC60730功能安全认证,为家电产品提供安全质量保证。国际公认的测试、检验和认证机构SGS为
    的头像 发表于 05-20 08:15 530次阅读
    <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功能安全认证,为家电产品提供安全保障

    发布全新车载型AT32A423系列MCU

    近日发布了全新车载型AT32A423系列MCU,该产品基于ARM®Cortex®-M4内核设计,集成了丰富的外设资源,展现了高效能与多尺寸封装的双重优势。
    的头像 发表于 05-17 10:38 610次阅读

    AT32F423入门使用指南

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

    AT32F405高速USB MCU荣获“年度最佳MCU

    设计Fabless100排行榜也在同期举行的中国IC领袖峰会发布,AT32F405荣获“中国IC设计成就奖之年度最佳MCU”。年度最佳MCU
    的头像 发表于 03-30 08:13 857次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F405高速USB <b class='flag-5'>MCU</b>荣获“年度最佳<b class='flag-5'>MCU</b>”

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

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

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

    近日,与SEGGER共同宣布J-Link仿真调试器与Flasher在线烧录器全面支持AT32MCU产品,SEGGER工具链的加持使AT32MC
    的头像 发表于 02-22 08:13 460次阅读
    <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携手合作,开发量产事半功倍

    AT32F423时钟配置

    介绍如何结合提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置的方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 02-19 13:26 568次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32F423时钟配置

    AT32WB415时钟配置

    介绍如何结合提供的V2.x.x的板级支持包(BSP)来配置时钟。以下介绍时钟配置的方法主要分两种:1、以手动编写代码调用BSP中提供的驱动函数接口来进行时钟配
    的头像 发表于 12-20 08:14 464次阅读
    <b class='flag-5'>雅</b><b class='flag-5'>特</b><b class='flag-5'>力</b>AT32WB415时钟配置

    【飞腾派4G版免费试用】飞腾派Zbar条码识别

    、Interleaved 2/5、QR码等,Zbar基于C编写运行效率更高。 这里考虑更加贴近自助终端产品的开发环境和调优需求,采用了下载Zbar源码在本地编译的方式,Zbar源码文件
    发表于 12-19 09:07