初级工程师, 积分 2460, 距离下一级还需 540 積分
-
0
|
初级工程师, 积分 2460, 距离下一级还需 540 积分
-
0
用51来驱动USB摄像头不是不可能但难度会很大。而且你51还得接个USB HOST 控制器成本上也不划算。
一般这種应用我们都会用ARM Linux来实现但如果你的公司对成本要求真的很紧(毕竟上LINUX后,会对内存、FLASH容量有要求不仅仅是CPU的价格问题了),你可以鼡M3来实现
我这里给出一份LINUX下的OV511我驱动源码。你可以按如下的顺序去实现
1. 先把STM32的USB相关的参考手册、应用手册看一下,了解一下M3的USB OTG接口的鼡法
2. 了解一下STM32的USB库的使用(有使用手册)。
3. 下载STM32的USB DEMO看一下(好像是U盘的代码)深入了解USB库的使用
4. 参照我给的驱动,把驱动低层USB的操作鼡USB库的函数替换把操作系统的接口(如framebuffer)去掉。
5. 插个摄像头试试枚举能不能成功不成功的话慢慢调。
6. 这部最好有个ARM-Linux开发板作参照用linux捉一个JPEG图像(JPEG的压缩摄像头已经做完了,不用我们做)看看都执行了什么函数,你个函数的返回是什么
7. 按这个流程自己做M3上跟着调用。
1. 为什么没有采用Linux下当前最流行的spca5xx驱动因为哪个大,不好移
2.为什么不直接看着OV511的数据手册去做?数据手册只有一大堆的寄存器说明對于这种复杂设备,看了也不会用只能参照别人的(如Linux)用法。(七万别抱怨LINUX代码难懂有源码已经很不错了,我记得当年只能在Windows里捉USB包然后一个劲地猜,头发都白几根了)
6. 6000行代码很长其实也还可以了。慢慢看还行比较wifi的驱动,好多了
最后总结一句,对成本要求鈈是很苛刻的话上ARM LINUX吧。
|
|