二师兄2_0 2023-07-13 11:50 采纳率: 22.2%
浏览 16

STM32F4驱动OV2640

请教一个问题
STM32F407驱动OV2640的时候,DCMI->DR中有数据,DMA传输也正常,但是LCD却不显示图像。
摄像头模块是微雪的OV2640模块,有没有人知道是怎么回事?一个人学习,效率真的低,遇到问题,解决太麻烦了。

  * @brief  配置OV2640 DMA传输
  * @param  none
  * @retval   none
**/
void OV2640_DMA_Config(uint32_t DMA_Memory0BaseAddr,uint16_t DMA_BufferSize)
{
    DMA_InitTypeDef    DMA_InitStructure;
//    NVIC_InitTypeDef   NVIC_InitStructure;
    
    RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_DMA2,ENABLE);
    DMA_Cmd(DMA2_Stream1,DISABLE);//禁止DMA2数据流1
    while(DMA_GetCmdStatus(DMA2_Stream1) != DISABLE);
    
    DMA_InitStructure.DMA_Channel = DMA_Channel_1;
    DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;//DCMI数据寄存器地址
    DMA_InitStructure.DMA_Memory0BaseAddr = DMA_Memory0BaseAddr;////DMA传输的目的地址
    DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;//外设到内存
    DMA_InitStructure.DMA_BufferSize = DMA_BufferSize;//传入的数据大小
    DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;//外设不递增
    DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;//液晶数据地址不自增
    DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;//外设数据宽度
    DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;//内存数据宽度
    DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;//循环模式
    DMA_InitStructure.DMA_Priority = DMA_Priority_High;//优先级高
    DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;//使能FIFO模式
    DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;//FIFO阈值
    DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_INC8;//存储器突发模式,8节拍的增量突发模式
    DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;//外设突发模式,单次突发
    
    DMA_Init(DMA2_Stream1,&DMA_InitStructure);
    DMA_Cmd(DMA2_Stream1,ENABLE);
    while(DMA_GetCmdStatus(DMA2_Stream1) != ENABLE);
}

DCMI配置

void OV2640_Init(void)
{
    DCMI_InitTypeDef   DCMI_InitStructure;
    NVIC_InitTypeDef   NVIC_InitStructure;
    
    RCC_AHB2PeriphClockCmd(RCC_AHB2Periph_DCMI,ENABLE);
    
    /*DCMI配置*/
    DCMI_InitStructure.DCMI_CaptureMode = DCMI_CaptureMode_Continuous;//选择连续模式或拍照模式
    DCMI_InitStructure.DCMI_SynchroMode = DCMI_SynchroMode_Hardware;//选择硬件同步模式还是内嵌码同步模式
    DCMI_InitStructure.DCMI_PCKPolarity = DCMI_PCKPolarity_Rising;//设置像素时钟的有效边沿
    DCMI_InitStructure.DCMI_VSPolarity = DCMI_VSPolarity_Low; //设置VSYNC的有效电平
    DCMI_InitStructure.DCMI_HSPolarity = DCMI_HSPolarity_Low; //设置HSYNC的有效电平
    DCMI_InitStructure.DCMI_CaptureRate = DCMI_CaptureRate_All_Frame;//设置图像的采集间隔
    DCMI_InitStructure.DCMI_ExtendedDataMode = DCMI_ExtendedDataMode_8b;//设置数据线的宽度
    
    DCMI_Init(&DCMI_InitStructure);
    //配置DMA传输
    OV2640_DMA_Config((uint32_t)FSMC_Addr_LCD_DATA,1);
    /* 配置中断 */
    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
    /* 配置帧中断,接收到帧同步信号,就进入中断 */
    NVIC_InitStructure.NVIC_IRQChannel = DCMI_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
    NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStructure);
    DCMI_ITConfig(DCMI_IT_FRAME,ENABLE);
    
}

  • 写回答

2条回答 默认 最新

  • 少林and叔叔 2023-07-13 13:40
    关注

    首先确定是LCD显示的问题还是摄像头采集图像的问题?

    评论

报告相同问题?

问题事件

  • 创建了问题 7月13日

悬赏问题

  • ¥15 esp32cam串口图传
  • ¥15 C# 用partial定义部分类无法快速预览代码
  • ¥15 fastreport 代码无法设置最后一页横线不显示
  • ¥15 stm32u535芯片usb hid custom类接收数据有问题
  • ¥15 传染病最优控制问题,控制为什么没起作用
  • ¥15 ue5.3 pico打包失败 求帮助
  • ¥15 请教,这是用chatgpt写的CAD LISPD脚本,需求是画一个由双直线组成的矩形
  • ¥50 微信小程序 成功包奶茶啊
  • ¥15 计算机博弈的六子棋代码
  • ¥15 在Fetch API中传送的参数为何不起作用?