HI3518e的sensor接口引脚复用设置学习笔记

接口引脚复用

1.查看引脚定义的框图
2.找相应的设置寄存器(基地址+偏移量=寄存器地址)
3.himm工具写入

himm是海思提供的一个专门来写这些寄存器的一个可执行程序。
HI3518e的sensor接口引脚复用设置学习笔记

himm在哪里会被使用?

HI3518e的sensor接口引脚复用设置学习笔记
在load3518e这个脚本里面调用了himm,去写sensor的寄存器。

load3518e脚本在哪里使用了?

在/etc/profile脚本里面
HI3518e的sensor接口引脚复用设置学习笔记
开机的时候装在摄像头 -i 是insmod的意思
load3518e脚本是专门装载摄像头用的,在脚本里面写好了很多海思支持的摄像头的寄存器配置,要用的时候直接调用这个脚本,然后就ok了

回到接口引脚复用设置

如何修改海思支持的这些寄存器的值?
分析load3518e这个脚本
里面有个insert_sns()类似函数的东西。
HI3518e的sensor接口引脚复用设置学习笔记
不同的摄像头需要配置的东西也不同
看到有需要配置的有i2c vi_data vi_vs vi_hs clk 等等。
课程里面讲,很多时候这些data线都是厂家给你配置好的,但是呢clk线可以自己配置。
排线太长,如果clk频率太高的话会影响数据传输,这时候要把clk频率调低。
himm 0x2003002c 0xb4001;为例
himm是工具
0x2003002c是对应寄存器的地址
0xb4001是设置的值

如何找到这些寄存器的定义

HI3518e的sensor接口引脚复用设置学习笔记
海思官方给的文档里面有这个用户指南
0x2003002c
一般都这样 基地址是前面 偏移量在后面
基地址:0x2003_0000
偏移量:0x002c

HI3518e的sensor接口引脚复用设置学习笔记
对应的寄存器是PERI_CRG11
这个寄存器有21个位是有效的,但是这21个位里面跟时钟频率有关的设置是bit16-bit18
HI3518e的sensor接口引脚复用设置学习笔记
0xb4001是设置的值
转换成2进制是
1011 0100 0000 0000 0001
这么说除了[18:16]要设置 bit19 bit14 bit0也置位了
bit0 时钟打开
bit14 mipipix时钟打开
bit19sensor clk out时钟打开
[18:16] 011对应27MHz 跟load3518e脚本里面的注释相对应。

至此完成了这个寄存器的分析。

对于其他寄存器

顺序应该是先查引脚定义的框图,然后找寄存器,然后再写寄存器的。
但是如果有例子的情况下可以模仿别人的写法来添加不同的sensor,当然这是在自己技术够好的情况下,不行的话就把这个任务丢给摄像头的厂商,问他们能不能帮你调这个sensor跟这款芯片的驱动。