基于ARM9的遠(yuǎn)程圖像無線監(jiān)控系統(tǒng)的設(shè)計
初始化S3C2440的CAMIF接口的時鐘寄存器。主要是根據(jù)SAA7113的外接晶振頻率設(shè)置攝像機時鐘分頻寄存器(CAMDIVN)。該寄存器的0~3位是分頻系數(shù),其計算方法是:
CAMCLK_DIV=UPLL/(CAMCLK * 2)-1
(初始化代碼略— — 編者注)
配置CAMIF接口的采樣參數(shù)。主要是輸入源圖像數(shù)據(jù)的格式、輸出的圖像格式、采樣的窗口大小、DMA的訪問地址等參數(shù)。這里定義了一個結(jié)構(gòu),用于存儲與CAMIF接口相關(guān)的配置信息:
struct s3c2440_camif_cfg_t {
int src_x; //輸入的源圖像寬度
int src_y; //輸入的源圖像高度
int
dst_x; //輸出的目標(biāo)圖像寬度
int dst_y; //輸出的目標(biāo)圖像高度
int dst_fmt;
//輸出的目標(biāo)圖像數(shù)據(jù)格式
int pre_x; //預(yù)覽通道(P端口模式)輸出的圖像寬
int pre_y;
//預(yù)覽通道(P端口模式)輸出的圖像高
int pre_fmt; //使用通道(P端口模式)時設(shè)為1
__u16 bypass;
//為1時表示不啟用按比例的圖像放大/縮小
__u16 ycbcr; //輸入圖像的YcbCr順序
struct s3c2440_camif
*dev; //設(shè)備的系統(tǒng)信息
};
上述這些配置信息最終是與一系列的寄存器相關(guān)聯(lián)的。這個結(jié)構(gòu)為讀/寫寄存器提供了一個清晰的、集中的存儲緩沖。
打開、關(guān)閉和控制攝像機的接口函數(shù)。這3個接口函數(shù)是按V4L規(guī)范編寫的,其原型如下:
① 打開攝像機接口函數(shù):
static int
v4l_cam_open(struct video_device *v,int mode);
② 控制攝像機接口函數(shù):
static int
v4l_cam_ioctl(struct video_device *v,unsigned int cmd,void *arg);
評論