联咏nt98568点亮sensor步骤
1、新增CFG配置
ns02301_linux_sdk\code\hdal\ext_devices\sensor\configs\cfg\sen_imx327_567.cfg
[MAP]
path_1 = 1 #Path 1 Enable 設定為 1 表示 SIE_1 使用此 sensor cfg 配置
path_2 = 0 #Path 2 Disable 設定為 1 表示 SIE_2 使用此 sensor cfg 配置
path_3 = 0 #Path 3 Disable 設定為 1 表示 SIE_3 使用此 sensor cfg 配置
path_4 = 0 #Path 4 Disable
path_5 = 0 #Path 5 Disable
path_6 = 0 #Path 6 Disable
path_7 = 0 #Path 7 Disable
path_8 = 0 #Path 8 Disable
[PRESET]
id_0_expt_time = 10000 #10000us 設定 id = 0 的 Sensor 初始的曝光時間參數,單位為 us
id_0_gain_ratio = 1000 #1x gain 設定 id = 0 的 Sensor 初始的增益參數,1000 為 1x
[DIRECTION]
id_0_mirror = 0 #no mirror 設定id = 0的Sensor端左右翻轉始能;1 為翻轉,0 為不翻轉
id_0_flip = 0 #no flip 設定id = 0的 Sensor 端上下翻轉始能;1 為翻轉,0 為不翻轉
[POWER]
id_0_mclk = 0 #CTL_SEN_CLK_SEL_SIEMCLK 設定 id = 0 的 MCLK 來源
id_0_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20[0:24]; P_GPIO_39 = 0x39; H_GPIO:+0x40; D_GPIO:0x60; P_GPIO:0x80[25~38]; S_GPIO:0xC0; A_GPIO:0xE0 設定id=0的Power Down 控制腳位
id_0_rst_pin = 0xC4 #S_GPIO_4, C_GPIO:+0x0; P_GPIO:+0x20[0:24]; P_GPIO_39 = 0x39; H_GPIO:+0x40; D_GPIO:0x60; P_GPIO:0x80[25~38]; S_GPIO:0xC0; A_GPIO:0xE0 設定id=0的 Reset 控制腳位
id_0_rst_time = 1 #1ms 設定 id = 0 的 Reset 持續時間
id_0_stable_time = 1 #1ms 設定id=0的穩定時間,即 Reset 後再等待stable time 才能再做控制
[I2C]
id_0_i2c_id = 1 #SEN_I2C_ID_2_PR 設定 id = 0 的 I2C 通道,0 為 SEN_I2C_ID_1
id_0_i2c_addr = 0x1A #0x34 >> 1 = 0x1A 設定 id = N的 Sensor 識別地址,7 bit 格式
除了上面的方式,也可在dts中对上面这些参数进行设置:
2、新增驱动代码及修改代码
路径:code/hdal/ext_devices/sensor/sen_imx327/
3、驱动加载
修改:ns02301_linux_sdk\BSP\root-fs\rootfs\etc_Model\etc_COMMON\init.d\S10_SysInit2
4、设置pinmux
https://bbs.16rd.com/thread-587396-1-1.html
引脚复用定义及选项:
BSP\linux-kernel\drivers\soc\nvt\plat-novatek\include\plat-ns02301_a32/top.h hardware\board\document\NT98568MBG_BGA10x10_draft_PinMux_table.xlsx software\pc\document\UIPinCtrlTools(Pinmux)\NT98567_UI_Pinctrl_User_Guide_en.pdf BSP/linux-kernel/include/dt-bindings/pinctrl/nvt-ns02301-pinctrl.h
5、pq_video_rtsp.c(set_cap_cfg配置)
1、确认sensor的VCAP_ID
2、确认set_cap_cfg的HD_VIDEOCAP_SEN_CLANE_CSI配选,不同的平台各不相同,参考文档路径
software\board\document\MEDIA\Novatek_HDAL_Videocapture_Programming_Guide_zh.pdf
3、指定mipi的lane的顺序
#指定mipi的lane的顺序 cap_cfg.sen_cfg.sen_dev.pin_cfg.sen_2_serial_pin_map[0:7] 指定sen_2_serial_pin_map代表8个lane,指定选中的lane的顺序分配 举例1: 如果在serial_if_pinmux配置的是F01,则 sen_2_serial_pin_map[0]=0, sen_2_serial_pin_map[1]=1, sen_2_serial_pin_map[2]=2, sen_2_serial_pin_map[3]=3, 其余均为HD_VIDEOCAP_SEN_IGNORE 举例2: 如果在serial_if_pinmux配置的是C02,则 sen_2_serial_pin_map[2]=0, sen_2_serial_pin_map[3]=1, 其余均为HD_VIDEOCAP_SEN_IGNORE
6.sensor驱动里面修改i2c id
用到i2c0就是SEN_I2C_ID_1,
若無對應Sensor cfg掛載時,則使用此參數,一般有ns02301_linux_sdk\code\hdal\ext_devices\sensor\configs\cfg\sen_imx327_567.cfg则不用改,注意sen_imx327_567.cfg文件名格式要正确,如果是sen_imx327_2.c,对应的cfg名称应为sen_imx327_2_567.cfg,如果写成sen_imx327_567_2.cfg则加载不了
7、只使能第二路sensor的cfg文件
[MAP] path_1 = 0 #Path 1 Enable path_2 = 1 #Path 2 Enable path_3 = 0 #Path 3 Disable path_4 = 0 #Path 4 Disable path_5 = 0 #Path 5 Disable path_6 = 0 #Path 6 Disable path_7 = 0 #Path 7 Disable path_8 = 0 #Path 8 Disable [PRESET] id_1_expt_time = 10000 #10000us id_1_gain_ratio = 1000 #1x gain [DIRECTION] id_1_mirror = 0 #no mirror id_1_flip = 0 #no flip [POWER] id_1_mclk = 1 #CTL_SEN_CLK_SEL_SIEMCLK id_1_pwdn_pin = 0xFFFFFFFF #no pwdn pin, C_GPIO:+0x0; P_GPIO:+0x20[0:24]; P_GPIO_39 = 0x39; H_GPIO:+0x40; D_GPIO:0x60; P_GPIO:0x80[25~38]; S_GPIO:0xC0; A_GPIO:0xE0 id_1_rst_pin = 0xCE #S_GPIO14, C_GPIO:+0x0; P_GPIO:+0x20[0:24]; P_GPIO_39 = 0x39; H_GPIO:+0x40; D_GPIO:0x60; P_GPIO:0x80[25~38]; S_GPIO:0xC0; A_GPIO:0xE0 id_1_rst_time = 5 #5 ms id_1_stable_time = 5 #5 ms [I2C] id_1_i2c_id = 0 #SEN_I2C_ID_1_PR id_1_i2c_addr = 0x1A #0x34 >> 1 = 0x1A