滴滴滴滴哒

滴滴滴滴哒

2个粉丝

18

问答

0

专栏

0

资料

滴滴滴滴哒  发布于  2025-02-20 18:00:52
采纳率 12%
18个问答
308

求助! 目前使用海思的3519驱动sensor imx678,遇到sensor时钟问题。

我目前使用的是快启模式,快启模式是直接把sys.ko编译进入kernel里面的。我们知道如果sys.ko源码里面的时钟和sensor初始化序列里面的时钟对不齐的话,录像的文件会出现时间不对的问题。
目前使用快启的kernel,在Linux源码里面找到sys_cfg.c文件,修改里面的时钟为37mhz。
sensor初始化序列使用的也是37mhz。但是仍然会出现录像不对的问题。但是在非快启系统一切正常请问有没有遇到这种问题的大哥们,能不能给点建议。
附上代码

static unsigned int parse_sensor_clock(const char *name, unsigned int name_len)
{
    unsigned int clock = 0x0;
    unsigned int len;

    if (name_len == 0) {
        sys_config_print("name len is 0!\n");
        return clock;
    }
    len = SENSOR_NAME_LEN;

    /* get clock from sensor name. */
    if ((strncmp(SENSOR_NAME_OS08A20, name, len) == 0) ||
        (strncmp(SENSOR_NAME_OS04A10, name, len) == 0)) {
        clock = 0x4001;
    } else if ((strncmp(SENSOR_NAME_IMX515, name, len) == 0) ||
           (strncmp(SENSOR_NAME_IMX347_SLAVE, name, len) == 0)) {
        clock = 0x8001;
    } else if ((strncmp(SENSOR_NAME_SC450AI, name, len) == 0) ||
           (strncmp(SENSOR_NAME_SC850SL, name, len) == 0)) {
        clock = 0xA001;
    } else if ((strncmp(MIPI_AD, name, len) == 0) ||
           (strncmp(SENSOR_NAME_IMX678, name, len) == 0)) {
        // clock = 0x4010; //24mhz
        clock = 0x8010; //37mhz
        // clock = 0xA010; //27mhz
    } else {
        return clock;
    }

    return clock;
}
void imx678_linear_4K30_12bit_init(ot_vi_pipe ViPipe)
{
/*
IMX678 All-pixel scan AD:12bit Output:12bit CSI-2_4lane 1188Mbps INCK_37.125MHz
*/
    imx678_write_register(ViPipe,0x3000, 0x01);//Standby
    imx678_write_register(ViPipe,0x3001, 0x00);//REGHOLD
    imx678_write_register(ViPipe,0x3002, 0x01);//Master mode stopx
    imx678_write_register(ViPipe,0x3014, 0x01);// INCK_37.125MHz
    // imx678_write_register(ViPipe,0x3014, 0x04);// INCK_24MHz
    // imx678_write_register(ViPipe,0x3014, 0x03);// INCK_27MHz
    imx678_write_register(ViPipe,0x3015, 0x04);// 1188Mbps
    imx678_write_register(ViPipe,0x3022, 0x01);// AD:12bit
    imx678_write_register(ViPipe,0x3023, 0x01);// OUT:12bit
我来回答
回答4个
时间排序
认可量排序

mylx2010

5个粉丝

6

问答

1

专栏

5

资料

mylx2010 2025-02-20 20:47:48
认可0

查对应的寄存器吧,排查一下

滴滴滴滴哒
滴滴滴滴哒   回复   mylx2010  2025-02-24 16:25:25
0

好的谢谢

老千

0个粉丝

2

问答

0

专栏

0

资料

老千 2025-02-20 21:04:10
认可1

1、通过debug调试工具bspmm查询sensor clk对应寄存器的地址值,sensor1 clk的寄存器地址应该是0x011018440,看下这个值跟sys_config文档里面的对应时钟寄存器值是否一样,看是否系统起来sys_config里面有没有其它地方会改这个寄存器的值。当然也可以通过bspmm去改这个寄存器的值,看fps是否变化,变化的规律;
2、第二个排查sensor驱动,先把sensor驱动里面操作sensor寄存器的所有地方都注释掉,只留初始化序列,看fps是否正常,如果正常那就好办了,一个一个寄存器操作的地方放开,可以优先看VMAX的值是否设置正确,这个很重要!!!

滴滴滴滴哒

2个粉丝

18

问答

0

专栏

0

资料

滴滴滴滴哒 2025-02-24 16:25:33
认可0

好的谢谢大佬

或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区