我现在把图像格式为YUV输出,STM32直接驱动OV7670,每次采集完成后数据由串口发给上位机看图软件,为什么 我的上位机图像显示区显示的图像那么小,而且还显示了三个?是我的寄存器配置问题还是我的数据处理有问题?
上位机显示图像如下图所示:
(原文件名:未命名.jpg)
以下为我在中断里接受OV7670数据:
/*图像采集数据定义*/
#define hang_max 240 //定义图像采集的行数
#define lie_max 240 //定义图像采集的列数
uint8_t Image[hang_max][lie_max]; //图像数据 分辨率
uint8_t hang_count = 0; //图像行数采集计数
uint8_t finish_flag = 0; //图像采集完成标志位
void EXTI9_5_IRQHandler(void) //VSYNC (场同步) --- PA6
{
uint16_t i;
if((EXTI->PR & 0x00040) != 0) //检测是否有场中断触发PA6 发生了选择的中断触发,该位被置1
{
EXTI->PR |= 1<<6; //向该位置1,清除中断标志
for(i = 0;i < 5000;i++);
hang_count = 0;
EXTI->IMR |= 1<<7; //开行中断
}
else //场中断被关闭后,直接进入行中断HREF即PA7的信号输入中断
{
if((EXTI->PR & 0x00080) != 0)//检测是否真的有中断触发
{
while(!(GPIOB->IDR & GPIO_Pin_5)); //像素时钟PCLK上升沿读数据有效
for(i = 0;i < hang_max;i++)
{
Image[hang_count] = (GPIOD->IDR&0xff);
}
hang_count++;
if(hang_count > (lie_max-1))//采集完成
{
EXTI->IMR &= 0<<6;//屏蔽场中断
EXTI->IMR &= 0<<7;//屏蔽行中断
finish_flag = 1;//置数据采集完成标志位
}
EXTI->PR |= 1<<7;//清中断标志
}
}
}
以下为我的寄存器配置:
{0x3a, 0x00}, //行缓冲测试选项 00 ??
{0x40, 0xd0}, //普通控制14 d0 ??
{0x12, 0x20}, //通用控制7COM7 20 ??
{0x32, 0x80}, //HREF控制
{0x17, 0x16}, //HSTART
{0x18, 0x04}, //HSTOP
{0x19, 0x02}, //VSTART
{0x1a, 0x7b}, //VSTOP,0x7a,
{0x03, 0x06}, //VREF,0x0a,
{0x0c, 0x00}, //COM3 10 //default setting //10
{0x3e, 0x00}, //COM14 00 ??
{0x70, 0x00}, //SCALING_XSC
{0x71, 0x01}, //SCALING_YSC
{0x72, 0x11}, //SCALING_DCWCTR //default setting
{0x73, 0x00}, //SCALING_PC 00 ??
{0xa2, 0x02}, //SCALING_PCLK_DELAY //default setting
{0x11, 0x82}, //{0x11, 0x81}, //CLKRC,2分频
{0x7a, 0x20}, //SLOP
{0x7b, 0x1c}, //GAM1
{0x7c, 0x28}, //GAM2 //20
{0x7d, 0x3c}, //GAM3
{0x7e, 0x55}, //GAM4
{0x7f, 0x68}, //GAM5
{0x80, 0x76}, //GAM6
{0x81, 0x80}, //GAM7
{0x82, 0x88}, //GAM8
{0x83, 0x8f}, //GAM9
{0x84, 0x96}, //GAM10
{0x85, 0xa3}, //GAM11
{0x86, 0xaf}, //GAM12 // 30
{0x87, 0xc4}, //GAM13
{0x88, 0xd7}, //GAM14
{0x89, 0xe8}, //GAM15
{0x13, 0xe0}, //COM8
{0x00, 0x0f}, //AGC
{0x10, 0x00}, //AECH 40 ??
{0x0d, 0x00}, //COM4//default setting
{0x14, 0x38}, //0x38, limit the max gain
{0xa5, 0x05}, //BD50MAX
{0xab, 0x07}, //BD60MAX //40
{0x24, 0x75}, //AEW
{0x25, 0x63}, //AEB
{0x26, 0xA5}, //VPT
{0x9f, 0xff}, //HAECC1 78 ??
{0xa0, 0xff}, //HAECC2 68 ??
{0xa1, 0x03}, //RSVD,0x0b,
{0xa6, 0xff}, //HAECC3,df ??
{0xa7, 0xff}, //HAECC4,df ??
{0xa8, 0xff}, //HAECC5 f0 ??
{0xa9, 0xff}, //HAECC6 90 ??
{0xaa, 0x94}, //HAECC7
{0x13, 0xe5}, //COM8
{0x0e, 0x61}, //COM5
{0x0f, 0x4b}, //COM6
{0x16, 0x02}, //RSVD
{0x1e, 0x07}, //MVFP,27 ??
{0x21, 0x02}, //ADCCTR1
{0x22, 0x91}, //ADCCTR2
{0x23, 0x00}, //ADCCTR2
{0x29, 0x07}, //RSVD //60
{0x33, 0x0b}, //CHLF 0b ??
{0x35, 0x0b}, //RSVD
{0x37, 0x1d}, //ADC
{0x38, 0x71}, //ACOM
{0x39, 0x2a}, //OFON
{0x3c, 0x78}, //COM12 65
{0x4d, 0x40}, //RSVD
{0x4e, 0x20}, //RSVD
{0x69, 0x5d}, //GFIX
{0x6b, 0x60}, //DBLV,PLL=inX4 //70
{0x74, 0x19}, //REG4
{0x8d, 0x4f}, //RSVD
{0x8e, 0x00}, //RSVD
{0x8f, 0x00}, //RSVD
{0x90, 0x00}, //RSVD
{0x91, 0x00}, //RSVD
{0x92, 0x00}, //DW_LNL,0x19,//0x66
{0x96, 0x00}, //RSVD
{0x9a, 0x80}, //RSVD
{0xb0, 0x84}, //RSVD //80
{0xb1, 0x0c}, //ABLC1
{0xb2, 0x0e}, //RSVD
{0xb3, 0x82}, //THL_DLT
{0xb8, 0x0a}, //RSVD //84
{0x43, 0x14}, //AWBC1
{0x44, 0xf0}, //AWBC2
{0x45, 0x34}, //AWBC3
{0x46, 0x58}, //AWBC4
{0x47, 0x28}, //AWBC5
{0x48, 0x3a}, //AWBC6
{0x59, 0x88}, //RSVD
{0x5a, 0x88}, //RSVD
{0x5b, 0x44}, //RSVD
{0x5c, 0x67}, //RSVD
{0x5d, 0x49}, //RSVD
{0x5e, 0x0e}, //RSVD
{0x64, 0x04}, //LCC3
{0x65, 0x20}, //LCC4
{0x66, 0x05}, //LCC5
{0x94, 0x04}, //LCC6
{0x95, 0x08}, //LCC7 100
{0x6c, 0x0a}, //AWBCTR3
{0x6d, 0x55}, //AWBCTR2
{0x6e, 0x11}, //AWBCTR1
{0x6f, 0x9f}, //AWBCTR0,0x9e for advance AWB
{0x6a, 0x40}, //GGAIN
{0x01, 0x40}, //BLUE
{0x02, 0x40}, //RED
{0x13, 0xe7}, //COM8
{0x15, 0x00}, //COM10
{0x2d, 0x00},
/* Color Matrix */
{0x4f, 0x80}, //MTX1
{0x50, 0x80}, //MTX2
{0x51, 0x00}, //MTX3
{0x52, 0x22}, //MTX4
{0x53, 0x5e}, //MTX5
{0x54, 0x80}, //MTX6
{0x55, 0x00}, //亮度//default setting
{0x56, 0x52}, //对比度
{0x58, 0x9e}, //MTXS
{0x41, 0x08}, //COM16
{0x3f, 0x05}, //边缘增强调整
{0x75, 0x05}, //REG75
{0x76, 0xe1}, //REG76
{0x4c, 0x0F}, //噪声抑制强度
{0x77, 0x0a}, //REG77
{0x3d, 0xc2}, //0xc0,
{0x4b, 0x09}, //REG4B
{0xc9, 0x60}, //SATCTR
{0x41, 0x38}, //COM16
{0x56, 0x40}, //0x40, change according to Jim's request
{0x34, 0x11}, //ARBLM
{0x3b, 0x02}, //COM11,00 ??
{0xa4, 0x89}, //0x88,
{0x96, 0x00}, //RSVD
{0x97, 0x30}, //RSVD
{0x98, 0x20}, //RSVD 135
{0x99, 0x30}, //RSVD
{0x9a, 0x84}, //RSVD
{0x9b, 0x29}, //RSVD
{0x9c, 0x03}, //RSVD
{0x9d, 0x4c}, //BD50ST
{0x9e, 0x3f}, //BD60ST
{0x78, 0x04}, //RSVD
{0x79, 0x01}, //RSVD
{0xc8, 0xf0}, //RSVD
{0x79, 0x0f}, //RSVD
{0xc8, 0x00}, //RSVD
{0x79, 0x10}, //RSVD
{0xc8, 0x7e}, //RSVD
{0x79, 0x0a}, //RSVD
{0xc8, 0x80}, //RSVD
{0x79, 0x0b}, //RSVD
{0xc8, 0x01}, //RSVD
{0x79, 0x0c}, //RSVD
{0xc8, 0x0f}, //RSVD
{0x79, 0x0d}, //RSVD
{0xc8, 0x20}, //RSVD
{0x79, 0x09}, //RSVD
{0xc8, 0x80}, //RSVD
{0x79, 0x02}, //RSVD
{0xc8, 0xc0}, //RSVD
{0x79, 0x03}, //RSVD
{0xc8, 0x40}, //RSVD
{0x79, 0x05}, //RSVD
{0xc8, 0x30}, //RSVD
{0x79, 0x26}, //RSVD
{0x09, 0x02}, //COM2
{0x3b, 0x42}, //COM11,x82,//0xc0,//0xc2, //night mode 167 |