标准linux4.4--驱动开发(一)ADC驱动编写

本文详细介绍了在Firefly-RK3308开发板上配置和使用SAR-ADC(Successive Approximation Register ADC)的方法。通过DTS(Device Tree Source)配置,展示了如何在设备树中添加ADC资源描述,并提供了ADC模拟按键驱动和演示程序的设备树示例。此外,还讲解了在驱动文件中关联DTS配置的具体步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

标准linux4.4--驱动开发(一)ADC驱动编写

简介

Firefly-RK3308开发板上的 AD 接口有两种

TS-ADC(Temperature Sensor):支持两通道,时钟频率必须低于800KHZ

SAR-ADC(Successive Approximation Register):支持六通道单端10位的SAR-ADC,时钟频率必须小于13MHZ。(常用)

内核采用工业 I/O 子系统来控制 ADC,该子系统主要为 AD 转换或者 DA 转换的传感器设计。 下面以 SAR-ADC 为例子,介绍 ADC 的基本配置方法。

DTS配置

SAR-ADC 的 DTS 节点在 kernel/arch/arm64/boot/dts/rockchip/rk3308.dtsi 文件中定义,如下所示:

	saradc: saradc@ff1e0000 {
		compatible = "rockchip,rk3308-saradc", "rockchip,rk3399-saradc";
		reg = <0x0 0xff1e0000 0x0 0x100>;
		interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
		#io-channel-cells = <1>;
		clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
		clock-names = "saradc", "apb_pclk";
		resets = <&cru SRST_SARADC_P>;
		reset-names = "saradc-apb";
		status = "disabled";
	};

想要使用CPU上的ADC资源,必须要添加DTS配置及设备树,所以用户首先需在 DTS 文件中添加 ADC 的资源描述:
这里我举2个例子
(1)adc模拟的按键驱动(RK适配的)
(2)萤火虫firefly适配的adc使用demo
接下来看下他们分别的设备树如何描述
(1)adc模拟的按键(简单逻辑根据adc检测的电压的不同,转换成数字信号范围去检测按了哪个按键)

adc-keys {
		compatible = "adc-keys";
		io-channels = <&saradc 1>;//这里申请的是 SARADC 通道1。
		io-channel-names = "buttons";
		poll-interval = <100>;
		keyup-threshold-microvolt = <1800000>;

		esc-key {
			linux,code = <KEY_MICMUTE>;
			label = "micmute";
			press-threshold-microvolt = <1130000>;
		};

		home-key {
			linux,code = <KEY_MODE>;
			label = "mode";
			press-threshold-microvolt = <901000>;
		};

		menu-key {
			linux,code = <KEY_PLAY>;
			label = "play";
			press-threshold-microvolt = <624000>;
		};

		vol-down-key {
			linux,code = <KEY_VOLUMEDOWN>;
			label = "volume down";
			press-threshold-microvolt = <300000>;
		};

		vol-up-key {
			linux,code = <KEY_VOLUMEUP>;
			label = "volume up";
			press-threshold-microvolt = <18000>;
		};
	};

(2)adc-demo

adc_demo: adc_demo{
       status = "disabled";
       compatible = "firefly,rk3399-adc";
       io-channels = <&saradc 3>;//这里申请的是 SARADC 通道3。
   };

(1)adc按键驱动下载链接
(2)点击adc使用demo驱动下载

在驱动文件中关联DTS的配置

用户

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

漂泊在海上的星星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值