更多內容請註冊成會員並下載參閱附檔文件
引言
隨著市場對更高圖像質量的需求不斷增加,成像技術持續發展,各種技術(例如,3D、計算、運動和紅外線)不斷湧現。
如今的成像應用對高質量、易用性、功率效率、高度集成、快速上市和成本效益提出了全面要求。
為了滿足這些要求,STM32 MCU內置數字照相機接口(DCMI),能夠連接高效的並行照相機模塊。
此外,STM32 MCU還提供許多性能等級(CPU、MCU子系統、DSP和FPU)。它們還提供各種功耗模式、豐富的外設和接口組合(SPI、UART、I2C、SDIO、USB、ETHERNET、I2S...)、豐富的圖形產品組合(LTDC、QSPI、DMA2D...)和業界領先的開發環境,為複雜應用和連接解決方案(IOT)提供保障。
本應用筆記將向STM32用戶介紹一系列基本概念,並為DCMI的功能、架構和配置提供通俗易懂的說明。此外,還提供了各種具體示例作為支持。
1.1 成像的基本概念
本節提供像場的簡介以及基本概念和原理(例如像素、解析度、色深和消隱)的概述。
• 像素:圖像的每個點均體現了彩色圖像的顏色或黑白照片的灰度。通過數值逼近重建最終圖像。該數字圖像是由物理點組成的二維數組。每個點稱為一個像素(源自圖像元素)。換句話說,像素是圖像的最小可控元素。每個像素均可尋址。
圖 1顯示了原始圖像與數值逼近之間的差異。
• 解析度:圖像中像素的數量。像素越多,圖像尺寸越大。當圖像尺寸相同時,像素的數量越多,圖像包含的細節越豐富。
• 色深(位深):用於指示像素顏色的位數。它也被稱為每像素位數(bpp)。
示例:
– 對於二值圖像,每個像素包含一位。每個像素為黑色或白色(0或1)。
– 對於灰度圖,圖像通常為2 bpp(每個像素可以有4級灰階中的1級)至8 bbp
(每個像素可以有256級灰階中的1級)。
– 對於彩色圖像,每個像素的位數為8至24不等(每個像素最多可以有16777216
種可能的顏色)。
• 幀率(視頻):每秒傳輸的幀(或圖像)數,表示為幀每秒(FPS)。
1.2 照相機模塊
照相機模塊由四部分組成:圖像傳感器、鏡頭、印刷電路板(PCB)和接口。
圖 4所示為一些常用照相機模塊的示例。
1.2.1 照相機模塊的組件
下文描述了照相機模塊的四個組件:
圖像傳感器
它是一種模擬設備,能夠將接收到的光轉換為電子信號。這些信號傳輸構成數字圖像的信息。
數字照相機中可以使用兩種類型的傳感器:
• CCD(電荷耦合器件)傳感器
• CMOS(互補金屬氧化物半導體)傳感器。
二者都將光轉換為電子信號,但是有各自的轉換方法。由於性能持續改進且成本不斷下降,CMOS成像裝置已在數字攝影領域占據主導地位。
鏡頭
鏡頭是一種光學鏡片,能夠嚴格複製圖像傳感器捕獲的實際圖像。挑選合適的鏡頭是用戶創造力的一部分,並會顯著影響圖像質量。
印刷電路板 (PCB)
PCB是一種由電子元件組成的板,用於確保良好的極化並保護圖像傳感器。
PCB還為照相機模塊的所有其他部分提供支持。
照相機模塊的互聯
照相機接口是一種橋接器,能夠將圖像傳感器連接到嵌入式系統並發送或接收信號。照相機與嵌入式系統之間傳輸的信號主要是:
• 控制信號
• 圖像數據信號
• 電源信號
• 照相機配置信號。
根據數據信號的傳輸方式,可將照相機接口分為兩種類型:並行和串行接口。
1.2.2 照相機模塊互聯(並行接口)
如上文所述,照相機模塊需要四種主要類型的信號來正確發送圖像數據:控制信號、圖像數據信號、電源信號和照相機配置信號。
圖 5所示為CMOS傳感器及其與MCU互聯的典型框圖。
控制信號
這些信號用於時鐘生成和數據傳輸同步。必須根據照相機規格提供照相機時鐘。
照相機還提供數據同步信號:
• HSYNC,用於行同步
• VSYNC,用於幀同步。
圖像數據信號
每一個這樣的信號發送一位圖像數據。圖像數據信號寬度代表每個像素時鐘要傳輸的位數。該數值取決於照相機模塊的並行接口和嵌入式系統接口。
電源信號
與任何嵌入式電子系統一樣,照相機模塊需要電源。照相機模塊的數據手冊中指定了模塊的工作電壓。
配置信號
這些信號用於:
• 配置合適的圖像特性,例如解析度、格式和幀率
• 配置對比度和亮度
• 選擇接口類型(照相機模塊可支持多個接口:一個並行接口和一個串行接口。然後,用
戶應根據應用選擇最方便的接口。)
大多數照相機模塊通過I2C通信總線實現參數化。
2 STM32數字照相機接口(DCMI)總覽
本節提供了不同STM32器件的數字照相機接口(DCMI)可用性的綜合概述,並給出了關於STM32 MCU架構中DCMI集成的簡單易懂的說明。
2.1 數字攝像頭接口 (DCMI)
數字照相機接口(DCMI)是一種同步並行數據總線。它可以輕鬆集成並輕鬆適應應用的特殊要求。DCMI連接8、10、12和14位CMOS照相機模塊,並支持多種數據格式。
2.2 不同STM32 MCU的DCMI可用性和特性
表 2對內置DCMI的STM32器件進行了匯總;它還顯示了方便DCMI操作或可以在同一應用中與DCMI一起使用的其他硬體資源的可用性。
DCMI應用需要幀緩衝區來存儲採集的圖像。因此,必須根據圖像大小和傳輸速度使用合適的目標存儲區。
在某些應用中,必須連接外部存儲器,以便提供較大空間用於數據存儲。因此,可以使用Quad-SPI。有關更多詳細信息,請參考應用筆記STM32微控制器上的Quad-SPI接口(AN4760)。
DMA2D(Chrom-ART Accelerator™控制器)可用於色彩空間轉換(例如RGB565至ARGB8888),或從一個存儲區到另一個存儲區的數據轉移。
JPEG編解碼器能夠進行數據壓縮(JPEG編碼)或解壓縮(JPEG解碼)。
2.3 智能架構中的DCMI
DCMI通過AHB2外設總線連接到AHB總線矩陣。DMA將訪問它以便傳輸接收到的圖像數據。所接收數據的目標位置取決於應用。
STM32 MCU的智能架構允許:
• DMA(作為AHB主設備)在CPU處理之前採集的圖像(圖像編號n)時自主訪問AHB2外設
並將接收的數據(圖像編號n+1)傳輸到存儲器。
• 使用DMA2D(作為AHB主設備)傳輸或修改接收的數據並將CPU資源保留用於其他任務
• 通過多層總線矩陣實現存儲器吞吐量改善和性能改進。
2.4 具有DCMI和/或照相機模塊的參考板
ST提供許多STM32參考板,例如NUCLEO、Discovery和EVAL板。其中的大多數內置DCMI,有些則具有板載照相機模塊。
可根據應用和硬體資源選擇板。
表 4總結了各種STM32參考板的DCMI、照相機模塊和存儲器可用性。
3 DCMI 描述
本節將詳細描述DCMI及其處理圖像數據和同步信號的方式。
註:DCMI僅支持從設備輸入模式。
3.1 硬體接口
DCMI 包括:
• 最多14條數據線(D13-D0)
• 像素時鐘線DCMI_PIXCLK
• DCMI_HSYNC線(水平同步)
• DCMI_VSYNC線(垂直同步)。
DCMI包含最多17路輸入。DCMI輸入的數量(11、13、15或17路信號)隨用戶使能的數據線數量(8、10、12或14)而變化。
如果使用小於14位的數據寬度,則不得通過GPIO復用功能將未使用引腳分配給DCMI。可將未使用輸入引腳分配給其他外設。
對於內嵌碼同步,DCMI只需要9路輸入(8路數據線和DCMI_PIXCLK)就能正常工作。8個未使用引腳可用於GPIO或其他功能。
如果選擇x位數據寬度(使能x路數據線,x為8、10、12或14),每個DCMI_PIXCLK周期將傳輸x位圖像(或視頻)數據,並壓縮到32位寄存器中。
引言
隨著市場對更高圖像質量的需求不斷增加,成像技術持續發展,各種技術(例如,3D、計算、運動和紅外線)不斷湧現。
如今的成像應用對高質量、易用性、功率效率、高度集成、快速上市和成本效益提出了全面要求。
為了滿足這些要求,STM32 MCU內置數字照相機接口(DCMI),能夠連接高效的並行照相機模塊。
此外,STM32 MCU還提供許多性能等級(CPU、MCU子系統、DSP和FPU)。它們還提供各種功耗模式、豐富的外設和接口組合(SPI、UART、I2C、SDIO、USB、ETHERNET、I2S...)、豐富的圖形產品組合(LTDC、QSPI、DMA2D...)和業界領先的開發環境,為複雜應用和連接解決方案(IOT)提供保障。
本應用筆記將向STM32用戶介紹一系列基本概念,並為DCMI的功能、架構和配置提供通俗易懂的說明。此外,還提供了各種具體示例作為支持。
1.1 成像的基本概念
本節提供像場的簡介以及基本概念和原理(例如像素、解析度、色深和消隱)的概述。
• 像素:圖像的每個點均體現了彩色圖像的顏色或黑白照片的灰度。通過數值逼近重建最終圖像。該數字圖像是由物理點組成的二維數組。每個點稱為一個像素(源自圖像元素)。換句話說,像素是圖像的最小可控元素。每個像素均可尋址。
圖 1顯示了原始圖像與數值逼近之間的差異。
• 解析度:圖像中像素的數量。像素越多,圖像尺寸越大。當圖像尺寸相同時,像素的數量越多,圖像包含的細節越豐富。
• 色深(位深):用於指示像素顏色的位數。它也被稱為每像素位數(bpp)。
示例:
– 對於二值圖像,每個像素包含一位。每個像素為黑色或白色(0或1)。
– 對於灰度圖,圖像通常為2 bpp(每個像素可以有4級灰階中的1級)至8 bbp
(每個像素可以有256級灰階中的1級)。
– 對於彩色圖像,每個像素的位數為8至24不等(每個像素最多可以有16777216
種可能的顏色)。
• 幀率(視頻):每秒傳輸的幀(或圖像)數,表示為幀每秒(FPS)。
1.2 照相機模塊
照相機模塊由四部分組成:圖像傳感器、鏡頭、印刷電路板(PCB)和接口。
圖 4所示為一些常用照相機模塊的示例。
1.2.1 照相機模塊的組件
下文描述了照相機模塊的四個組件:
圖像傳感器
它是一種模擬設備,能夠將接收到的光轉換為電子信號。這些信號傳輸構成數字圖像的信息。
數字照相機中可以使用兩種類型的傳感器:
• CCD(電荷耦合器件)傳感器
• CMOS(互補金屬氧化物半導體)傳感器。
二者都將光轉換為電子信號,但是有各自的轉換方法。由於性能持續改進且成本不斷下降,CMOS成像裝置已在數字攝影領域占據主導地位。
鏡頭
鏡頭是一種光學鏡片,能夠嚴格複製圖像傳感器捕獲的實際圖像。挑選合適的鏡頭是用戶創造力的一部分,並會顯著影響圖像質量。
印刷電路板 (PCB)
PCB是一種由電子元件組成的板,用於確保良好的極化並保護圖像傳感器。
PCB還為照相機模塊的所有其他部分提供支持。
照相機模塊的互聯
照相機接口是一種橋接器,能夠將圖像傳感器連接到嵌入式系統並發送或接收信號。照相機與嵌入式系統之間傳輸的信號主要是:
• 控制信號
• 圖像數據信號
• 電源信號
• 照相機配置信號。
根據數據信號的傳輸方式,可將照相機接口分為兩種類型:並行和串行接口。
1.2.2 照相機模塊互聯(並行接口)
如上文所述,照相機模塊需要四種主要類型的信號來正確發送圖像數據:控制信號、圖像數據信號、電源信號和照相機配置信號。
圖 5所示為CMOS傳感器及其與MCU互聯的典型框圖。
控制信號
這些信號用於時鐘生成和數據傳輸同步。必須根據照相機規格提供照相機時鐘。
照相機還提供數據同步信號:
• HSYNC,用於行同步
• VSYNC,用於幀同步。
圖像數據信號
每一個這樣的信號發送一位圖像數據。圖像數據信號寬度代表每個像素時鐘要傳輸的位數。該數值取決於照相機模塊的並行接口和嵌入式系統接口。
電源信號
與任何嵌入式電子系統一樣,照相機模塊需要電源。照相機模塊的數據手冊中指定了模塊的工作電壓。
配置信號
這些信號用於:
• 配置合適的圖像特性,例如解析度、格式和幀率
• 配置對比度和亮度
• 選擇接口類型(照相機模塊可支持多個接口:一個並行接口和一個串行接口。然後,用
戶應根據應用選擇最方便的接口。)
大多數照相機模塊通過I2C通信總線實現參數化。
2 STM32數字照相機接口(DCMI)總覽
本節提供了不同STM32器件的數字照相機接口(DCMI)可用性的綜合概述,並給出了關於STM32 MCU架構中DCMI集成的簡單易懂的說明。
2.1 數字攝像頭接口 (DCMI)
數字照相機接口(DCMI)是一種同步並行數據總線。它可以輕鬆集成並輕鬆適應應用的特殊要求。DCMI連接8、10、12和14位CMOS照相機模塊,並支持多種數據格式。
2.2 不同STM32 MCU的DCMI可用性和特性
表 2對內置DCMI的STM32器件進行了匯總;它還顯示了方便DCMI操作或可以在同一應用中與DCMI一起使用的其他硬體資源的可用性。
DCMI應用需要幀緩衝區來存儲採集的圖像。因此,必須根據圖像大小和傳輸速度使用合適的目標存儲區。
在某些應用中,必須連接外部存儲器,以便提供較大空間用於數據存儲。因此,可以使用Quad-SPI。有關更多詳細信息,請參考應用筆記STM32微控制器上的Quad-SPI接口(AN4760)。
DMA2D(Chrom-ART Accelerator™控制器)可用於色彩空間轉換(例如RGB565至ARGB8888),或從一個存儲區到另一個存儲區的數據轉移。
JPEG編解碼器能夠進行數據壓縮(JPEG編碼)或解壓縮(JPEG解碼)。
2.3 智能架構中的DCMI
DCMI通過AHB2外設總線連接到AHB總線矩陣。DMA將訪問它以便傳輸接收到的圖像數據。所接收數據的目標位置取決於應用。
STM32 MCU的智能架構允許:
• DMA(作為AHB主設備)在CPU處理之前採集的圖像(圖像編號n)時自主訪問AHB2外設
並將接收的數據(圖像編號n+1)傳輸到存儲器。
• 使用DMA2D(作為AHB主設備)傳輸或修改接收的數據並將CPU資源保留用於其他任務
• 通過多層總線矩陣實現存儲器吞吐量改善和性能改進。
2.4 具有DCMI和/或照相機模塊的參考板
ST提供許多STM32參考板,例如NUCLEO、Discovery和EVAL板。其中的大多數內置DCMI,有些則具有板載照相機模塊。
可根據應用和硬體資源選擇板。
表 4總結了各種STM32參考板的DCMI、照相機模塊和存儲器可用性。
3 DCMI 描述
本節將詳細描述DCMI及其處理圖像數據和同步信號的方式。
註:DCMI僅支持從設備輸入模式。
3.1 硬體接口
DCMI 包括:
• 最多14條數據線(D13-D0)
• 像素時鐘線DCMI_PIXCLK
• DCMI_HSYNC線(水平同步)
• DCMI_VSYNC線(垂直同步)。
DCMI包含最多17路輸入。DCMI輸入的數量(11、13、15或17路信號)隨用戶使能的數據線數量(8、10、12或14)而變化。
如果使用小於14位的數據寬度,則不得通過GPIO復用功能將未使用引腳分配給DCMI。可將未使用輸入引腳分配給其他外設。
對於內嵌碼同步,DCMI只需要9路輸入(8路數據線和DCMI_PIXCLK)就能正常工作。8個未使用引腳可用於GPIO或其他功能。
如果選擇x位數據寬度(使能x路數據線,x為8、10、12或14),每個DCMI_PIXCLK周期將傳輸x位圖像(或視頻)數據,並壓縮到32位寄存器中。
3.2 照相機模塊和DCMI的互聯
如第 1.2.2節:照相機模塊互聯(並行接口)所述,照相機模塊通過三類信號連接到DCMI:
• DCMI時鐘和數據信號
• I2C配置信號
3.3 DCMI 功能說明
以下步驟總結了內部DCMI元件操作,並給出了通過系統總線矩陣的數據流的示例:
• 在接收到不同信號後,同步器控制通過DCMI不同元件(數據提取器、FIFO和32位數據寄
存器)的數據流。
• 通過提取器提取的數據在4字FIFO中打包,然後在32位寄存器中排序。
• 在寄存器中將32位數據塊打包後,將生成DMA請求。
• DMA將數據傳輸至相應的目標存儲區。
• 存儲器中保存的數據的處理方式可能存在差異,具體取決於應用。
註:假定在照相機模塊中執行所有圖像預處理。
3.4 數據同步
照相機接口具有可配置並行數據接口(8至14路數據線),以及像素時鐘線DCMI_PIXCLK(上升/下降沿配置)、水平同步線DCMI_HSYNC和垂直同步線DCMI_VSYNC,可設定極性。
DCMI_PIXCLK和AHB時鐘必須滿足2.5的最小AHB/DCMI_PIXCLK比值。
某些照相機模塊支持兩種類型的同步,而其他則支持硬體或內嵌碼同步。
3.5 捕獲模式
DCMI支持兩種類型的捕獲:快照(一幀)和連續抓取(連續多幀)。
根據DCMI_CR寄存器的配置,用戶可以通過選擇要捕獲的字節、行和幀來控制捕獲率。
這些功能用於轉換圖像的顏色格式和/或降低圖像解析度(通過每兩行捕獲一行,將垂直解析度降低一半)。
3.6 數據格式和存儲
DCMI支持以下數據格式:
• 8位逐行視頻:單色或原始拜爾格式
• YCbCr 4:2:2 逐行視頻
• RGB565逐行視頻
• 壓縮數據(JPEG)
對於單色、RGB或YCbCr數據:
• 最大輸入大小為2048 * 2048像素
• 以光柵模式保存幀緩衝區。
JPEG壓縮數據沒有大小限制。
對於單色、RGB和YCbCr格式,以光柵模式保存幀緩衝區,如圖 25所示。
3.7 其他功能
3.7.1 裁剪功能
照相機接口可通過裁剪功能從收到的圖像中選擇一個矩形窗口。
在32位寄存器DCMI_CWSTRT中指定起始坐標(左上角)。
在32位寄存器DCMI_CWSIZE中,以像素時鐘數(水平尺寸)和行數(垂直尺寸)指定窗口大小。
4 DCMI 配置
在選擇與STM32 MCU相連的照相機模塊時,用戶應考慮一些這樣的參數:像素時鐘、支持的數據格式和解析度。
為了正確地實現其應用,用戶需要執行以下配置:
• 配置GPIOs。
• 配置時序和時鐘。
• 配置DCMI外設。
• 配置DMA。
• 配置照相機模塊:
– 配置I2C以便進行照相機模塊的配置和控制
– 設置參數,例如對比度、亮度、色彩效果、極性和數據格式。
註:建議在開始配置前復位DCMI外設和照相機模塊。DCMI可通過置位RCC_AHB2RSTR寄存器中的相應位來復位,這可以復位時鐘域。
5 功耗和性能考慮
5.1 功耗
為了在應用處於低功耗模式時節省更多能量,建議在STM32進入低功耗模式之前使照相機模塊進入低功耗模式。
使照相機模塊進入低功耗模式可顯著降低功耗。
以OV9655 CMOS傳感器為例:
• 在激活模式下,工作電流為20 mA。
• 在待機模式下,對於I2C發起的待機,電流需求降至1 mA(內部電路活動暫停但時鐘不停止),而對於引腳發起的待機,則降至10 μA(內部器件時鐘停止且所有內部計數器復位)。有關詳細信息,請參見相應的照相機數據手冊。
5.2 性能考慮
對於所有STM32 MCU而言,每個像素時鐘要傳輸的字節數取決於擴展數據模式:
• 如果將DCMI配置為接收8位數據,照相機接口將用4個像素時鐘周期捕獲一個32位數據
字。
• 如果將DCMI配置為接收10、12或14位數據,照相機接口將用2個像素時鐘周期捕獲一個32位數據字。
表 10總結了使用不同數據寬度配置時的最大數據流。
6 DCMI應用示例
本章提供大量與DCMI的使用有關的信息,以及示例實現的分步描述。
6.1 DCMI應用場景示例
使用DCMI和其他STM32外設可實現多種成像應用。下面是一些應用示例:
• 機器視覺
• 玩具
• 生物統計
• 安全和視頻監視
• 門鈴和家居自動化
• 工業監控系統和自動化檢查
• 系統控制
• 訪問控制系統
• 條形碼掃描
• 視頻會議
• 無人機
• 實時視頻數據流和電池供電攝影機。
圖 43提供了使用STM32 MCU的應用示例,它允許用戶捕獲數據、將數據保存在內部或
外部存儲器中、顯示數據、通過網際網路共享數據以及與人類通信。
6.2 STM32Cube固件示例
STM32CubeF2、STM32CubeF4、STM32CubeF7和STM32CubeL4固件包提供大量在相應的
板上實現並測試的示例。表 11提供了不同STM32Cube固件的DCMI示例和應用的總覽。
6.3 基於STM32CubeMX的DCMI示例
本節描述了五個使用DCMI的典型示例:
• RGB數據的捕獲和顯示:捕獲的數據為RGB565格式,QVGA(320x240)解析度,保存在
SDRAM中並顯示在LCD-TFT上。
• YCbCr數據的捕獲:捕獲的數據為YCbCr格式,QVGA(320x240)解析度,保存在SDRAM
中。
• 僅Y分量數據的捕獲:DCMI被配置為接收僅Y分量數據,數據將保存在SDRAM中。
• SxGA解析度捕獲(YCbCr數據格式):捕獲的數據為YCbCr格式,SxGA(1280x1024)分
辨率,保存在SDRAM中。
• JPEG數據的捕獲:捕獲的數據為JPEG格式,將保存在SDRAM中。
所有這些示例均在32F746GDISCOVERY上使用STM32F4DIS-CAM(OV9655 CMOS傳感
器)實現,只有JPEG數據捕獲是在STM324x9I-EVAL(OV2640 CMOS傳感器)上實現
如圖 44所示,應用包含三個主要步驟:
• 將接收到的數據通過其外設埠從DCMI導入到DMA(將暫時保存在FIFO中)。
• 將數據從FIFO傳輸到SDRAM
• 從SDRAM導入要在LCD-TFT上顯示的數據,僅適用於RGB數據格式。對於YCbCr或JPEG數據
格式,用戶必須將接收到的數據轉換為要顯示的RGB格式。
7 支持的設備
要知道CMOS傳感器(照相機模塊)與DCMI是否兼容,用戶必須檢查CMOS傳感器規格中的以下幾點:
• 並行接口(8、10、12或14位)
• 控制信號(VSYNC、HSYNC和PIXCLK)
• 支持的像素時鐘頻率輸出
• 支持的數據輸出。
與STM32 DCMI兼容的照相機模塊和CMOS傳感器有許多。表 12中提到了一些照相機模塊。
8 結論
DCMI外設提供了一種將照相機模塊連接到STM32 MCU的高效接口,該接口支持高速度、高解析度、各種數據格式和數據寬度。
與各種外設和STM32 MCU中集成的接口一起使用時,得益於STM32智能架構,DCMI可以用在大型的複雜成像應用中。
本應用筆記涵蓋不同STM32 MCU的DCMI外設,提供正確使用DCMI和成功實現應用所必需的所有信息,從兼容照相機模塊的選擇到具體示例的實現。
評論