SS928V100(SD3403)處理器之紅外成像調(diào)試
一、視頻接入
支持 8-Lane image sensor串行輸入,支持 MIPI/LVDS/Sub-LVDS/HiSPi多種接口
支持 2x4-Lane或 4x2-Lane等多種組合,最高支持 4路 sensor串行輸入
最大分辨率 8192 x 8192
支持 8/10/12/14 Bit RGB Bayer DC時(shí)序視頻輸入,時(shí)鐘頻率最高 150MHz
支持 BT.601、BT.656、BT.1120視頻輸入接口
支持主流 CMOS電平熱成像傳感器
1.1數(shù)字?jǐn)z像頭(DC)接口時(shí)序
水平時(shí)序
VICAP接數(shù)字?jǐn)z像頭時(shí),VI_HSYNC_VD 表示數(shù)據(jù)有效信號,數(shù)據(jù)有效信號極性可
配,水平時(shí)序所示。
1.2垂直時(shí)序
VICAP支持兩種垂直時(shí)序脈沖方式和行有效方式,如下圖所示。垂直同步極性可配
數(shù)字?jǐn)z像頭垂直時(shí)序脈沖方式
數(shù)字?jǐn)z像頭垂直時(shí)序行有效方式
對于 VICAP內(nèi)部處理來說,這兩種時(shí)序相同,VICAP內(nèi)部檢測到一個(gè)上升沿或下降
沿,這認(rèn)為是一幀的開始,然后檢測數(shù)據(jù)有效信號,來判斷當(dāng)前數(shù)據(jù)是否有效。
二、復(fù)用寄存器
管腳復(fù)用
查看手冊mipi dev/vi dev/vi chn/vi pipe/所支持的編號;
mipi配置,設(shè)置接入模式為cmos;(dc接口不需要lain id)
設(shè)置vi離線還是在線模式;
設(shè)置vi屬性,使能vi設(shè)備;
vi綁定pipe;
設(shè)置pipe屬性,創(chuàng)建并開始pipe;
設(shè)置通道屬性,使能通道;
2.1詳細(xì)說明
參考SS928V100 VI輸入場景詳細(xì)說明.xlsx中DC接入需要復(fù)用的寄存器
2.1.1復(fù)用寄器
static void vi_DC_mode_mux(void)
{
void *iocfg2_base = sys_config_get_reg_iocfg2();
sys_writel(iocfg2_base + 0x0158, 0x0206); /* VI_CLK */
sys_writel(iocfg2_base + 0x0168, 0x0005); /* VI_VS */
sys_writel(iocfg2_base + 0x0170, 0x0005); /* VI_HS */
sys_writel(iocfg2_base + 0x016C, 0x0006); /* VI_DATA0 */
sys_writel(iocfg2_base + 0x0178, 0x0006); /* VI_DATA1 */
sys_writel(iocfg2_base + 0x017C, 0x0006); /* VI_DATA2 */
sys_writel(iocfg2_base + 0x0174, 0x0006); /* VI_DATA3 */
sys_writel(iocfg2_base + 0x0160, 0x0206); /* VI_DATA4 */
sys_writel(iocfg2_base + 0x015C, 0x0206); /* VI_DATA5 */
sys_writel(iocfg2_base + 0x0164, 0x0206); /* VI_DATA6 */
sys_writel(iocfg2_base + 0x0154, 0x0206); /* VI_DATA7 */
sys_writel(iocfg2_base + 0x0194, 0x0006); /* VI_DATA8 */
sys_writel(iocfg2_base + 0x0190, 0x0006); /* VI_DATA9 */
sys_writel(iocfg2_base + 0x0184, 0x0006); /* VI_DATA10 */
sys_writel(iocfg2_base + 0x0180, 0x0006); /* VI_DATA11 */
sys_writel(iocfg2_base + 0x0188, 0x0006); /* VI_DATA12 */
sys_writel(iocfg2_base + 0x018C, 0x0006); /* VI_DATA13 */
}
2.2.2選擇類型
static void vi_pin_mux(int vi_intf_type)
{
switch (vi_intf_type) {
case VI_MIPI_RX_MODE:
mipi_rx_pin_mux(MIPI_RX_0);
mipi_rx_pin_mux(MIPI_RX_1);
break;
case VI_CMOS_BT1120_MODE:
mipi_rx_pin_mux(MIPI_RX_0);
vi_bt1120_mode_mux();
break;
case VI_THERMO_MODE:
mipi_rx_pin_mux(MIPI_RX_0);
thermo_sensor_pin_mux();
break;
case VI_THERMO_T3_MODE:
mipi_rx_pin_mux(MIPI_RX_0);
thermo_t3_pin_mux();
break;
case VI_MODE_1_DC:
mipi_rx_pin_mux(MIPI_RX_0);
vi_DVP_mode_mux();
sys_config_print("========== DVP ==========n");
break;
default:
break;
}
}
2.2.3選擇COMS
static int is_coms(const char *name, unsigned int name_len)
{
unsigned int len;
if (name_len == 0) {
sys_config_print("name len is 0!n");
return 0;
}
len = SENSOR_NAME_LEN;
if ((strncmp("bt1120", name, len) == 0) || (strncmp("bt656", name, len) == 0) ||
(strncmp("bt601", name, len) == 0) || (strncmp("DC", name, len) == 0))
{
return 1;
} else {
return 0;
}
}
三、加載驅(qū)動
SS928 熱成像驅(qū)動加載
四、修改mpp代碼
根據(jù) MPP媒體處理軟件 V5.0開發(fā)參考.pdf中所說的綁定關(guān)系確定DC的videv、MIPI選擇3
4.1comm_vi配置
static ot_vi_dev_attr g_DC_dev_attr = {
.intf_mode = OT_VI_INTF_MODE_DC,
/* Invalid argument */
.work_mode = OT_VI_WORK_MODE_MULTIPLEX_1, // 1路復(fù)合工作模式
/* mask component */
.component_mask = {0xFF0000, 0x0},
.scan_mode = OT_VI_SCAN_PROGRESSIVE, // VI輸入為逐行圖像 OT_VI_SCAN_INTERLACED // VI輸入為隔行圖像
/* Invalid argument */
.ad_chn_id = {-1, -1, -1, -1},
/* data seq */
.data_seq = OT_VI_DATA_SEQ_UYVY,
/* sync param */
.sync_cfg = {
.vsync = OT_VI_VSYNC_PULSE, //垂直同步脈沖模式,即一個(gè)脈沖到來表示新的一幀或一場
// .vsync = OT_VI_VSYNC_FIELD, // DC模式下表示行有效信號
.vsync_neg = OT_VI_VSYNC_NEG_HIGH, // OT_VI_VSYNC_FIELD表示偶數(shù)場的 vsync信號為高電平 // OT_VI_VSYNC_PULSE表示vsync同步脈沖為正脈沖
.hsync = OT_VI_HSYNC_VALID_SIG, //水平同步數(shù)據(jù)有效信號 // OT_VI_HSYNC_PULSE
.hsync_neg = OT_VI_HSYNC_NEG_HIGH, // OT_VI_HSYNC_VALID_SIG表示高電平表示有效數(shù)據(jù)
.vsync_valid = OT_VI_VSYNC_VALID_SIG, //表示垂直同步時(shí)序行有效信號 // OT_VI_VSYNC_NORM_PULSE表示垂直有效同步標(biāo)識
.vsync_valid_neg = OT_VI_VSYNC_NORM_PULSE, // OT_VI_VSYNC_VALID_SIG表示高電平為有效信號
.timing_blank = {
//水平前消隱區(qū)寬度 水平有效寬度 水平后消隱區(qū)寬度
/* hsync_hfb hsync_act hsync_hhb */
0, 0, 0,
//幀圖像或隔行輸入 幀圖像或隔行 幀圖像或隔行輸入時(shí)
//時(shí)奇場圖像的垂直 輸入時(shí)奇場垂 奇場垂直后消隱區(qū)高
//前消隱區(qū)高度 直有效高度 度
/* vsync0_vhb vsync0_act vsync0_hhb */
0, 0, 0,
//隔行輸入時(shí)偶場垂 隔行輸入時(shí)偶 隔行輸入時(shí)偶場垂
//直前消隱區(qū)高度 場垂直有效高度 直后消隱區(qū)高度
/* vsync1_vhb vsync1_act vsync1_hhb */
0, 0, 0
}
},
/* data type */
.data_type = OT_VI_DATA_TYPE_RAW, //OT_VI_DATA_TYPE_YUV, //OT_VI_DATA_TYPE_RAW
/* data reverse */
.data_reverse = TD_FALSE,
/* input size */
.in_size = {640, 512},
/* data rate */
.data_rate = OT_DATA_RATE_X1,
};
4.2static combo_dev_attr_t g_mipi_DC_attr =
{
.devno = 0,
.input_mode = INPUT_MODE_MIPI, // /* input mode */
.data_rate = MIPI_DATA_RATE_X1,
.img_rect = {0, 0, 640, 512},
.mipi_attr =
{
DATA_TYPE_RAW_12BIT,
OT_MIPI_WDR_MODE_NONE,
{0, 1, 2, 3, 4, 5, 6, 7}
}
};
4.3sample_vi_cfg配置
根據(jù)輸入格式選擇不同的類型
例如:
vi_cfg[i].pipe_info[j].pipe_attr.pixel_format = OT_PIXEL_FORMAT_YUV_400;
vi_cfg[i].pipe_info[j].isp_need_run = TD_FALSE;
vi_cfg[i].pipe_info[j].pipe_attr.isp_bypass = TD_TRUE; // yuv true
vi_cfg[i].pipe_info[j].chn_info[0].chn_attr.pixel_format = OT_PIXEL_FORMAT_YUV_400;
配置完vpss和venc就可以輸出視頻了
五、輸出紅外視頻
六、備貨選型參考
6.1后端處理器:
1、SS524即22AP10平替Hi3521DV200
2、SS522即22AP09平替Hi3520DV500
3、SS528即22AP30平替Hi3531DV200
4、SS626即22AP20 平替Hi3536AV100
6.2越影系列
5、SS928即108DC2910平替SD3043
6、SS927即107DC2910平替SD3402
7、Hi3519DV500
8、Hi3516DV500
9、Hi3559CV100
10、Hi3559AV100
審核編輯:湯梓紅
-
處理器
+關(guān)注
關(guān)注
68文章
19259瀏覽量
229647 -
海思
+關(guān)注
關(guān)注
42文章
460瀏覽量
116341 -
紅外成像
+關(guān)注
關(guān)注
0文章
93瀏覽量
11297
發(fā)布評論請先 登錄
相關(guān)推薦
評論