找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5798|回復(fù): 1
收起左側(cè)

OV7670迷你STM32照相機 制作資料 含電路圖 源碼

[復(fù)制鏈接]
ID:140725 發(fā)表于 2016-10-12 16:12 | 顯示全部樓層 |閱讀模式
1 軟件程序設(shè)計
        簡易聲音播放器的軟件工作過程:通過SPI1從SD卡中讀取聲波文件,將所讀取的部分存放在一個緩沖
        器中,利用TIMER2通道1定期產(chǎn)生的中斷,從緩沖器中讀取聲音數(shù)據(jù),然后根據(jù)聲音數(shù)據(jù)通過TIMER4的
        通道3產(chǎn)生不同頻率方波輸出。這里使用了兩個緩沖器,一個用于存放從SD卡讀到的聲音數(shù)據(jù),另一個
        用于將聲音數(shù)據(jù)輸出到PWM,兩個緩沖區(qū)的功能不斷交替,形成一個由2個緩沖區(qū)構(gòu)成的環(huán)形緩沖。播
        放聲波文件由PC機通過超級終端以命令的方式選擇,聲音的播放狀態(tài)也顯示在PC機超級終端上。
該系統(tǒng)軟件程序主要包含以下源文件,下面分別介紹其中主要的一些函數(shù)。限于篇幅這里不能給出工程的
全部源代碼,讀者可在realview網(wǎng)站下載。

main.c
該源文件包含以下幾個主要函數(shù):
         SetupClock:用于初始化并設(shè)置系統(tǒng)時鐘,并允許GPIOA、GPIOB、TIM2、TIM4和SPI的時鐘;
         Speaker_Timer_Config:用于配置定時器TIM2和TIM4,TIM4的通道3處于PWM1模式;TIM2的通道1工作于
        輸出比較模式,定期發(fā)出中斷,在每次中斷修改TIM4通道3相關(guān)寄存器,使之產(chǎn)生不同頻率的方波;
         USART_Scanf_Name和USART_Scanf_Cmd:用于從超級終端獲取輸入字符串;
         PrintPass:用于在超級終端上輸出提示符"X:>";
         main: 主函數(shù),首先初始化系統(tǒng)時鐘、串口、連接SD卡的SPI1,與SD進行通訊初始化,檢測并在超級
        終端上打印SD卡的信息;然后根據(jù)用戶在超級中輸入的命令進行操作,這里有"dir"、"cd"、"read"、
        "free"、"play"五個簡單的命令,分別是目錄項列表、目錄更換、以文本方式讀取文件、查詢SD空余
        空間和播放聲音文件;如果輸入"Play ***.wav",則處理器開始從SD卡中讀取相應(yīng)的聲波文件,并將
        其放入相應(yīng)的緩沖區(qū);

msd.c
該文件用于提供SD卡的驅(qū)動,由ST公司所帶例程提供,本系統(tǒng)用到以下一些函數(shù)。
         SPI_Config:配置與SD卡相連接的SPI1;
         MSD_Init:初始化SD卡通訊;
         MSD_WriteByte:向SD卡寫一個字節(jié);
         MSD_WriteByte:從SD卡讀一個字節(jié);
         MSD_GoIdleState:令SD卡處于空閑態(tài);
         Get_Medium_Characteristics:獲取SD卡的容量;
         MSD_SendCmd:向SD卡發(fā)命令;
         MSD_GetResponse:從SD卡獲取響應(yīng);
         MSD_ReadBlock:從SD卡讀取一塊數(shù)據(jù);

fat16.c
該文件提供FAT16文件系統(tǒng)的支持,主要包含以下一些函數(shù):
         ReadMBR:讀取MBR數(shù)據(jù)結(jié)構(gòu);
         ReadBPB:讀取BPB數(shù)據(jù)結(jié)構(gòu);
         ReadFAT:讀取文件分配表指定項;
         ReadBlock:讀取一個扇區(qū);
         FAT_Init:獲取FAT16文件系統(tǒng)基本信息;
         DirStartSec:獲取根目錄的開始扇區(qū)號;
         DataStartSec:獲取數(shù)據(jù)區(qū)的開始扇區(qū)號;
         ClusConvLBA:獲取一個簇的開始扇區(qū)號;
         LBAConvClus:轉(zhuǎn)換扇區(qū)號與簇號之間的關(guān)系;
         LBAConvClus:計算可用空間,返回字節(jié)數(shù);
         GetFileName:獲取指定文件的首扇區(qū)號;
         List_DateAndTime:獲取文件或目錄項的日期時間;
         SearchFoler:在指定范圍內(nèi)查找子目錄;
         List_AllDir_Long:列出指定范圍內(nèi)的目錄及目錄信息;
         FAT_FileOpen:打開指定文件;
         FAT_FileRead:讀取文件數(shù)據(jù);

uart.c
該文件提供USART串口驅(qū)動函數(shù),可以參考7.5串行通訊接口實例的程序;

hw_config.c
該文件包含系統(tǒng)初始化設(shè)置函數(shù)和中斷配置函數(shù)。
         Set_System:用于提供系統(tǒng)時鐘及電源設(shè)置;
         NVIC_Config:用于設(shè)置中斷向量,允許TIM2中斷;

stm32f10x_it.c
該文件僅包含一個函數(shù)TIM2_IRQHandler,即在每次TIM2中斷時從緩沖器中讀取音頻數(shù)據(jù)送TIM4定時器,
以用于產(chǎn)生不同頻率的聲音。

UnicodeToGB2312.c
該文件僅包含一個函數(shù)UnicodeToGB2312,處理從UniCode編碼到GB2312字符的轉(zhuǎn)換,用于處理長文件名。

2 運行過程
(1)        使用MDK通過ULINK 2仿真器連接開發(fā)板,或使用兩根USB電纜分別將CN1和CN5 與PC機USB端口相連
(使用板上自帶的UlinkMe);
(2)        使用串口線將開發(fā)板的串口COM0與PC機連接,在PC機上運行windows自帶的超級終端串口通信程序
(波特率115200、1位停止位、無校驗位、無硬件流控制);或者使用其它串口通信程序;
(3)        打開實驗例程目錄MP3 Player\Simple Wave Player下的Simple Wave Player.Uv2工程,將其編譯鏈
接后燒寫到開發(fā)板中;
(4)        將帶有測試聲波文件TEST1.wav、TEST2.wav拷貝到SD卡中,并將SD插入評估板的SD連接器中;
(5)        重啟動開發(fā)板,在超級終端上將看到SD卡的信息以及提示符"X:>",鍵入dir命令然后回車將列出
SD卡上的所有文件和目錄;
(6)        可在超級終端中輸入"dir"、"cd"、"free"、"read"等命令(注:read 命令后跟文件名;讀出并
輸出文件的文本內(nèi)容,可以正確顯示文本文件如以txt,c,h,s為后綴的文件),觀察運行結(jié)果;注意,
由于程序中沒有進行大小寫轉(zhuǎn)換,因此命令只能使用小寫;
(7)        在超級終端中輸入"play TEST1.wav"或"play TEST2.wav",如果程序運行正常,通過開發(fā)板的揚聲
器或者耳機將能聽到音樂聲。
0.png 0.png

所有資料下載含源程序:
迷你STM32照相機OV7670.zip (4.41 MB, 下載次數(shù): 108)
回復(fù)

使用道具 舉報

ID:933309 發(fā)表于 2021-6-5 18:36 | 顯示全部樓層
可惜沒有Altium Designer的電路圖工程文件,只是原理圖的pdf
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表