(3)DCMI接口及DMA部分配置
DCMI接口及DMA部分配置主要體現(xiàn)在DCMI接口、DMA控制器以及圖像傳感器用到的其他I/O端口所在時鐘總線使能方面;由于篇幅所限,現(xiàn)將一些重要的配置,僅供參考。
DCMI_InitStructure.DCMI_CaptureMode=DCMI_CaptureMode_Continuous;//連續(xù)模式
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;//8位數(shù)據(jù)模式
DCMI_Init(&DCMI_InitStructure);//初始化上面的攝像頭配置
DCMI_ITConfig(DCMI_IT_VSYNC,ENABLE);//垂直同步中斷
DMA_InitStructure.DMA_PeripheralBaseAddr=DCMI_DR_ADDRESS;//外設(shè)內(nèi)存地址
DMA_InitStructure.DMA_M(jìn)emory0BaseAddr=(uint32_t)DataBuf;//內(nèi)存地址
DMA_InitStructure.DMA_DIR=DMA_DIR_PeripheralToMemory;//數(shù)據(jù)方向從外設(shè)到內(nèi)存
DMA_InitStructure.DMA_BufferSize=19200;//每次轉(zhuǎn)移一幀數(shù)據(jù)
DMA_InitStructure.DMA_PeripheralInc=DMA_PeripheralInc_Disable;//外設(shè)地址不改變
DMA_InitStructure.DMA_M(jìn)emoryInc=DMA_M(jìn)emoryInc_Enable;//內(nèi)存地址在每次寫入后自增
DMA_InitStructure.DMA_PeripheralDataSize=DMA_PeripheralDataSize_Word;//外設(shè)每單位長度DMA_InitStructure.DMA_M(jìn)emoryDataSize
=DMA_M(jìn)emoryDataSize_HalfWord;//內(nèi)存沒單位長度
DMA_InitStructure.DMA_M(jìn)ode=DMA_M(jìn)ode_Circular;//運(yùn)行模式,循環(huán)
DMA_InitStructure.DMA_Priority=DMA_Priority_High;//優(yōu)先模式,高
DMA_InitStructure.DMA_FIFOMode=DMA_FIFOMode_Enable;//開啟先入先出模式
DMA_InitStructure.DMA_FIFOThreshold=DMA_FIFOThreshold_Full;//FIFO水平閾值
DMA_InitStructure.DMA_M(jìn)emoryBurst=DMA_M(jìn)emoryBurst_Single;//內(nèi)存單通道
DMA_InitStructure.DMA_PeripheralBurst=DMA_PeripheralBurst_Single;//外設(shè)單通道
DMA_Init(DMA2_Stream1,&DMA_InitStructure);//初始化上面的
DMA配置
DMA_ITConfig(DMA2_Stream1,DMA_IT_TC,ENABLE);//中斷開啟
系統(tǒng)啟動后,首先利用各部分初始化函數(shù)對系統(tǒng)進(jìn)行初始化,在整個系統(tǒng)初始化成功后,打開系統(tǒng)中斷,準(zhǔn)備進(jìn)行圖像采集。當(dāng)垂直同步中斷產(chǎn)生時,DCMI_IT_VSYNC置1,表示一幀圖像數(shù)據(jù)采集完畢,微處理器通過控制DMA將數(shù)據(jù)傳輸?shù)綌?shù)據(jù)緩沖區(qū)中,等待數(shù)據(jù)的發(fā)送。
2.2、圖像數(shù)據(jù)的遠(yuǎn)程傳輸
圖像數(shù)據(jù)的遠(yuǎn)程傳輸,最關(guān)鍵的部分是對網(wǎng)絡(luò)硬件的初始化以及對Lwip的初始化,遠(yuǎn)程傳輸程序首先是完成對Lwip協(xié)議棧的移植,然后設(shè)置好服務(wù)器端的IP地址和端口,綁定socket套接字到服務(wù)器地址,然后對客戶端進(jìn)行監(jiān)聽,當(dāng)與客戶端連接成功后,接收來自客戶端的發(fā)送數(shù)據(jù)命令,接收到發(fā)送數(shù)據(jù)命令后,及時將緩沖區(qū)存放的圖像數(shù)據(jù)通過TCP/IP協(xié)議發(fā)送到客戶端。遠(yuǎn)程傳輸程序?qū)崿F(xiàn)流程圖如圖5所示。
圖5 遠(yuǎn)程傳輸程序?qū)崿F(xiàn)流程圖
3、測試結(jié)果
?
圖6 ?遠(yuǎn)程采集終端實物圖
?
圖7 ?上位機(jī)測試結(jié)果圖
按照上述終端采集硬件和終端采集軟件的設(shè)計,通過軟件調(diào)試成功后,并對軟硬件進(jìn)行實驗驗證,圖6表示本遠(yuǎn)程采集終端的實物圖,中間部分為信號采集處理板,它采集現(xiàn)場的圖像信息,并通過以太網(wǎng)的方式發(fā)送給上位機(jī),上位機(jī)通過顯示采集到的圖片,讓遠(yuǎn)程操作者實時的知道現(xiàn)場的情況。圖7表示上位機(jī)的測試結(jié)果。
評論