二維碼(2-dimensional bar code)是用某種特定的幾何圖形按一定規律在平面(二維方向上)分布的黑白相間的圖形記錄數據符號信息的;在代碼編制上巧妙地利用構成計算機內部邏輯基礎的“0”、“1”比特流的概念,使用若干個與二進制相對應的幾何形體來表示文字數值信息,通過圖象輸入設備或光電掃描設備自動識讀以實現信息自動處理。二維碼由于自身設計特點,可包含更多的信息量,編碼信息范圍更廣,并且由于二維碼具有一定的校驗功能等。同時還具有對不同行的信息自動識別功能、以及處理圖形旋轉變化點,二維碼譯碼更加準確,其誤碼率為千萬分之一。下圖為QR二維碼構造框圖。圖1. QR碼符號的結構1) 位置探測圖形、位置探測圖形分隔符:用于對二維碼的定位,對每個QR碼來說,位置都是固定存在的,只是大小規格會有所差異;這些黑白間隔的矩形塊很容易進行圖像處理的檢測。2) 定位圖形:這些小的黑白相間的格子就好像坐標軸,在二維碼上定義了網格。3) 格式信息:表示該二維碼的糾錯級別,分為L、M、Q、H。4) 數據區域:使用黑白的二進制網格編碼內容。8個格子可以編碼一個字節。5) 版本信息:即二維碼的規格,QR碼符號共有40種規格的矩陣(一般為黑白色),從21x21(版本1),到177x177(版本40),每一版本符號比前一版本每邊增加4個模塊。6) 糾錯碼字:用于修正二維碼損壞帶來的錯誤。
二維碼解碼流程
了解了QR二維碼的構造,下面我們來了解解碼流程,QR二維碼的解碼流程如下圖2所示。圖2. QR碼譯碼步驟1) 定位并獲取符號圖像。深色與淺色模塊識別為“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. 硬件資源圖
硬件連接及數據流
本例程中主要使用到的外設包括: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. 硬件連接及數據流圖
QR decode demo使用
由于該demo運行占用了256KB的SRAM,而AT32F435/437的SRAM大小是可配置的(SRAM默認大小為384KB),為了方便使用,demo已經在啟動文件中將SRAM修改為了默認大小,亦可自行在extend_sram()函數中進行SRAM大小的配置。圖5. 修改SRAM大小1) 連接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顯示解析數據圖7. USB傳到上位機數據
關于雅特力雅特力科技于2016年成立,是一家致力于推動全球市場32位微控制器(MCU)創新趨勢的芯片設計公司,專注于ARM Cortex-M4/M0+的32位微控制器研發與創新,全系列采用55nm先進工藝及ARM Cortex-M4高效能或M0+低功耗內核,締造M4業界最高主頻288MHz運算效能,并支持工業級別芯片工作溫度范圍(-40°~105°)。雅特力目前已累積相當多元的終端產品成功案例:如微型打印機、掃地機、光流無人機、熱成像儀、激光雷達、工業縫紉機、伺服驅控、電競周邊市場、斷路器、ADAS、T-BOX、數字電源、電動工具等終端設備應用,廣泛地覆蓋5G、物聯網、消費、商務及工控等領域。
-
mcu
+關注
關注
146文章
17019瀏覽量
350373 -
雅特力
+關注
關注
0文章
157瀏覽量
7981 -
AT32
+關注
關注
1文章
113瀏覽量
2079
發布評論請先 登錄
相關推薦
評論