Skip to content

Commit 42e1385

Browse files
committed
* os04a10 can't config fps at 720p90
1 parent 7f90bb1 commit 42e1385

File tree

1 file changed

+32
-3
lines changed

1 file changed

+32
-3
lines changed

components/vision/port/maixcam/maix_camera_mmf.cpp

Lines changed: 32 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1274,6 +1274,23 @@ namespace maix::camera
12741274
}
12751275
}
12761276

1277+
static void _config_extern_register_of_720p90_os04a10(double exptime_ms)
1278+
{
1279+
char cmd[128];
1280+
double base_exptime_ms = 1000.0 / 90.0;
1281+
if (exptime_ms > base_exptime_ms) {
1282+
uint64_t base_value = 0x5cc;
1283+
double scale = 132.839999726;
1284+
uint64_t reg_val = base_value + (exptime_ms - base_exptime_ms) * scale;
1285+
snprintf(cmd, sizeof(cmd), "i2ctransfer -fy 4 w4@0x36 0x38 0x0c %#.2x %#.2x", (uint8_t)((reg_val >> 8) & 0xff), (uint8_t)(reg_val & 0xff));
1286+
system(cmd);
1287+
} else {
1288+
uint64_t reg_val = 0x05cc;
1289+
snprintf(cmd, sizeof(cmd), "i2ctransfer -fy 4 w4@0x36 0x38 0x0c %#.2x %#.2x", (uint8_t)((reg_val >> 8) & 0xff), (uint8_t)(reg_val & 0xff));
1290+
system(cmd);
1291+
}
1292+
}
1293+
12771294
err::Err Camera::set_fps(double fps) {
12781295
double new_fps = fps;
12791296
camera_priv_t *priv = (camera_priv_t *)this->_param;
@@ -1282,12 +1299,17 @@ namespace maix::camera
12821299
new_fps = fps / 2;
12831300
break;
12841301
case OV_OS04A10_MIPI_4M_1440P_30FPS_12BIT:
1285-
case OV_OS04A10_MIPI_4M_720P90_12BIT:
12861302
{
12871303
int exp_time_ms = (int)(1000.0 / fps);
12881304
_config_extern_register_of_os04a10(exp_time_ms);
12891305
}
12901306
break;
1307+
case OV_OS04A10_MIPI_4M_720P90_12BIT:
1308+
{
1309+
double exp_time_ms = 1000.0 / fps;
1310+
_config_extern_register_of_720p90_os04a10(exp_time_ms);
1311+
}
1312+
break;
12911313
case SMS_SC035GS_MIPI_480P_120FPS_12BIT:
12921314
err::check_raise(err::ERR_NOT_IMPL, "SC035GS set_fps not support");
12931315
break;
@@ -1313,10 +1335,13 @@ namespace maix::camera
13131335
} else {
13141336
switch (priv->sns_type) {
13151337
case OV_OS04A10_MIPI_4M_1440P_30FPS_12BIT:
1316-
case OV_OS04A10_MIPI_4M_720P90_12BIT:
13171338
mmf_set_exptime(_ch, value);
13181339
_config_extern_register_of_os04a10(value / 1000);
13191340
break;
1341+
case OV_OS04A10_MIPI_4M_720P90_12BIT:
1342+
mmf_set_exptime(_ch, value);
1343+
_config_extern_register_of_720p90_os04a10((double)value / 1000);
1344+
break;
13201345
default:
13211346
mmf_set_exptime(_ch, value);
13221347
break;
@@ -1531,11 +1556,15 @@ namespace maix::camera
15311556
} else {
15321557
switch (priv->sns_type) {
15331558
case OV_OS04A10_MIPI_4M_1440P_30FPS_12BIT:
1534-
case OV_OS04A10_MIPI_4M_720P90_12BIT:
15351559
if (value == 0) {
15361560
_config_extern_register_of_os04a10(0); // revert exposure time register of os04a10
15371561
}
15381562
break;
1563+
case OV_OS04A10_MIPI_4M_720P90_12BIT:
1564+
if (value == 0) {
1565+
_config_extern_register_of_720p90_os04a10(0); // revert exposure time register of os04a10
1566+
}
1567+
break;
15391568
default:
15401569
break;
15411570
}

0 commit comments

Comments
 (0)