最近在做一个东西时需要驱动OV7670摄像头,OV7670所用的时钟源是由STM32的HSE(我这里所用的是外接晶振)提供,然后复用到MCO引脚输出,当然芯片内部的电平是占空一半的方波,但是在调试摄像头时我发现SCCB通信总是失败,也就是单片机总是接收不上数据,后测发现XCLK(OV7670时钟输入脚)的波形严重失真,如下图
一开始我以为是外接时钟源选择错误,我应该选择外接占空一半的方波,但是在网上和其他网友交流后知道内部时钟电路绝对是方波,也就是有相应的整形电路,HSE与HSI输出的都是方波,下图是时钟内部原理图:
从图中我们可以看出MCO输出可选的有四种时钟源,除了SYSCLK其他的都是方波,但是外接时钟源频率是8M,其实对于我所用的示波器来说,8M的方波它测不出,带宽不够。接下来我给大家展示一下我的验证:
这是36M低速时钟50分频后的方波,从图中可以看出电平跳动时抖动很厉害,趋于稳定时间超过了一半周期
这是36M低速时钟25分频后的方波,已经很失真了,能勉强看一下。
这是36M低速时钟12分频后的方波,差不多不能看了
这是36M低速时钟6分频后的方波,几乎已经是稍稍失真的正弦波了,另外由于这是由计时器产生的方波,在电平跳动时一定产生纹波,没有直接从HSE引出来的波形干净,所以即使HSE是8M的波形,其依旧比6M的由TIM产生的方波漂亮。 |