資源簡介
基于飛思卡爾單片機(jī)K60的OV7620數(shù)字?jǐn)z像頭DMA讀寫程序

代碼片段和文件信息
/**
*?--------------基于“拉普蘭德K60底層庫V3“的工程(LPLD_OV7670)-----------------
*?@file?LPLD_OV7670.c
*?@version?0.1
*?@date?2013-9-29
*?@brief?利用DMA模塊,實現(xiàn)數(shù)字?jǐn)z像頭OV7670的圖像讀取。
*
*?版權(quán)所有:北京拉普蘭德電子技術(shù)有限公司
*?http://www.lpld.cn
*?mail:support@lpld.cn
*?硬件平臺:??LPLD?K60?Card?/?LPLD?K60?Nano
*
*?本工程基于“拉普蘭德K60底層庫V3“開發(fā),
*?所有開源代碼均在“l(fā)ib“文件夾下,用戶不必更改該目錄下代碼,
*?所有用戶工程需保存在“project“文件夾下,以工程名定義文件夾名,
*?底層庫使用方法見相關(guān)文檔。?
*
*/
#include?“common.h“
#include?“DEV_SCCB.h“
/****************************************
說明:
*將MiniUSB線插入RUSH?Kinetis開發(fā)板的USB
插座,并連接至電腦USB接口。
*將OV7670上位機(jī)波特率設(shè)置為115200
*使用上位機(jī)查看運行結(jié)果
****************************************/
//圖像寬度
#define?H?250
//圖像高度
#define?V?200
#define?PHOTO_SIZE?H*V
void?porta_isr(void);
void?portb_isr(void);
void?gpio_init(void);
void?dma_init(void);
uint8?ov7670_init();
void?delay(void);
GPIO_InitTypeDef?pta_init;
GPIO_InitTypeDef?ptb_init;
GPIO_InitTypeDef?pte_init;
GPIO_InitTypeDef?ptd_init;
DMA_InitTypeDef?dma_init_struct;
uint8?Pix_Data[PHOTO_SIZE];???????//采集50行?200列的圖像數(shù)據(jù)??
uint32?V_Cnt;?????????????????????//行采集計數(shù)
uint8?Is_DispPhoto;???????????????//圖像發(fā)送標(biāo)志
/********************************************************************/
void?main?(void)
{
?
??//關(guān)閉全局中斷
??DisableInterrupts;
??
??ov7670_init();
??delay();
??
??V_Cnt=0;??????????//行計數(shù)
??Is_DispPhoto=0;???//顯示圖像
??
??gpio_init();
??dma_init();
??
??//使能PORTA、PORTB中斷
??enable_irq(PORTB_IRQn);
??enable_irq(PORTA_IRQn);
??//使能全局中斷
??EnableInterrupts;
??
??
??while(1)
??{
????
????if(Is_DispPhoto==1)
????{???
??????Is_DispPhoto?=?0;
??????//顯示或發(fā)送圖像數(shù)據(jù)
??????//可根據(jù)上位機(jī)軟件自行修改此處
??????
??????//清PORTA中斷標(biāo)志
??????LPLD_GPIO_ClearIntFlag(PORTA);
??????//使能PORTA中斷
??????enable_irq(PORTA_IRQn);
??????
????}?
????
??}?
}
void?gpio_init()
{
??//OV數(shù)據(jù)口初始化:PTD8~PTD15
??ptd_init.GPIO_PTx?=?PTD;
??ptd_init.GPIO_Dir?=?DIR_INPUT;
??ptd_init.GPIO_Pins?=?GPIO_Pin8_15;
??ptd_init.GPIO_PinControl?=?IRQC_DIS?|?INPUT_PULL_DIS;
??LPLD_GPIO_Init(ptd_init);
??
??//OV行信號接口初始化:PTB3-H
??ptb_init.GPIO_PTx?=?PTB;
??ptb_init.GPIO_Dir?=?DIR_INPUT;
??ptb_init.GPIO_Pins?=?GPIO_Pin3;
??ptb_init.GPIO_PinControl?=?IRQC_RI|INPUT_PULL_DOWN;
??ptb_init.GPIO_Isr?=?portb_isr;
??LPLD_GPIO_Init(ptb_init);?
??
??//OV場信號接口初始化:PTA5-V
??pta_init.GPIO_PTx?=?PTA;
??pta_init.GPIO_Dir?=?DIR_INPUT;
??pta_init.GPIO_Pins?=?GPIO_Pin5;
??pta_init.GPIO_PinControl?=?IRQC_RI|INPUT_PULL_DOWN;
??pta_init.GPIO_Isr?=?porta_isr;
??LPLD_GPIO_Init(pta_init);?
??
??//OV?PCLK信號接口初始化:PTE6-PCLK
??pte_init.GPIO_PTx?=?PTE;
??pte_init.GPIO_Pins?=?GPIO_Pin6;
??pte_init.GPIO_Dir?=?DIR_INPUT;
??pte_init.GPIO_PinControl?=?IRQC_DMARI?|?INPUT_PULL_DIS;
??LPLD_GPIO_Init(pte_init);?
??
}
void?dma_init()
{
??//DMA參數(shù)配置
??dma_init_struct.DMA_CHx?=?DMA_CH0;????//CH0通道
??dma_init_struct.DMA_Req?=?PORTE_DMAREQ;???????//PORTE為請求源
??dma_init_struct.DMA_MajorLoopCnt?=?H;?//主循環(huán)計數(shù)值:行采集點數(shù),寬度
??dma_init_struct.DMA_MinorByteCnt?=?1;?//次循環(huán)字節(jié)計數(shù):每次讀入1字節(jié)
??d
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2013-10-09?23:35??33-(DMA)LPLD_OV7670\
?????目錄???????????0??2013-10-09?23:35??33-(DMA)LPLD_OV7670\app\
?????文件????????3091??2013-10-04?17:53??33-(DMA)LPLD_OV7670\app\k60_card.h
?????文件????????5190??2013-10-04?16:11??33-(DMA)LPLD_OV7670\app\LPLD_OV7670.c
?????目錄???????????0??2013-11-04?18:54??33-(DMA)LPLD_OV7670\iar\
?????文件?????????169??2013-10-04?15:05??33-(DMA)LPLD_OV7670\iar\LPLD_OV7670.eww
?????文件??????125429??2013-11-04?18:53??33-(DMA)LPLD_OV7670\iar\LPLD_OV7670_K60.dep
?????文件???????94871??2013-10-04?15:05??33-(DMA)LPLD_OV7670\iar\LPLD_OV7670_K60.ewd
?????文件???????84290??2013-11-04?18:53??33-(DMA)LPLD_OV7670\iar\LPLD_OV7670_K60.ewp
- 上一篇:SharpMap官方教程
- 下一篇:16PF測試表
評論
共有 條評論