• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于STM32F103的嵌入式圖像采集系統(tǒng)

      2018-09-04 13:13:06張興武趙慶志張林華夏汝巖王政皓孫小飛
      關(guān)鍵詞:液晶屏信號線寄存器

      張興武,趙慶志,張林華,夏汝巖,王政皓,孫小飛

      (1.山東理工大學(xué) 機(jī)械工程學(xué)院,山東 淄博 255049;2.山東新華醫(yī)療器械股份有限公司,山東 淄博 255086)

      傳統(tǒng)的基于PCI圖像采集卡的圖像采集系統(tǒng)存在硬件成本高、體積大、開發(fā)周期長、不利于后續(xù)改造和拓展等問題[1].而傳統(tǒng)的基于FPGA圖像采集系統(tǒng)需要根據(jù)特定應(yīng)用環(huán)境設(shè)計特定算法和硬件實現(xiàn),開發(fā)難度大,不利于拓展和移植[2].嵌入式微處理器和TFT LCD的結(jié)合及應(yīng)用[3-6]為解決上述問題提供了可能.為此,本文設(shè)計一種嵌入式圖像采集系統(tǒng),該系統(tǒng)以STM32F103VET6(簡稱STM32F103)為主控制器,以O(shè)V7725為圖像采集傳感器,以ILI9341為液晶控制器,通過I2C總線和FSMC總線分別控制OV7725和ILI9341,實現(xiàn)圖像傳感器及液晶控制器與單片機(jī)的通信,最終實現(xiàn)圖像的采集、顯示與保存,并應(yīng)用于可視門鈴及其他應(yīng)用領(lǐng)域.

      1 硬件結(jié)構(gòu)與接口設(shè)計

      1.1 硬件結(jié)構(gòu)

      以ST公司基于ARM Cortex-M3內(nèi)核架構(gòu)的STM32F103VET6[7]芯片為控制平臺,供電電壓2.0~3.6 V,CPU最高主頻72 MHz,支持8080模式LCD并行接口.采用ILI9341液晶控制器芯片顯示圖像信息,該液晶芯片自帶172.8 KB顯存,可保存兩幀RGB圖像數(shù)據(jù).采用Omni Vision公司基于COMOS VGA的圖像傳感器OV7725采集圖像信息,最大輸出30萬像素圖像(分辨率640×480),自帶有源晶振和穩(wěn)壓芯片,并帶有FIFO幀緩存芯片AL422B,該芯片內(nèi)含384 K的FLASH,可緩存兩幀QVGA圖像數(shù)據(jù).該圖像傳感器將采集的圖像數(shù)據(jù)保存成RGB565格式存入FIFO緩存.STM32讀取緩存中的圖像數(shù)據(jù)經(jīng)RGB接口輸出至液晶面板.系統(tǒng)硬件結(jié)構(gòu)如圖1所示.

      圖1 系統(tǒng)硬件結(jié)構(gòu)Fig.1 Hardware structure of the system

      1.2 硬件接口設(shè)計

      1)液晶面板與ILI9341通信接口.液晶面板與ILI9341采用RGB接口,液晶面板含28根信號線,其中:RGB信號線各8根,CLK同步時鐘信號線1根,H/YSYNC水平/垂直同步信號線各1根, DE數(shù)據(jù)使能信號線1根.

      2)ILI9341與STM32F103通信接口.ILI9341配置為8080接口通信(由STM32F103的FSMC實現(xiàn)8080接口時序),使用16根數(shù)據(jù)線按RGB565數(shù)據(jù)格式傳輸圖像數(shù)據(jù).此外還有:CSX片選信號線、RESX復(fù)位信號線、R/WDX讀寫信號線各1根,以及SCL/SDA總線時鐘/信號線.

      3)OV7725與STM32F103通信接口.由STM32F103的I2C接口完成與OV7725的通信.OV7725共引出20跟引腳,主要引腳有:D0~D9像素數(shù)據(jù)端口,XCLK/PCLK系統(tǒng)輸入時鐘/像素同步時鐘,HREF/VSYNC行/場同步信號.

      2 系統(tǒng)軟件設(shè)計

      為提高系統(tǒng)的可移植性和方便調(diào)試,系統(tǒng)采用模塊化設(shè)計.主要模塊為:圖像數(shù)據(jù)采集模塊、圖像顯示模塊和圖像保存模塊.程序運(yùn)行流程如圖2所示.

      圖2 程序運(yùn)行流程Fig.2 Program running process

      本設(shè)計以可視門鈴為應(yīng)用背景,通過兩個按鍵中斷實現(xiàn)系統(tǒng)級功能:Key1中斷啟動程序,對板載各個設(shè)備初始化,系統(tǒng)就緒,開啟液晶屏顯示門外彩色圖像;Key2中斷實現(xiàn)截屏保存功能,系統(tǒng)將截屏圖像保存至SD卡內(nèi).硬件操作圖如圖3所示.SD卡內(nèi)移植了FatFs R0.11a版文件系統(tǒng),STM32可對SD卡內(nèi)保存的文件圖像進(jìn)行后期處理.

      圖3 硬件操作圖Fig.3 Hardware operation picture

      2.1 圖像數(shù)據(jù)采集模塊

      OV7725帶有標(biāo)準(zhǔn)SCCB總線接口,而SCCB總線與I2C總線十分類似,因此STM32可直接使用片上外設(shè)I2C與OV7725通信,實現(xiàn)對OV7725寄存器的參數(shù)配置,進(jìn)而實現(xiàn)圖像數(shù)據(jù)采集.相關(guān)配置參數(shù)可從OV7725數(shù)據(jù)手冊[8]中查詢.配置OV7725寄存器的主要代碼如下:

      /*向OV7725寄存器COM7寫入數(shù)據(jù)0x80,

      進(jìn)行復(fù)位操作*/

      if(0==SCCB_WriteByte(0x12,0x80))

      {return ERROR;}

      /*從VER寄存器讀取OV7725芯片ID,

      以確定OV7725是否處于正常工作狀態(tài)*/

      if(0==SCCB_ReadByte(&Sensor_IDCode,1,0x0b)

      {return ERROR;}

      if(Sensor_IDCode==OV7725_ID)

      {/*利用for循環(huán)向OV7725各寄存器寫入

      配置參數(shù)*/

      for(i=0;i

      {/*Sensor_Config[i].Address是各寄存器地址,Sensor_Config[i].Value是相應(yīng)寄存器參數(shù)*/

      if(0==SCCB_WriteByte(Sensor_Config[i].

      Address,Sensor_Config[i].Value))

      {return ERROR;}

      }

      }

      2.2 圖像顯示模塊

      OV7725自帶的FIFO幀緩存芯片AL422B解決了OV7725與STM32F103之間傳輸速率不一致的問題.OV7725將采集的圖像數(shù)據(jù)緩存至AL422B后,STM32F103讀取數(shù)據(jù)至ILI9341顯存緩存起來,再傳輸給液晶屏顯示.當(dāng)檢測到攝像頭VSYNC引腳的幀結(jié)束信號時,說明OV7725已經(jīng)輸出一幀圖像至幀緩存,STM32即可調(diào)用Imag_Display()函數(shù)將圖像數(shù)據(jù)輸出至液晶屏.該函數(shù)主要代碼如下:

      /*在液晶屏上輸出以sx,sy為起點(diǎn),

      以width,height為寬高的矩形圖像*/

      void Imag_Display(uint16_t sx,uint16_t sy,

      uint16_t width,uint16_t height)

      {uint16_t i,j;

      uint16_t Camera_Data;//RGB565像素值

      /*液晶屏顯示窗口設(shè)置*/

      ILI9341_OpenWindow(sx,sy,width,height);

      /*向液晶屏發(fā)送填充像素命令*/

      ILI9341_Write_Cmd(CMD_SetPixel);

      for(i=0;i

      {for(j=0;j

      {/*循環(huán)讀取幀緩存數(shù)據(jù),循環(huán)次數(shù)即每

      幀像素個數(shù)*/

      READ_FIFO_PIXEL(Camera_Data);

      /*將讀取的數(shù)據(jù)顯示在LCD上*/

      ILI9341_Write_Data(Camera_Data);

      }

      }

      }

      2.3 圖像保存模塊

      當(dāng)按下Key2鍵后,當(dāng)前畫面定格1s,并將截屏圖像以BMP格式文件存儲至SD卡.SD卡內(nèi)移植了FatFs R0.11a版文件系統(tǒng),STM32F103就可以調(diào)用FatFs提供的API對截屏文件進(jìn)行讀寫操作.SD卡支持SPI和SDIO兩種模式,SDIO模式存取速度快,適合大吞吐量的數(shù)據(jù)存儲,本系統(tǒng)選擇SDIO通信模式,其與SD卡的數(shù)據(jù)傳輸由DMA完成.關(guān)于SD卡的SDIO通信建立與FatFs文件系統(tǒng)的移植此處不再詳述,請參閱文獻(xiàn)[9-10].BMP圖片保存代碼由Screen_Capture()函數(shù)實現(xiàn),主要代碼如下:

      int Screen_Capture(uint16_t x,uint16_t y,

      uint16_t Width, uint16_t Height, char * filename)

      { /*初始化BMP文件頭*/

      unsigned char header[54]=

      {0x42,0x4d,0,0,0,0,……};

      ……

      /*設(shè)定BMP文件大小*/

      file_size=(long)Width*(long)Height*3+

      Height*(Width%4)+54;

      /*新建一個BMP文件*/

      bmpres=f_open(&bmpfsrc,(char*)filename,

      FA_CREATE_ALWAYS|FA_WRITE);

      f_close(&bmpfsrc);//先關(guān)閉再寫入

      bmpres=f_open(&bmpfsrc,(char*)filename,

      FA_OPEN_EXISTING|FA_WRITE);

      if(bmpres==FR_OK)

      {/*將BMP頭部信息寫入文件*/

      bmpres=f_write(&bmpfsrc,header,sizeof(unsigned char)*54,&mybw);

      for(i=0;i

      {for(j=0;j

      {read_data=ILI9341_GetPointPixel(

      x+j,y+Height-1-i);

      r=GETR_FROM_RGB16(read_data);

      g=GETG_FROM_RGB16(read_data);

      b=GETB_FROM_RGB16(read_data);

      bmpres=f_write(&bmpfsrc,&b,sizeof(unsigned char),&mybw);

      bmpres=f_write(&bmpfsrc,&g,sizeof(unsigned char),&mybw);

      bmpres=f_write(&bmpfsrc,&r,sizeof(unsigned char),&mybw);}

      if(ucAlign )

      bmpres=f_write(&bmpfsrc,kk,sizeof(unsigned char)*(ucAlign),&mybw);

      }/*自此截屏完畢*/

      f_close(&bmpfsrc);

      return 0;

      }

      }

      3 實驗結(jié)果與分析

      字符顯示測試結(jié)果如圖4所示,應(yīng)用于可視門鈴的圖像顯示測試結(jié)果如圖5所示,SD卡保存的BMP圖片如圖6所示.測試過程中圖像輸出(分辨率320×240)達(dá)20幀/s,輸出圖像較為流暢.由于本實驗攝像頭模塊較為低端,因此更換攝像頭將會得到更加清晰的圖像.

      圖4 字符顯示Fig.4 Character display

      圖5 可視門鈴顯示圖像測試Fig.5 Visual doorbell display image test

      圖6 保存的BMP圖片F(xiàn)ig.6 Saved BMP image

      4 結(jié)束語

      經(jīng)實驗驗證,本文所設(shè)計的嵌入式圖像采集系統(tǒng)可實現(xiàn)對靜態(tài)字符和動態(tài)圖像的流暢顯示,系統(tǒng)穩(wěn)定、可靠,且成本低、功耗低、體積小、可拓展性強(qiáng),可應(yīng)用于家庭可視門鈴、公共安防監(jiān)控、無人或高危工業(yè)現(xiàn)場的實時監(jiān)控.

      猜你喜歡
      液晶屏信號線寄存器
      邁騰B8L 轎車燈光系統(tǒng)應(yīng)急模式控制策略及開關(guān)監(jiān)測信號線作用研究
      汽車電器(2021年12期)2021-12-30 08:46:24
      三類矩形微屏蔽線主模截止波長特性的矢量有限元計算
      Lite寄存器模型的設(shè)計與實現(xiàn)
      基于STM32F4的多通道串口驅(qū)動TFT液晶屏顯示系統(tǒng)設(shè)計
      液晶與顯示(2020年5期)2020-05-06 13:46:58
      聊聊蓄電池的那點(diǎn)事兒小小信號線也能讓蓄電池虧電
      分簇結(jié)構(gòu)向量寄存器分配策略研究*
      FPGA的TFT-LCD真彩液晶屏顯示控制
      基于機(jī)器視覺的液晶屏字符缺陷檢測系統(tǒng)設(shè)計
      基于圖像處理的電能表液晶屏質(zhì)量檢測方法
      電測與儀表(2014年9期)2014-04-15 00:27:02
      高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
      塔城市| 疏附县| 景洪市| 郧西县| 滁州市| 马鞍山市| 临朐县| 泉州市| 德钦县| 阜新市| 剑河县| 伊宁市| 思南县| 太和县| 大新县| 北安市| 崇信县| 达日县| 郧西县| 扎赉特旗| 万载县| 桃源县| 鄂州市| 耒阳市| 宣汉县| 洪泽县| 凤阳县| 洞口县| 焦作市| 井陉县| 南漳县| 兴文县| 邯郸县| 英山县| 苍梧县| 深泽县| 息烽县| 万宁市| 礼泉县| 青浦区| 城市|