论坛元老
 
- 积分
- 3580
- 金钱
- 3580
- 注册时间
- 2015-5-27
- 在线时间
- 366 小时
|
4金钱
本帖最后由 小小样儿 于 2016-7-23 16:16 编辑
先上程序
//Tim2_ch2 PCLK
void TIM2_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
TIM_TimeBaseStructure.TIM_Period = 65535;
TIM_TimeBaseStructure.TIM_Prescaler = 3;
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; //TIM向上计数模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
TIM_ICInitStructure.TIM_Channel = TIM_Channel_2; //选择输入端 IC2映射到TI2上
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Falling; // 下降沿捕获
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV2; //配置输入分频,二分频
TIM_ICInitStructure.TIM_ICFilter = 0x01;//配置输入滤波器 ICF=0000 不滤波
TIM_ICInit(TIM2, &TIM_ICInitStructure);
TIM_SelectSlaveMode(TIM2,TIM_SlaveMode_External1);
TIM_SelectInputTrigger(TIM2,TIM_TS_TI2FP2);
//TIM_DMACmd(TIM2, TIM_DMA_CC3|TIM_DMA_Trigger, ENABLE);
//TIM_Cmd(TIM2, ENABLE); //启动 TIM 计数
}
CMOS图像数据采集,TIM2_CH2输入捕获PCLK,二分频触发DMA从IO口读取Y分量数据。主板上电后,采集到的数据要么是YYYYYY,要么是UVUVUV(UYVY输出格式,UV分量用的固定值),且不会相互切换,输出Y分量时,用MATLAB画灰度图,其图像与工装检测视频图像一致。刚开始怀疑是否PCLK太快,将PCLK速率从6.25M降到0.91M数个速率,都会出现一样的现象;分别换成上升沿触发、YUYV输出格式采集数据,现象也一样;将二分频去除(TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1; ),一个PCLK读取一个数据,即把YUV都读出来,测试数据格式UYVYUYVY,没有出错。综上测试,可能还是TIM2设置有问题,一个人能力有限,望大家一起帮忙分析,不甚感谢。。。
|
|