查看“Linux内核-摄像头驱动移植”的源代码
←
Linux内核-摄像头驱动移植
跳转至:
导航
、
搜索
因为以下原因,你没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==实验原理== DCMI(Digital Camera Interface),DCMI是一个同步并行接口,能够从外部8bit、10bit、12bit或14bit的CMOS摄像头接收高速数据流,支持不同的数据格式:YCbCr4:2:2/RGB565渐进式视频和压缩数据(JPEG)。<br> [[Image:58-1-1-1.png]] <br> FS-MP1A可以外接8bit的COM Camera,接口定义如下: [[Image:58-1-1-2.png]] <br> 接口与MPU管脚对应关系如下: [[Image:58-1-1-3.png]] <br> [[Image:58-1-1-4.png]] <br> [[Image:58-1-1-5.png]] <br> [[Image:58-1-1-6.png]] <br> [[Image:58-1-1-7.png]] <br> {|class="wikitable" |- !原理图网络编号 !! 对应管脚 !! 管脚功能 !! 管脚功能码 |- | DCMI_D0 | PH9 | DCMI_D0 | AF13 |- | DCMI_D1 | PH10 | DCMI_D0 | AF13 |- | DCMI_D2 | PH11 | DCMI_D0 | AF13 |- | DCMI_D3 | PH12 | DCMI_D0 | AF13 |- | DCMI_D4 | PH14 | DCMI_D0 | AF13 |- | DCMI_D5 | PI4 | DCMI_D0 | AF13 |- | DCMI_D6 | PB8 | DCMI_D0 | AF13 |- | DCMI_D7 | PE6 | DCMI_D0 | AF13 |- | DCMI_RESET | PA3 | GPIO | ANALOG |- | DCMI_PWDN | PA4 | GPIO | ANALOG |- | DCMI_PIXCK | PA6 | DCMI_PIXCLK | AF13 |- | DCMI_VSYNC | PB7 | DCMI_VSYNC | AF13 |} *DCMI设备树节点<br> 参考文档: <pre><nowiki> Documentation/devicetree/bindings/media/st,stm32-dcmi.txt Documentation/devicetree/bindings/media/video-interfaces.txt </nowiki></pre> 内核中ST对STM32MP15x系列芯片的设备树资源了做了定义,可参见: arch/arm/boot/dts/stm32mp151.dtsi stm32mp151中dcmi定义如下: <pre><nowiki> dcmi: dcmi@4c006000 { compatible = "st,stm32-dcmi"; reg = <0x4c006000 0x400>; interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>; resets = <&rcc CAMITF_R>; clocks = <&rcc DCMI>; clock-names = "mclk"; dmas = <&dmamux1 75 0x400 0xe0000001>; dma-names = "tx"; status = "disabled"; }; </nowiki></pre> 上述代码只对dcmi做了基本的初始化,并没有针对不同的硬件设计做适配,所以需结合硬件补全设备树节点信息。<br> 参考帮助文档及内核中其它STM32MP157设备树中对于dcmi的定义,修改dcmi内容如下: <pre><nowiki> &dcmi { status = "okay"; pinctrl-names = "default", "sleep"; pinctrl-0 = <&dcmi_pins_a>; pinctrl-1 = <&dcmi_sleep_pins_a>; port { dcmi_0: endpoint { remote-endpoint = <&ov5640_0>; bus-width = <8>; hsync-active = <0>; vsync-active = <0>; pclk-sample = <1>; pclk-max-frequency = <77000000>; }; }; }; </nowiki></pre> 由于stm32mp15-pinctrl.dtsi中对于DCMI管脚的定义与FS-MP1A实际使用管脚一致,所以无需修改 *CMOS Camera设备树节点<br> FS-MP1A支持多款COMS Camera,本节以ov5640为例:<br> 参考文档: Documentation/devicetree/bindings/media/i2c/ov5640.txt 参考帮助文档及内核中其它STM32MP157设备树中对于ov5640的定义,修改dcmi内容如下: <pre><nowiki> ov5640: camera@3c { compatible = "ovti,ov5640"; reg = <0x3c>; clocks = <&clk_ext_camera>; clock-names = "xclk"; DOVDD-supply = <&v2v8>; powerdown-gpios = <&gpioa 4 (GPIO_ACTIVE_HIGH | GPIO_PUSH_PULL)>; reset-gpios = <&gpioa 3 (GPIO_ACTIVE_LOW | GPIO_PUSH_PULL)>; rotation = <180>; status = "okay"; port { ov5640_0: endpoint { remote-endpoint = <&dcmi_0>; bus-width = <8>; data-shift = <2>; /* lines 9:2 are used */ hsync-active = <0>; vsync-active = <0>; pclk-sample = <1>; pclk-max-frequency = <77000000>; }; }; }; </nowiki></pre> *2.8V电源定义<br> 前文已经说过如何添加电源节点,本节不再重复,在根节点添加&v2v8节点,内容如下: <pre><nowiki> v2v8_audio: regulator-v2v8 { compatible = "regulator-fixed"; regulator-name = "v2v8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-always-on; regulator-boot-on; }; </nowiki></pre> *24M时钟定义<br> 参考文档: Documentation/devicetree/bindings/clock/fixed-clock.yaml 参考帮助文档或内核中其他设备树文件,对于时钟的定义,增加内容如下: <pre><nowiki> clocks { clk_ext_camera: clk-ext-camera { #clock-cells = <0>; compatible = "fixed-clock"; clock-frequency = <24000000>; }; }; </nowiki></pre> ==实验目的== ==实验平台== ==实验步骤==
返回至
Linux内核-摄像头驱动移植
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
关于我们
联系我们
开发板资料
STM32F103开发板
STM32U575开发板
STM32MP157开发板
Hi3861鸿蒙开发板
WS63星闪开发板
HaaS EDU开发板
ESP32物联网开发板
i.MX8M Plus开发板
智能车资料
STM32F103智能小车
体系课试听
AI人工智能体验课
嵌入式STM32体验课
华清图书下载
嵌入式系列图书
物联网系列图书
Android系列图书
高校教仪设备
人工智能实训设备
嵌入式实训设备
物联网实训设备
虚拟仿真实训设备
行业应用实训设备
软件仿真平台
人工智能仿真系统
嵌入式仿真系统
物联网仿真系统
友情链接
元宇宙实验中心
华清远见研发中心
华清淘宝硬件商城
华清天猫课程商城
工具
链入页面
相关更改
特殊页面
页面信息