想做从摄像头接收数据然后直接传输给上位机接收,但是从串口接收到的数据一直都是0,这可能是什么原因呢?摄像头初始化可以,串口接收数据也是正常的,就是从FIFO读取数据的时候都是0
void camera_refresh(void)
{
u32 j;
u16 color=0x12;
if(ov_sta==2)
{
OV7670_RRST=0;
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_RRST=1;
OV7670_RCK_H;
for(j=0;j<76800;j++)
{
OV7670_RCK_L;
color=GPIOA->IDR&0x00FF;
OV7670_RCK_H;
color<<=8;
OV7670_RCK_L;
color|=GPIOA->IDR&0x00FF;
OV7670_RCK_H;
printf("%x",color);
}
ov_sta=0;
ov_frame++;
}
}
这是显示函数,我把有关LCD屏的代码都注释了,想直接用printf传输数据
int main(void)
{
u8 key;
u8 lightmode=0,saturation=2,brightness=2,contrast=2;
u8 effect=0;
u8 i=0;
u8 msgbuf[15];
u8 tm=0;
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
uart_init(115200);
while(OV7670_Init()){}
printf("initi successful");
delay_ms(1000);
OV7670_Light_Mode(lightmode);
OV7670_Color_Saturation(saturation);
OV7670_Brightness(brightness);
OV7670_Contrast(contrast);
OV7670_Special_Effects(effect);
TIM4_Int_Init(10000,7199);
EXTI8_Init();
OV7670_Window_Set(12,176,240,320);
OV7670_CS=0;
while(1)
{ camera_refresh();
}
}
这是全部的主函数,我把LCD,usmart,按键等全都注释了
if(EXTI_GetITStatus(EXTI_Line8)==SET)
{
if(ov_sta==0)
{
OV7670_WRST=0;
OV7670_RCK_L;
OV7670_RCK_H;
OV7670_RCK_L;
OV7670_WRST=1;
OV7670_RCK_H;
ov_sta=1;
OV7670_WREN=1;
}
if(ov_sta==1)
{
OV7670_WREN=0;
ov_sta=2;
}
}
EXTI_ClearITPendingBit(EXTI_Line8);
}
这是中断函数
程序是从淘宝那里下载的,但是淘宝应该是从原子的程序改的,其他部分应该都差不多
摄像头初始化成功了,串口传输也没问题,但就是从FIFO里取数据就都是000000000000000000000
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
主要用示波器或者分析仪看下波形。看下数据线输出是什么样的
一周热门 更多>