飞思卡尔摄像头组原理 飞思卡尔智能车大赛
DMA框图
基本知识:翻阅K60原版英文文档DMA章节
问题一:现有调试手段不能直观的去得知摄像头的调试效果
记录:用python编写串口上位机,了解字节流,编码,解码,printf()的
putchar()函数重定义等相关概念
将python串口上位机与K60串口波特率设置为460800最为合适(速度
与正确率折中最优);
问题二:DMA像素字节减少一半丢失了YUV传输格式两字节中的一个字节而且接受的图像存在错位现象
记录:挂示波器发现波形会在DMA接受完一帧图像后未执行用户函数而
立马接受下一帧的现象
猜测1.帧中断引脚与DMA中断触发源PCLK冲突
结果:实践证明猜测错误
猜测2.DMA通道出现错误中断导致再次重新传输
结果:实践证明错误
猜测3.DMA与CPU地址中线冲突导致标志位被延时恰好跳过if语句的判断
结果:问题解决:优化函数工作时序:进入帧中断且满足开启DMA传输条件后
在开启DMA传输时禁止帧中断直到DMA传输完成且用户函数调用完成
后才允许帧中断(这样功能没发生改变而且减去在用户函数执期帧断
函数的执行)
记录:图像错位和字节减半问题是属于一个问题(DMA接不下来频率12M的数据)
查阅K60官方英文文档DMA章节的DMA应答频率系统时钟频率有关如图1,图2,
图1
图2
易得:在当时系统频率96M的情况下有公式计算的DMA的应答频率为
96/11.5=8.34M,恰好小于频率12M的摄像头数据所以导致智能接收到减半
的像素数据并且图像会产生畸变。
解决办法:将系统时钟频率升至200M(11.5*12M=138M以上即可)测时问题
完美解决。
调试心得:当时第一时间就发现了像素数据减半问题的存在也怀疑可能是DMA接不过过来这
么高频率的数据,但是却毫无凭据的直觉认为这么牛逼的DMA怎么可能接不下来而
导致忽略了这一猜测从而将注意力专至DMA寄存器的配置及DMAMUX的寄存器的
配置,到头来才发现问题根源就出在DMA接收应答频率的上面。
总之一句话:调试
要步步分析猜测,猜测了就要去实践不能没有凭据而凭直觉,否则你只会越调越
乱,越调越迷。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。