首页
|
新闻
|
新品
|
文库
|
方案
|
视频
|
下载
|
商城
|
开发板
|
数据中心
|
座谈新版
|
培训
|
工具
|
博客
|
论坛
|
百科
|
GEC
|
活动
|
主题月
|
电子展
注册
登录
论坛
博客
搜索
帮助
导航
默认风格
uchome
discuz6
GreenM
»
MCU 单片机技术
» 基于ARM9的远程图像无线监控系统的设计(1)
返回列表
回复
发帖
发新话题
发布投票
发布悬赏
发布辩论
发布活动
发布视频
发布商品
基于ARM9的远程图像无线监控系统的设计(1)
发短消息
加为好友
我是MT
当前离线
UID
1023166
帖子
6651
精华
0
积分
3328
阅读权限
90
来自
燕山大学
在线时间
230 小时
注册时间
2013-12-19
最后登录
2016-1-5
论坛元老
UID
1023166
性别
男
来自
燕山大学
1
#
打印
字体大小:
t
T
我是MT
发表于 2015-11-6 20:31
|
只看该作者
基于ARM9的远程图像无线监控系统的设计(1)
无线监控
,
微处理器
,
领域
对图像监控系统,用户常常提出这样的功能需求:希望能够监控距离较远的对象。这些对象有可能分布在郊区、深山,荒原或者其他无人值守的场合;另外,希望能够获取比较清晰的监控图像,但对图像传输的实时性要求并不高,很明显,用传统的PC机加图像采集卡的方式很难满足这样的需求。
在
嵌入式
领域,ARM9系列微处理器在高性能和低功耗方面提供了最佳的性能,因此选用ARM9
嵌入式
处理器S3C2440设计实现了一个远程图像光线监控系统通过这个系统,可以远在千里之外控制一个摄像机进行图像采集并回传。如果这个摄像机有一个485接口的云台,还可以通过互联网远程控制摄像机的取景角度、镜头拉伸、聚焦等功能.
除了获取图像数据.系统还提供了多路开关控制和数据采集功能,可以连接温度、湿度等各类传感器和控制红外夜视灯等其他外部设备的开关状态。最后,通过GPRS或CDMA无线通信模块及Internel互联网将数据传至任何地方
1 系统设计
本系统采用三星公司的S3C2440
嵌入式
处理器和arm-linux2.4.26操作系统;S3C2440使用ARM920T内核,主频是 400MHz;除了集成通用的串口控制器、USB控制器、A/D转换器和GPIO等功能之外,还集成了一个摄像头接门(CAMIF)(这个接口是远程图像采集的核心部分)。系统在S3C2440处理器的控制下,从CCD摄像机采集模拟视频信号,然后经过编码、DMA传输到内存缓冲,接着由软件对内存中的数字视频数据进行压缩和打包.最后通过通信单元将图像以IP包的方式发送到监控中心的服务器。整个系统的硬件结构原理如图1所示
1.1 图像采样接口
S3C2440的摄像头接口(CAMIF)支持ITU-R BT.601/656 YCbCr8比特标准的图像数据输入,最大可采样4096×4096像素的图像。摄像头接口可以有两种模式与DMA控制器进行数据传输:一种是P端口模式,把从摄像头接口采样到的图像数据转为RGB数据,并在DMA控制下传输到SDRAM(一般这种模式用来提供图像预览功能);另一种是C端口模式,把图像数据按照YCbCr4:2:0或4:2:2的格式传输到SDRAM(这种模式主要为MPEG-4、H.263等编码器提供图像数据的输入)。上述两种工作模式都允许设置一个剪辑窗口,只有进入这个窗口的图像数据才能够传输到SDRAM。上述过程可用图2说明。
S3C2440的摄像机接口接收ITU标准的图像数据,不能直接接收CCD摄像机输出的模拟视频信号,因此还需要1片SAA7113视频解码芯片。 SAA7113可以输入4路模拟视频信号,通过内部寄存器的不同配置可以对4路输入进行转换,输入可以为4路CVBS或2路S视频(Y/C)信号,输出8 位“VPO”总线,为标准的ITU656、YUV 4:2:2格式。对SAA7113初始化需要通过I2C 总线进行,而S3C2440内部集成的I2C控制器正好可以实现这个过程。S3C2440的摄像机接口与SAA7113的连接原理如图3所示。
SAA7113 的CE 引脚与S3C2440 的一个GPIO 引脚相连,这样可以控制SAA7113的工作状态。当无须采集图像时,将该GPIO口输出低电平,使SAA7113芯片处于低功耗状态,节省电能的消耗。对照图2和图3可以看出,SAA7113芯片就是图2的“外部图像传感器”。它向
嵌入式
系统的摄像机接口提供了采样到的标准ITU视频数据。这些数据经过 DMA的P端口或C端口控制传输到了内存,这样就可以在内存中对图像数据作进一步的加工处理。
1.2 采样接口驱动
图像采样接口的驱动按照Linux视频设备驱动的模型V4L(video for Linux)编写了SAA7113与S3C2440摄像机接口的驱动。驱动使用C端口模式与DMA进行通信。采样1帧图像之前,首先设置采样图像的分辨率和剪辑窗口大小等参数,然后设置DMA控制器访问的视频采样输出缓冲的内存地址,接着就可以通过设置S3C2440的CAMIF接口控制寄存器启动1帧图像的采集。当采集完1帧图像时,CAMIF接口会自动启动1次C端口的DMA通信,把采集的图像数据传到内存。传输结束后,会产生一个C端口的中断,通知驱动1帧数据采样和传输结束。具体来说,这个驱动需要实现以下功能:
初始化S3C2440的CAMIF接口的时钟寄存器。主要是根据SAA7113的外接晶振频率设置摄像机时钟分频寄存器(CAMDIVN)。该寄存器的0~3位是分频系数,其计算方法是:
CAMCLK_DIV=UPLL/(CAMCLK * 2)-1
(初始化代码略— — 编者注)
配置CAMIF接口的采样参数。主要是输入源图像数据的格式、输出的图像格式、采样的窗口大小、DMA的访问地址等参数。这里定义了一个结构,用于存储与CAMIF接口相关的配置信息:
struct s3c2440_camif_cfg_t {
int src_x; //输入的源图像宽度
int src_y; //输入的源图像高度
int
dst_x; //输出的目标图像宽度
int dst_y; //输出的目标图像高度
int dst_fmt;
//输出的目标图像数据格式
int pre_x; //预览通道(P端口模式)输出的图像宽
int pre_y;
//预览通道(P端口模式)输出的图像高
int pre_fmt; //使用通道(P端口模式)时设为1
__u16 bypass;
//为1时表示不启用按比例的图像放大/缩小
__u16 ycbcr; //输入图像的YcbCr顺序
struct s3c2440_camif
*dev; //设备的系统信息
};
上述这些配置信息最终是与一系列的寄存器相关联的。这个结构为读/写寄存器提供了一个清晰的、集中的存储缓冲。
打开、关闭和控制摄像机的接口函数。这3个接口函数是按V4L规范编写的,其原型如下:
① 打开摄像机接口函数:
static int
v4l_cam_open(struct video_device *v,int mode);
收藏
分享
评分
回复
引用
订阅
TOP
返回列表
电商论坛
Pine A64
资料下载
方案分享
FAQ
行业应用
消费电子
便携式设备
医疗电子
汽车电子
工业控制
热门技术
智能可穿戴
3D打印
智能家居
综合设计
示波器技术
存储器
电子制造
计算机和外设
软件开发
分立器件
传感器技术
无源元件
资料共享
PCB综合技术
综合技术交流
EDA
MCU 单片机技术
ST MCU
Freescale MCU
NXP MCU
新唐 MCU
MIPS
X86
ARM
PowerPC
DSP技术
嵌入式技术
FPGA/CPLD可编程逻辑
模拟电路
数字电路
富士通半导体FRAM 铁电存储器“免费样片”使用心得
电源与功率管理
LED技术
测试测量
通信技术
3G
无线技术
微波在线
综合交流区
职场驿站
活动专区
在线座谈交流区
紧缺人才培训课程交流区
意见和建议