您好,登錄后才能下訂單哦!
如何進行RK3399 camera驅動開發,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
概述
目前板子上有兩路mipi rx,可以接雙攝像頭。
DTS配置
1、Enabled isp
&isp0 {
status = "okay";
};
&isp1 {
status = "okay";
};
&isp0_mmu {
status = "okay";
};
&isp1_mmu {
status = "okay";
};
2、Enabled mipi對應的i2c
&i2c1 {
status = "okay";
};
camera驅動(默認為OV9750)
1、android 驅動代碼路徑
hardware/rockchip/camera/SiliconImage/isi/drv/OV9750_A
2、編譯生成的libisp_isi_drv_OV9750_A.so 放置于/vendor/lib/hw
3、cp hardware/rockchip/camera/SiliconImage/isi/drv/OV9750_A/calib/ OV9750_A.xml /vendor/etc/
4、cp hardware/rockchip/camera/Config/cam_board_rk3399.xml /vendor/etc/cam_board.xml
xml 配置
1、根據電路圖為camera上電,并配置rst,pdn,以下按mipi0配置電壓以及相關gpio,I2C通道(1),mipi phy 通道(0),IO 電壓 1.8v、CORE電壓1.8v、模擬電壓:3.2v,具體請看電路圖、以及OV9750 datasheet。
概述
RK3399Pro toybrick 開發板分別帶有兩個MIPI,一個DVP攝像頭接口,MIPI支持最高4K拍照,并支持 1080P 30fps以上視頻錄制。此外,開發板還支持 USB 攝像頭。
本文以 OV9750 攝像頭為例,講解在該開發板上的配置過程。
配置原理
由以下電路圖可知,兩路MIPI攝像頭連接的是不同的ISP和I2C通道。
MIPI0:使用ISP0和I2C1,還需配置MIPI_MCLK0、MIPI_PDN、MIPI_RST
MIPI1:使用ISP1和I2C2,還需配置MIPI_MCLK_T2、JMIPI_PDN2、JMIPI_RST2
DTS配置
配置isp節點
cif_isp0: cif_isp@ff910000 {
compatible = "rockchip,rk3399-cif-isp";
rockchip,grf = <&grf>;
reg = <0x0 0xff910000 0x0 0x4000>, <0x0 0xff968000 0x0 0x8000>;
reg-names = "register", "dsihost-register";
clocks =
<&cru ACLK_ISP0_NOC>, <&cru ACLK_ISP0_WRAPPER>,
<&cru HCLK_ISP0_NOC>, <&cru HCLK_ISP0_WRAPPER>,
<&cru SCLK_ISP0>, <&cru SCLK_DPHY_RX0_CFG>,
<&cru SCLK_CIF_OUT>, <&cru SCLK_CIF_OUT>,
<&cru SCLK_MIPIDPHY_REF>;
clock-names =
"aclk_isp0_noc", "aclk_isp0_wrapper",
"hclk_isp0_noc", "hclk_isp0_wrapper",
"clk_isp0", "pclk_dphyrx",
"clk_cif_out", "clk_cif_pll",
"pclk_dphy_ref";
interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH 0>;
interrupt-names = "cif_isp10_irq";
power-domains = <&power RK3399_PD_ISP0>;
rockchip,isp,iommu-enable = <1>;
iommus = <&isp0_mmu>;
status = "disabled";
};
&isp0 {
status = "okay";
};
&isp0_mmu {
status = "okay";
};
&cif_isp0 {
rockchip,camera-modules-attached = <&camera0>;
status = "okay";
};
設置CPU MCLK引腳功能
&pinctrl {
/* */
cam_mclk {
cam_default_pins: cam-default-pins {
rockchip,pins = <2 11 RK_FUNC_3 &pcfg_pull_none>;
};
};
};
在i2c上配置camera節點,mipi0 camera連接到i2c1上
&i2c1 {
status = "okay"; /* 使能i2c1 */
/*
* 一般寫成cameraX:camera-module@ID,其中X為序號,ID為camera的7bit I2C地址
* camera0表示節點名,綁定isp節點時,將camera0 attach到isp0
*/
camera0: camera-module@10 {
status = "okay";
compatible = "omnivision,ov9750-v4l2-i2c-subdev";
reg = <0x10>; /* 7bit I2C地址 */
device_type = "v4l2-i2c-subdev"; /* 無需修改 */
clocks = <&cru SCLK_CIF_OUT>; /* 無需修改,時鐘源選擇 */
clock-names = "clk_cif_out"; /* 無需修改,時鐘源名字 */
pinctrl-names = "default"; /* 無需修改,通過pinctrl配置MCLK引腳 */
pinctrl-0 = <&cam_default_pins>; /* 無需修改,與上文的pinctrl定義一致 */
rockchip,pd-gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_LOW>; /* PD管腳分配及有效電平 */
rockchip,rst-gpio = <&gpio4 RK_PD2 GPIO_ACTIVE_LOW>; /* RST管腳分配及有效電平 */
rockchip,camera-module-mclk-name = "clk_cif_out"; /* 無需修改 */
rockchip,camera-module-facing = "back"; //前后置配置
rockchip,camera-module-name = "MDG001"; //Camera 模組名稱
rockchip,camera-module-len-name = "NONE"; //Camera 模組鏡頭
rockchip,camera-module-fov-h = "80"; //模組水平可視角度配置
rockchip,camera-module-fov-v = "65"; //模組垂直可視角度配置
rockchip,camera-module-orientation = <0>; //模組角度設置
rockchip,camera-module-iq-flip = <0>; //IQ 上下翻轉
rockchip,camera-module-iq-mirror = <0>; //IQ 左右鏡像
//以上 2 個屬性控制攝像頭的效果參數鏡像配置,一般都是設置成 0,但是發現以下現象:拍攝白墻,圖片的上半部偏色與下半部偏色不一致,或者左右半部偏不一致,即可以將這2個屬性置成1。
rockchip,camera-module-flip = <1>;
rockchip,camera-module-mirror = <1>;
//以上 2 個屬性控制攝像頭驅動中的鏡像配置,如果圖像旋轉 180 度,可以將這 2 個屬性修改成相反的值即可旋轉 180。
rockchip,camera-module-defrect0 = <1280 960 0 0 1280 960>; //根據攝像頭分辨率進行設置
rockchip,camera-module-flash-support = <0>; //閃光燈支持
rockchip,camera-module-mipi-dphy-index = <0>; //mipi口配置,根據物理連接定義
as-master = <0>;
};
};
驅動說明
與攝像頭相關的代碼目錄如下:
drivers/media/i2c/soc_camera/rockchip
|-- ov9750_v4l2-i2c-subdev.c // OV9750驅動
|-- ov_camera_module.c // OV系列公共函數
|-- ov_camera_module.h //
|-- rk_camera_mclk.c // RK Camera MCLK時鐘信號管理
|-- rk_camera_mclk.h
|-- rk_camera_module.c // RK 系列公共函數
`-- rk_camera_module_version.h //模塊版本信息
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。