微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 又一神级DIY!自己动手做数码相机

又一神级DIY!自己动手做数码相机

时间:04-27 来源:互联网 点击:

件(PLD)和电源部分。微处理器的芯片是一个NXP的LPC2368,它集成了一个在72MHZ下工作的ARM7TDMI核心,512K字节内存,32K+16K+8K字节的SRAM,还有给力的外围设备。它可以通过一个集成的SD卡控制器在4位原生模式下控制外置的MicroSD存储卡。LPC系列的ARM微处理器广泛用在现在的电子制作中,因为它的市场政策很对路,物美价廉。

一个可编程逻辑器件(LC4256V)被用来驱动CCD线性传感器。PLD里配置了一个用来给传感器提供时钟的时钟产生器和一个先入先出队列。电源供应部分提供了数字电源(3.3V)。和模拟部分的电源(12V)。


主控电路部分电路图

2.5、显示电路部分


显示电路部分

显示部分电路安装在盒子的背面,它提供了相机的操作界面。上面的器件包括一个OLED显示屏,开关。五向键和一个MicroSD插槽。打开盒盖就能安装或者移除SD卡。


显示电路部分的电路图

自己动手做数码相机

镜头接口视图

3、软件构成

3.1、数据处理

AD转换器的像素采集率可以高达2.1M像素每秒。首先,图像数据被存储在微处理器的缓冲存储器里。因为每秒2.1M的数据量对软件来说实在太过分,图像数据会存储到PLD的先进先出队列里。队列半满时触发微处理器的DRDT中断,然后微处理器一次接受一半队列的数据。队列的大小是16字节,也就是说软件的操作周期只要有像素采集率的1/8就足够。这对触发中断来说不算太快,但是仍然需要微处理器高速运行。这个项目里用了ARM7TDMI核心的快速中断请求功能(FIQ,fastinterrptrequest,通过编组寄存器产生低延迟中断),可惜在Cortex-M3核心中这一功能被去掉了。

当微处理器响应FIQ请求时,一些寄存器切换到FIQ的编组寄存器状态,然后FIQ例程可以直接进入/离开而省去了切换过程。为了最大化执行效率,一般来说FIQ例程是用汇编语言写的。在启用这一功能的数据波形图里,可以观察到8位的数据在不用存储的时候只需要0.8微秒处理,加上DMA模式下从总线写入SD卡也只用了2微秒,这样的延迟可以接受。

在每一行数据中有1094个像素,但其中有效的只有1024个。这些数据被存入内存,中断信号SYNC#在每一行数据的开始输出,用来同步第一个像素的数据。

3.2、重建图像

捕捉到的数据可以用通用的8位灰度BMP位图格式存储在MicroSD卡里,宽1024像素,长视拍摄时间而定。存储的格式是DCIMLCAMYnnnn.BMP(nnnn是编号),和普通的数码相机几乎一样。

在使用廉价的微处理器将图像数据存入SD卡时会遇到一些困难,主要是输入的数据要在极短的时间内存进文件。这个制作中的最大数据传输率是2MB每秒。幸运的是LPC2368有一个MCI(SD/MMC卡的原生控制模式),它能提供8MB/s的数据读取和6MB/s的数据写入能力。但是这是指读写大文件时的平均速度,事实上每次读写之间都需要一些死时间用在SD卡的内部处理和文件系统上,为了避免这些浪费,一个数据缓冲器被用来在死时间中暂存数据,但是微处理器系统的内存大小是有限的,不一定有足够的空间进行缓冲。

让我们估计一下每次写数据操作所能容许的时间耗费。在这个制作里,所有32K的SRAM都用来做数据缓冲器,而程序在16K的ethernetRAM上运行。数据缓冲器分成两半,其中一块填充数据的时候另一块将数据写入闪存。这要求在每8毫秒里写入16KB的数据,每次操作必须在下次操作之前完成。接下来的软件技巧可以解决这个问题。

数据写入过程中最重要的延迟发生在集群分配时,在实时操作系统里这是个很大的问题,集群分配导致的死时间视情况不同可能高达数秒钟。这个制作里使用集群预分配(写入数据时用f-lseek函数申请一个比目前需要大很多的空间)来避免写入数据时进入分区表重新定位。每次写入操作都包含一个用来结束操作的集群边界条件。想象一下SD卡里的文件预先整理出一块整齐的空间给数据,这就避免了写入数据过程中大量导致延迟的未知问题。

尽管有这些用来尽可能减小死时间的方法,SD卡或多或少还有一些内部处理时间。在挑选SD卡的时候需要挑写入速度尽可能快的SD卡。我在许多牌子之间做过比较,结果发现东芝产SD卡有最小的写入延迟,也有最稳定的表现。

3.3、显示图像


显示图像

由于获得的图像数据都是一维的线条,它不能像传统平面成像的二维图像一样显示。为了这个问题需要一些特别的显示模式。

其中一种是范围视图,输入的图像信号连接到Y轴,就像像示波器的输入。Y轴信号表示亮度,X轴信号表示各点在线性传感器上的位置。这个模式适于用来观察感光度和聚焦情况。不同点之间数据的差距可以用来帮助对焦,当图像聚焦时,波形图上产生许多峰谷,出现最大的峰峰值表明焦距已经对

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top