用F767驱动带FIFO的OV7670(没用DCMI接口),MCU屏变花,不知道错在哪里

2019-07-20 07:41发布

本帖最后由 往事啊 于 2018-6-5 20:09 编辑

OV7670头文件参数定义,7670初始化没问题,场中断和定时函数也没啥问题
#define OV7670_VSYNC          HAL_GPIO_ReadPin(GPIOF,GPIO_PIN_8) //同步信号检测IO
#define OV7670_WRST(n)                (n?HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOF,GPIO_PIN_7,GPIO_PIN_RESET))                //写指针复位
#define OV7670_WREN(n)                (n?HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOF,GPIO_PIN_6,GPIO_PIN_RESET))                //写入FIFO使能
#define OV7670_RCK_H        GPIOE->BSRR=1<<3    //设置读数据时钟高电平
#define OV7670_RCK_L        GPIOE->BSRR=1<<19         //设置读数据时钟低电平
#define OV7670_RRST(n)                (n?HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOF,GPIO_PIN_9,GPIO_PIN_RESET))                 //读指针复位
#define OV7670_CS(n)                (n?HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOE,GPIO_PIN_4,GPIO_PIN_RESET))                //片选信号(OE)

#define OV7670_DATA       (u8)(GPIOC->IDR>>4&0x00ff);

都放在一起太长,2、3楼分别放上更新函数与主函数
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
往事啊
1楼-- · 2019-07-20 08:55
 精彩回答 2  元偷偷看……
往事啊
2楼-- · 2019-07-20 11:39
主函数,应该没啥问题
int main(void)
{
        u8 tm;
        Cache_Enable();
        Stm32_Clock_Init(432,25,2,9);
        HAL_Init();
        delay_init(216);
        uart_init(115200);
        LED_Init();
        LCD_Init();
        LCD_ShowString(30,30,200,16,16,"LCD Init OK!");
        while(OV7670_Init())
        {
                LCD_ShowString(30,50,200,16,16,"OV7670 Error!");
                delay_ms(200);
                LCD_Fill(30,50,239,246,WHITE);
                delay_ms(200);
        }
        LCD_ShowString(30,50,200,16,16,"OV7670 Init OK!");
        delay_ms(1500);
        TIM3_Init(9999,10800-1);
        EXTI8_Init();
        OV7670_Window_Set(12,176,240,320);
        OV7670_CS(0);
        LCD_Clear(BLACK);
        
        while(1)
        {
                camera_refresh();
                tm++;
                if(tm==15)
                {
                        tm=0;
                        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
                }
                delay_ms(10);
        }
        
}
正点原子
3楼-- · 2019-07-20 16:24
先看屏幕跟着摄像头拍摄的内容有 相似的变化没有?如果没有,估计驱动完全就没起作用。
如果有一定动作,说明驱动问题不大,再调调 就O了。
往事啊
4楼-- · 2019-07-20 17:57
 精彩回答 2  元偷偷看……
正点原子
5楼-- · 2019-07-20 20:26
往事啊 发表于 2018-6-6 07:16
我试了  有1/3屏有变化,另外的屏基本不动

说明初始化可能成功了,问题在数据处理这里
往事啊
6楼-- · 2019-07-20 21:36
 精彩回答 2  元偷偷看……

一周热门 更多>