20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850
20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850
2023/12/28 12:30
开发板:Firefly的AIO-3399J【RK3399】
SDK:rk3399-android-11-r20211216.tar.xz【Android11】
Android11.0.tar.bz2.aa【ToyBrick】
Android11.0.tar.bz2.ab
Android11.0.tar.bz2.ac
https://wiki.t-firefly.com/AIO-3399J/prepare_compile_android.html
AIO-3399J产品规格书 立即购买
AIO-3399J 采用 RK3399 六核(A72x2+A53x4) 64 位处理器,主频高达1.8GHz,集成了四核 Mali-T860 GPU,性能优异。
1、简略步骤:
rootroot@rootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2
rootroot@rootroot-X99-Turbo:~/3TB$ tar jxvf Android11.0.tar.bz2
rootroot@rootroot-X99-Turbo:~/3TB$ mv Android11.0 61Android11.0
rootroot@rootroot-X99-Turbo:~/3TB$ cd 61Android11.0
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ cd u-boot
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/u-boot$ ./make.sh rk3399
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/u-boot$ cd ..
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ cd kernel/
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 rockchip_defconfig android-11.config -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-firefly-aio.img -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ source build/envsetup.sh
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ lunch
42. rk3399_Android11-userdebug
Which would you like? [aosp_arm-eng] 42
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ make -j36
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0$ ./build.sh -u
rootroot@rootroot-X99-Turbo:~/3TB/61Android11.0/kernel$ make ARCH=arm64 BOOT_IMG=../rockdev/Image-rk3399_Android11/boot.img rk3399-sapphire-excavator-edp-avb.img -j36
2、【这个不重要,可以不用修改!】
不知道是ov13850的对reset/pwdn引脚不重要,还是在驱动ov13850.c中另行配置!
Z:\3TB\64rk3399-android-11\kernel\arch\arm64\boot\dts\rockchip\rk3399-firefly-aio.dtsi
&i2c1 {
status = "okay";
tc358749x: tc358749x@0f {
compatible = "toshiba,tc358749x";
#sound-dai-cells = <0>;
reg = <0x0f>;
power-gpios = <&gpio2 3 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio0 2 GPIO_ACTIVE_HIGH>;
int-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
pinctrl-names = "default";
pinctrl-0 = <&hdmiin_gpios>;
status = "disabled";
};
xc7160b: xc7160b@1b {
status = "okay";
};
xc7160f: xc7160f@1b {
status = "okay";
};
ov13850: ov13850@10 {
status = "okay";
avdd-supply = <&vcc_mipi>;
power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; // conflict with csi-ctl-gpios
pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
};
//ov13850b: ov13850b@10 {
// status = "okay";
// avdd-supply = <&vcc_mipi>;
// power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
// reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
// pwdn-gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
//};
//
//ov13850f: ov13850f@10 {
// status = "okay";
// avdd-supply = <&vcc_mipi>;
// power-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
// reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
// pwdn-gpios = <&gpio2 28 GPIO_ACTIVE_HIGH>;
//};
};


2、
Z:\3TB\64rk3399-android-11\kernel\arch\arm64\boot\dts\rockchip\rk3399-firefly-port.dtsi
&i2c1 {
status = "okay";
i2c-scl-rising-time-ns = <300>;
i2c-scl-falling-time-ns = <15>;
clock-frequency = <400000>;
es8323: es8323@10 {
compatible = "everest,es8323";
reg = <0x10>;
spk-ctl-gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
clock-names = "mclk";
clocks = <&cru SCLK_I2S_8CH_OUT>;
pinctrl-names = "default";
pinctrl-0 = <&i2s_8ch_mclk>;
#sound-dai-cells = <0>;
extcon = <&rk_headset>;
status = "disabled";
};
rt5640: rt5640@1c {
#sound-dai-cells = <0>;
compatible = "realtek,rt5640";
reg = <0x1c>;
clocks = <&cru SCLK_I2S_8CH_OUT>;
clock-names = "mclk";
realtek,in1-differential;
pinctrl-names = "default";
pinctrl-0 = <&i2s_8ch_mclk>;
//hp-con-gpio = <&gpio4 21 GPIO_ACTIVE_HIGH>;
//hp-det-gpio = <&gpio4 28 GPIO_ACTIVE_LOW>;
io-channels = <&saradc 4>;
hp-det-adc-value = <500>;
status = "okay";
};
gti5801: gti5801@60 {
compatible = "gyrfalcon,spr5801";
reg = <0x60>;
status = "disabled";
};
vm149c: vm149c@0c {
compatible = "silicon touch,vm149c";
status = "okay";
reg = <0x0c>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
};
ov13850: ov13850@10 {
compatible = "ovti,ov13850";
status = "okay";
reg = <0x10>;
clocks = <&cru SCLK_CIF_OUT>;
clock-names = "xvclk";
/* avdd-supply = <>; */
/* dvdd-supply = <>; */
/* dovdd-supply = <>; */
reset-gpios = <&gpio2 10 GPIO_ACTIVE_HIGH>; // conflict with csi-ctl-gpios
pwdn-gpios = <&gpio1 4 GPIO_ACTIVE_HIGH>;
pinctrl-names = "rockchip,camera_default";
pinctrl-0 = <&cif_clkout>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "CMK-CT0116";
rockchip,camera-module-lens-name = "Largan-50013A1";
lens-focus = <&vm149c>;
//flash-leds = <&sgm3784_led0 &sgm3784_led1>;
port {
ucam_out1: endpoint {
//remote-endpoint = <&mipi_in_ucam0>;
remote-endpoint = <&mipi_in_ucam1>;
data-lanes = <1 2>;
};
};
};
xc7160b: xc7160b@1b {
status = "disabled";
compatible = "firefly,xc7160";
reg = <0x1b>;
clocks = <&cru SCLK_CIF_OUT>;
clock-names = "xvclk";
//avdd-supply = <&vcc_mipi>; /* VCC28_MIPI */
//dovdd-supply = <&vcc_mipi>; /* VCC18_MIPI */
//dvdd-supply = <&dvdd_1v2>; /* DVDD_1V2 */
reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
pinctrl-names = "rockchip,camera_default";
pinctrl-0 = <&cif_clkout>;
firefly,clkout-enabled-index = <0>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "NC";
rockchip,camera-module-lens-name = "NC";
port {
xc7160b_out: endpoint {
remote-endpoint = <&mipi_in_ucam2>;
data-lanes = <1 2 3 4>;
};
};
};
xc7160f: xc7160f@1b {
status = "disabled";
compatible = "firefly,xc7160";
reg = <0x1b>;
clocks = <&cru SCLK_CIF_OUT>;
clock-names = "xvclk";
//avdd-supply = <&vcc_mipi>; /* VCC28_MIPI */
//dovdd-supply = <&vcc_mipi>; /* VCC18_MIPI */
//dvdd-supply = <&dvdd_1v2>; /* DVDD_1V2 */
reset-gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
pinctrl-names = "rockchip,camera_default";
pinctrl-0 = <&cif_clkout>;
firefly,clkout-enabled-index = <0>;
rockchip,camera-module-index = <1>;
rockchip,camera-module-facing = "front";
rockchip,camera-module-name = "NC";
rockchip,camera-module-lens-name = "NC";
port {
xc7160f_out: endpoint {
remote-endpoint = <&mipi_in_ucam3>;
data-lanes = <1 2 3 4>;
};
};
};
XC6130b: XC6130b@23{
status = "disabled";
compatible = "firefly,xc7022";
reg = <0x23>;
clocks = <&cru SCLK_CIF_OUT>;
clock-names = "xvclk";
//avdd-supply = <&vcc_mipi>;
reset-gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
pinctrl-names = "rockchip,camera_default";
pinctrl-0 = <&cif_clkout>;
firefly,clkout-enabled-index = <0>;
rockchip,camera-module-index = <0>;
rockchip,camera-module-facing = "back";
rockchip,camera-module-name = "NC";
rockchip,camera-module-lens-name = "NC";
port {
xc6130_out: endpoint {
remote-endpoint = <&mipi_in_ucam4>;
data-lanes = <1 2>;
};
};
};
XC7022b: XC7022b@1b{
status = "disabled";
compatible = "firefly,xc7022";
reg = <0x1b>;
clocks = <&cru SCLK_CIF_OUT>;
clock-names = "xvclk";
//avdd-supply = <&vcc_mipi>;
reset-gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
pinctrl-names = "rockchip,camera_default";
pinctrl-0 = <&cif_clkout>;
firefly,clkout-enabled-index = <0>;
rockchip,camera-module-index = <1>;
rockchip,camera-module-facing = "front";
rockchip,camera-module-name = "NC";
rockchip,camera-module-lens-name = "NC";
port {
xc7022_out: endpoint {
remote-endpoint = <&mipi_in_ucam5>;
data-lanes = <1 2>;
};
};
};
};
&i2c1_xfer{
rockchip,pins =
<4 2 RK_FUNC_1 &pcfg_pull_up>,
<4 1 RK_FUNC_1 &pcfg_pull_up>;
};
&mipi_dphy_rx0 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
//mipi_in_ucam0: endpoint@1 {
// reg = <1>;
// remote-endpoint = <&ucam_out0>;
// data-lanes = <1 2>;
//};
mipi_in_ucam2: endpoint@2 {
reg = <2>;
remote-endpoint = <&xc7160b_out>;
data-lanes = <1 2 3 4>;
};
mipi_in_ucam4: endpoint@3 {
reg = <3>;
remote-endpoint = <&xc6130_out>;
data-lanes = <1 2>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
dphy_rx0_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&isp0_mipi_in>;
};
};
};
};
&mipi_dphy_tx1rx1 {
status = "okay";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
mipi_in_ucam1: endpoint@1 {
reg = <1>;
remote-endpoint = <&ucam_out1>;
data-lanes = <1 2>;
};
mipi_in_ucam3: endpoint@2 {
reg = <2>;
remote-endpoint = <&xc7160f_out>;
data-lanes = <1 2 3 4>;
};
mipi_in_ucam5: endpoint@3 {
reg = <3>;
remote-endpoint = <&xc7022_out>;
data-lanes = <1 2>;
};
};
port@1 {
reg = <1>;
#address-cells = <1>;
#size-cells = <0>;
dphy_tx1rx1_out: endpoint@0 {
reg = <0>;
remote-endpoint = <&isp1_mipi_in>;
};
};
};
};



参考资料:
http://www.friendlyelec.com.cn/agent.asp
http://www.friendlyelec.com.cn/
https://download.friendlyelec.com/NanoPC-T4
https://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4/zh#.E4.B8.8B.E8.BD.BDAndroid10.E6.BA.90.E4.BB.A3.E7.A0.81
https://item.taobao.com/item.htm?spm=a1z09.2.0.0.37562e8dcotDm6&id=570312633249&_u=7ju3ku004a
友善NanoPC-T4瑞芯微RK3399开发板ROS双摄4K播放开源AI智能安卓10
WiKi维基教程(固件介绍,使用说明,操作步骤等)
http://wiki.friendlyelec.com/wiki/index.php/NanoPC-T4
系统固件下载
https://dl.friendlyelec.com/nanopct4
原理图(pdf格式)
http://wiki.friendlyelec.com/wiki/images/e/e0/NanoPC-T4-1902-Schematic.pdf
尺寸图(dxf格式)
http://wiki.friendlyelec.com/wiki/images/b/bc/NanoPC-T4_1802_Drawing%28dxf%29.zip
http://www.friendlyelec.com.cn/nanopi-m4.asp
NanoPi M4 | NanoPi M4V2
https://wiki.friendlyelec.com/wiki/index.php/NanoPi_M4/zh
15.3 编译Android10源代码
15.3.1 下载Android10源代码
有以下两种途径获取 Android10 的源代码,都需要联网:
使用网盘里的git repo压缩包
网盘下载地址: 点击进入
https://download.friendlyelec.com/NanoPiM4
https://pan.baidu.com/share/init?surl=oBLn9H31hILJKEPQXgrUog
提取码:yn6r




相关文章:
20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850
20231228在Firefly的AIO-3399J开发板的Android11的Firefly的AIO-3399J开发板的DTS配置单前置摄像头ov13850 2023/12/28 12:30 开发板:Firefly的AIO-3399J【RK3399】 SDK:rk3399-android-11-r20211216.tar.xz【Android11】 Android11.0.tar.bz2.aa【ToyBr…...
php-fpm运行一段时间,内存不足
目录 一:原因分析 二:解决 三:观察系统情况 php-fpm运行一段时间,内存不足,是什么原因呢。 一:原因分析 1:首先php-fpm的配置 (1)启动的进程数 启动的进程数越多,占用内存越高; 2:其次…...
基于轻量级GhostNet模型开发构建生活场景下生活垃圾图像识别系统
轻量级识别模型在我们前面的博文中已经有过很多实践了,感兴趣的话可以自行移步阅读: 《移动端轻量级模型开发谁更胜一筹,efficientnet、mobilenetv2、mobilenetv3、ghostnet、mnasnet、shufflenetv2驾驶危险行为识别模型对比开发测试》 《基…...
《Linux系列》Linux磁盘MBR分区扩容
文章目录 Linux磁盘MBR分区扩容1.前言2.控制台磁盘扩容3.分区扩容3.1 fdisk3.2 lsblk3.3 扩容分区 4.扩容文件系统4.1 df4.2 扩容文件系统 Linux磁盘MBR分区扩容 1)参考阿里云扩容分区文档,整理MBR分区扩容 2)本文档适用于MBR分区(fdisk -lu查…...
IPv6地址配置
IPv6地址接口配置 IPv6地址结构 一个IPv6地址可以分为两部分: 网络前缀:n比特,相当于IPv4地址中的网络ID 接口标识:128-n比特,相当于IPv4地址中的主机ID 注意: 对于IPv6单播地址来说,如果地址的前三bit不是000,则接口标识必须为64位,如果地址的前三位是000,则没有此…...
Ubuntu20.04 防火墙配置
ubuntu 系统中配置防火墙 ufw(Uncomplicated Firewall)是一个简化的、易于使用的Linux防火墙工具,旨在方便用户管理iptables防火墙规则。 特点 简化的防火墙管理:ufw提供了一个简洁的命令行界面,让您能够轻松地添加、…...
Windows上ModbusTCP模拟Master与Slave工具的使用
场景 Modbus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用: Modebus Slave 与 Modbus Poll主从设备模拟软件与Configure Virtual Serial串口模拟软件使用_modbus poll激活-CSDN博客 数据对接协议为Modbus TCP,本地开发需要使…...
史上最细,13年老鸟总结-性能测试7大关键点,一篇打通...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、测试环境的鉴定…...
长虹智能电视ZLM60HiS机芯刷机方法及刷机固件,附进维修模式方法
适配机芯:ZLM60HiS 型号:Q1FU、D6000i、U3、D8000ID 软件强制升级方法: 1、下载后解压,找到upgrade_ZLM60HiS_MT5508_V1.00xxx_part.pkg 、chandroid_ota_ZLM60HiS_datapart.zip复制到U盘根目录(不要有任何文件夹&a…...
计算机网络【Google的TCP BBR拥塞控制算法深度解析】
Google的TCP BBR拥塞控制算法深度解析 宏观背景下的BBR 慢启动、拥塞避免、快速重传、快速恢复: 说实话,这些机制完美适应了1980年代的网络特征,低带宽,浅缓存队列,美好持续到了2000年代。 随后互联网大爆发&#x…...
lvs+keepalived+nginx实现四层负载+七层负载
目录 一、lvs配置 二、nginx配置 三、测试 3.1 keepalived负载均衡 3.2 lvskeepalived高可用 3.3 nginx高可用 主机IPlvs01-33 11.0.1.33 lvs02-3411.0.1.34nginx0111.0.1.31nginx0211.0.1.32VIP11.0.1.30 4台主机主机添加host [rootnginx01 sbin]# cat /etc/hosts 127.0.0.…...
独立看门狗与窗口看门狗
一、简介 STM32F10xxx内置两个看门狗,提供了更高的安全性、时间的精确性和使用的灵活性。两个看门狗设备(独立看门狗和窗口看门狗)可用来检测和解决由软件错误引起的故障;当计数器达到给定的超时值时,触发一个中断(仅适用于窗口型看门狗)或产…...
【CTF杂项】常见文件文件头文件尾格式总结 各类文件头
常见文件文件头文件尾格式总结及各类文件头 以下是常见文件的文件头格式总结及各类文件头的描述: 图像文件: JPEG:文件头格式为FF D8 FF,文件尾格式为FF D9。PNG:文件头格式为89 50 4E 47 0D 0A 1A 0A,文件…...
深度学习-模型转换_所需算力相关
模型转换相关 tensflow转onnx python -m tf2onnx.convert \--graphdef /root/autodl-tmp/warren/text-detection-ctpn/data/ctpn.pb \--output ./model.onnx --inputs Placeholder:0 --outputs Reshape_2:0,rpn_bbox_pred/Reshape_1:0 pytorch转onnx #!/usr/…...
Koordinator 助力云原生应用性能提升:小红书混部技术实践
作者:宋泽辉(小红书)、张佐玮(阿里云) 编者按: Koordinator 是一个开源项目,是基于阿里巴巴内部多年容器调度、混部实践经验孵化诞生,是行业首个生产可用、面向大规模场景的开源混…...
java中如何使用elasticsearch—RestClient操作文档(CRUD)
目录 一、案例分析 二、Java代码中操作文档 2.1 初始化JavaRestClient 2.2 添加数据到索引库 2.3 根据id查询数据 2.4 根据id修改数据 2.4 删除操作 三、java代码对文档进行操作的基本步骤 一、案例分析 去数据库查询酒店数据,导入到hotel索引库࿰…...
MySQL自定义函数
MySQL自定义函数 函数与存储过程类似,也是一组预先编译好的SQL语句的集合,但是存储过程可以有0个或多个返回,函数就只能有一个返回 创建函数 #语法 参数列表包含两部分 参数名和参数类型 #函数体必须有return语句 且每个sql语句后要以;结尾 所…...
技术学习|CDA level I 数据库应用(数据操作语言DML)
数据操作语言(DML)是对表中记录进行添加、更新、删除等操作的语言。 一、添加数据 在数据表中填充数据有两种方法,第一种方法是使用insert into语句向数据表中直接录入每行数据信息,但并不常用,因为分析使用的数据很…...
关键字:instanceof关键字
在 Java 中,instanceof关键字用于检查一个对象是否是某个特定类或其子类的实例。它的语法如下: 其中,Object是要检查的对象,Class是要检查的类或接口。 instanceof关键字的返回值是一个布尔值,如果对象Object是类Cla…...
【LeetCode:34. 在排序数组中查找元素的第一个和最后一个位置 | 二分】
🚀 算法题 🚀 🌲 算法刷题专栏 | 面试必备算法 | 面试高频算法 🍀 🌲 越难的东西,越要努力坚持,因为它具有很高的价值,算法就是这样✨ 🌲 作者简介:硕风和炜,…...
uniapp 对接腾讯云IM群组成员管理(增删改查)
UniApp 实战:腾讯云IM群组成员管理(增删改查) 一、前言 在社交类App开发中,群组成员管理是核心功能之一。本文将基于UniApp框架,结合腾讯云IM SDK,详细讲解如何实现群组成员的增删改查全流程。 权限校验…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
ffmpeg(四):滤镜命令
FFmpeg 的滤镜命令是用于音视频处理中的强大工具,可以完成剪裁、缩放、加水印、调色、合成、旋转、模糊、叠加字幕等复杂的操作。其核心语法格式一般如下: ffmpeg -i input.mp4 -vf "滤镜参数" output.mp4或者带音频滤镜: ffmpeg…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
SpringTask-03.入门案例
一.入门案例 启动类: package com.sky;import lombok.extern.slf4j.Slf4j; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cache.annotation.EnableCach…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
佰力博科技与您探讨热释电测量的几种方法
热释电的测量主要涉及热释电系数的测定,这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中,积分电荷法最为常用,其原理是通过测量在电容器上积累的热释电电荷,从而确定热释电系数…...
音视频——I2S 协议详解
I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议,专门用于在数字音频设备之间传输数字音频数据。它由飞利浦(Philips)公司开发,以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...
python基础语法Ⅰ
python基础语法Ⅰ 常量和表达式变量是什么变量的语法1.定义变量使用变量 变量的类型1.整数2.浮点数(小数)3.字符串4.布尔5.其他 动态类型特征注释注释是什么注释的语法1.行注释2.文档字符串 注释的规范 常量和表达式 我们可以把python当作一个计算器,来进行一些算术…...
window 显示驱动开发-如何查询视频处理功能(三)
D3DDDICAPS_GETPROCAMPRANGE请求类型 UMD 返回指向 DXVADDI_VALUERANGE 结构的指针,该结构包含特定视频流上特定 ProcAmp 控件属性允许的值范围。 Direct3D 运行时在D3DDDIARG_GETCAPS的 pInfo 成员指向的变量中为特定视频流的 ProcAmp 控件属性指定DXVADDI_QUER…...
