微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 电源设计 > 基于3G手机的视频监控系统设计与实现

基于3G手机的视频监控系统设计与实现

时间:05-01 来源:互联网 点击:

V( 为整个系统提供外部电源) 、3. 3 V( 核心模块、外设控制、图像采集模块供电) 和1. 3 V( 核心模块供电) 。

  2 图像传感器接口电路与工作原理

  摄像头使用的是CAM130 模块, 其中的图像传感器为OV9650, 该部分原理图及接口电路如图2 所示。

  

  图2 CAM130 模块原理图及OV9650 接口电路

  OV9650 与处理器的接口包括SCCB( 串行摄像机控制总线) 接口、数据输出接口和控制接口等3 部分。

  SCCB 接口起到传递处理器提供的初始化OV9650内部寄存器参数的作用, 其数据线SIOD 和时钟线SI-OC, 相当于I2C 总线中的SDA 与SCL。也就是说, SC-CB 起到I2C 总线的作用。OV9650 是I2C 总线的从器件, S3C2440 是对应的主器件。I2 C 总线采用串行方式从高位到低位传输字节数据, 每个字节传输完后, 主控制器将SDA 置为高电平并释放, 等待从设备发送确认信号。OV9650 内嵌了一个10 位A/ D 转换器, 对应有10 个数据输出口D[ 0: 9] 。输出图像数据的格式可以为10 位原始RAW, RGB 或经过内部DSP 转换的8 位RGB/ YCbCr。本系统选择的微处理器芯片S3C2440的CAM IF 单元支持8 位的YU V/ YCbCr 格式, 故需将OV9650 的数据接口D[ 9: 2] 与CAM IF 的数据口CAMDAT A[ 7: 0] 相连接。OV9650 的XVCLK 用于接收CPU 输出的24 MHz 的工作时钟。OV9650 内部产生的帧同步信号VSYNC、行同步信号HREF、像素时钟信号PCLK 等3 个时钟信号传入ARM 芯片中, 用于控制图像采集。每一个VSYN C 脉冲表示一帧图像数据采集的开始, HREF 的高电平则表示采集一行图像数据, 图像传感器按从左到右的顺序在每个PCLK脉冲过程中依次采集一个字节的数据, 直到一帧图像数据全部采集完成。

  3 3G图片传输流程

  图片传输流程图如图3 所示, 3G 手机向MINI2440开发板发送短信请求发照片, ARM9 控制中心接收到信息,发送出文件名与文件大小, TCP 服务器收到信息接收完图片并关闭窗口, 同时向3G 手机回馈图片已接收完毕的信息, 接着3G 手机向服务器发送请求接收照片, T CP 服务器向3G 手机发送图片数据, 直到图片接收完毕, 当接收完毕, 3G 手机向服务器反馈图片接收完毕。

  

  图3 3G 图片传输方案

  有关Micro2440 开发板发送图片及3G 手机接收图片的部分程序如下所示:

  / / TCP 监听

  UINT ListenT hread( vo id * p)

  {

  / / 准备接收请求

  CGSMW_CameraDlg * pDlg = ( CGSMW_CameraDlg* ) p;

  SOCKET s= pDlg??> m_hSo cket;

  CStr ing strFileName = temp; / / 得到文件名

  st rcpy( temp, buffer + i+ 1) ;

  lo ng lFileSize = ato l( temp) ; / / 得到文件大小;

  st rFilePath= “ \ 123ARM\ ”+ strFileName; / / 进度条操作,接收并保存文件

  CFile file( strFilePath, CFile: : modeCreate | CFile: : mode??Write) ;

  long iTemp = 0;

  while ( 1)

  {

  rcv = r ecv ( s, buffer, 1024, 0) ;

  if ( rcv = = 0)

  {

  break;

  }

  file. Wr ite( buffer, rcv) ;

  iTemp + = rcv ;

  }

  file. Close( ) ;

  send( s, “ [ ! %] ” , 4, 0) ; / / 发送接收文件结束请求

  int ret1= send( pDlg> m_hSo cket, buffer, iSize, 0) ;

  / / 发送文件的名称和大小

  / / 发送文件

  if ( iEnd= = SOCKET_Error)

  {

  strError. Format( _T( “ Send File: %d”) , er ro r= WSAGetLast Error( ) ) ;

  AfxM essag eBox ( strErr or) ;

  break;

  }

  iT mp + = iEnd;

  pDlg> m_pro gr ess. Set Pos( iTmp) ;

  Sleep( 10) ;

  / / 判断发送是否成功、结束处理

  if ( iTmp = = lFileSize)

  {

  }

  CSt ring st rTemp= “发送文件结束” ;

  / / 回复对方接收完毕

  pDlg> SendMessag e( NULL, NULL) ;

  pDlg> m_cState. SetWindowTex t( st rTemp) ;

  / / shutdow n( ) ;

  ExitThread( 0) ;

  return 0;

  4 应用软件设计及实验结果

  操作系统与硬件平台间采用虚拟串口进行通信,EVC 在实现串口数据通信中存在2 个局限性: 一是EVC 不支持串口通信控件MScomm, 另一个是WinCE不支持重叠I/ O 操作。因此, 要采用WinCE 的API 函数和多线程技术进行数据串口通信的底层开发[ 10] 。

  Window s API 函数将串口视为文件, 对于串口的操作类似于对于普通文件的操作。在EVC 环境中, 通过调用CreateFile 函数来打开串口, 设置串口读写模式:

H ANDLE m _ hComm = Cr eateFile ( szPor t, GENERIC _READ| GENERIC _WRIT E, 0, NULL, OPEN _ EXISTING, 0,NULL) ;因为WinCE 不支持重叠I/ O, 所以CreateFile 的第6 个参数

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

网站地图

Top