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