|
花了幾個月的時間制作了一塊STM32F407ZGT的開發板,學習并體驗一下STM32F4系列的性能。在硬件方面我花了不少心思,主要為了硬件的穩定性和兼容性,另外功能要兼顧到大部分的應用,下面介紹下具體配置:
1.主芯片STM32F407ZGT6
2.128Mbit NOR_FLASH
3.256kx16bit SRAM
4.32Kbit I2C EEPROM
5.16Mbit SPI FLASH
6.24bit音頻DAC(內置耳機輸出放大器)
7.CAN收發芯片
8.10M/100M PHY(支持MII和RMII)
9.鍵盤掃描芯片(最大可擴展8x8鍵盤)
10.攝像頭模塊(OV7670),板載24M有源晶振
11.RS232收發芯片
12.自彈式SD卡接口(支持SPI模式)
13.4位撥碼開關(用于啟動模式選擇,音頻控制方式和以太網速度設置)
14.雙USB口,USB-OTG-FS(有USB電源開關)和USB-HS-Device(使用內置phy,速度FS)
15.20k可調電阻和5V蜂鳴器
16.電池座(不含電池,使用電池CR2120)
17.3.2寸TFT LCD(控制器ili9320),觸摸屏
靈致開發板簡介.pdf
(410.63 KB, 下載次數: 25)
2016-10-18 14:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
170420kvkhhkllqv2kcqhm.jpg.thumb.jpg (71.57 KB, 下載次數: 79)
下載附件
2016-10-18 14:12 上傳
這塊開發板基本涵蓋了STM32F407的主要應用,在調試中也遇到了不少問題,稀奇古怪的原因都有,有時間的話我想慢慢總結出來作為以后的知識積累。首先就其中調試OV7670攝像頭模塊的問題,在這里和大家分享一下。OV7670攝像頭需要外部輸入時鐘,我在開發板上設置了24MHz有源晶振,然后通過2x9的2.54mm排座外接攝像頭模塊。如下圖所示
170418mz88km98ranbr9o8.jpg.thumb.jpg (50.3 KB, 下載次數: 71)
下載附件
2016-10-18 14:12 上傳
接口連接圖如下:
170720o2711xxk9j3jy66w.jpg.thumb.jpg (33.07 KB, 下載次數: 97)
下載附件
2016-10-18 14:12 上傳
攝像頭輸出的像素時鐘和HSYNC,VSYNC和數據等信號連接到407的DCMI接口。
攝像頭的配置接口是SCCB,按照數據手冊和相關資料中的說明
OV7670照相模組硬件應用指南1.01 OVT.pdf
(892.67 KB, 下載次數: 37)
2016-10-18 14:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
OV7670的SCCB兼容I2C接口,不過我應用407的I2C去調試的時候就是得不到應答,后來查看了一些資料,發現SCCB接口還是和I2C有些不同,除了不需要上拉電阻之外,估計還有其他電特性因素的差異,看了一些案例都是使用GPIO模擬的方式去做。后來我也試著去調了一下,結果很快就成了,終于看到了圖像出來。再后來就是設置寄存器一步步將圖像調正常。建議大家先將攝像頭設置成彩條輸出測試方式去查看顯示是否正常(主要涉及寄存器0x70,0x71)。
在攝像頭例程中使用的是DMA采集的方式,故需要注意的是DMA的相關設置,還有就是寄存器0x15的值,這點很關鍵。
/* DCMI configuration */
//DCMI捕捉模式的設置,默認是連續模式,會看到連續的移動圖像
//用戶在使用的時候可調整為SnapShot(抓拍),也就是單幀
DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;//DCMI_CaptureMode_SnapShot;
DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;
DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Falling;
DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_High;
DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_High;
DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;
DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;
開發板使用的是3.2寸TFT液晶,控制器ili9320,在設置攝像頭位連續捕獲的方式后,在液晶屏上會看見連續而移動的圖像,為了保持固定的連續圖像我設置了單幀中斷,可以通過不斷刷新顯示窗口來固定住圖像,另外如果有需要的話可以添加SD存儲功能和一鍵拍照,成為簡易的相機。
/*DCMI中斷處理函數,這里使用的是垂直同步中斷,用戶可根據需要自己調整中斷的方式*/
void DCMI_IRQHandler(void)
{
if( DCMI_GetITStatus(DCMI_IT_VSYNC)!= RESET)
{
DCMI_ClearITPendingBit(DCMI_IT_VSYNC);
//LCD_WindowModeDisable();
LCD_SetDisplayWindow(239, 319, 240, 320);
LCD_WriteRAM_Prepare();
}
}
根據資料,調整OV7670內部時鐘應該可以改變幀率,按照例程中寄存器列表去配置后用示波器測得幀率為15幀,然而在調整內部時鐘后圖像幀率(分辨率320x240)好像沒什么變化,這是我比較納悶的地方,
可能需要多個寄存器的配合,這點想請教各位,有熟悉的大神麻煩講解下。
以下是IAR和KEIL兩個版本的攝像頭工程文件,大家有興趣的話可以做個參考,另外還有靈致開發板的淘寶鏈接網址,有需要的可以去看看。
Camera_IAR.rar
(514.78 KB, 下載次數: 19)
2016-10-18 14:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
Camera_KEIL.rar
(7.03 MB, 下載次數: 97)
2016-10-18 14:11 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|
|