Firely-RK3288 ADC驱动

本帖最后由 madman 于 2016-3-2 11:53 编辑

继续来整理下adc模块的驱动,在rk封装好的接口上使用adc接口还是很方便的,具体的类似adc标准电压之类的东西可以在rk3288.dts上配置,

 adc: adc@ff100000 {
        compatible = "rockchip,saradc";
        reg = <0xff100000 0x100>;
        interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
        #io-channel-cells = <1>;
        io-channel-ranges;
        rockchip,adc-vref = <1800>;
        clock-frequency = <1000000>;
        clocks = <&clk_saradc>, <&clk_gates7 1>;
        clock-names = "saradc", "pclk_saradc";
        status = "disabled";
};

读出来的adc可以根据这公式转换:Vref / (2^n-1) = Vresult / raw
其中 Vref 为标准电压 n 为 AD 转换的位数 Vresult 为用户所需要的采集电压 raw 为 AD 采集的原始数据

在dts添加对应配置

&adc {
        status = "okay";

        rockchip_headset {
                compatible = "rockchip_headset";
                headset_gpio = <&gpio0 GPIO_C2 GPIO_ACTIVE_LOW>;
                pinctrl-names = "default";
                pinctrl-0 = <&gpio0_c2>;
                io-channels = <&adc 2>;
       };

        adc0{
                compatible = "test-adc0";
                io-channels=<&adc 0>;
        };

这里我的标准电压是1.8v,所以测量的范围就是0-1.8v。写了个简单的接口。
下面是测试的效果:
adc_test.c.zip (978 Bytes)

很好,多分享进步快

:slight_smile: 很好,学习

谢谢,学习了!

拿来测试用,不错。

谢谢。学习啦{:3_42:}

很好,多分享进步快

学习

学习啦…给力…

thx !!!

标准电压是什么决定的?

mlt911213 发表于 2016-12-19 11:27
标准电压是什么决定的?

rockchip,adc-vref = <1800>;

madman 发表于 2016-12-19 14:27
rockchip,adc-vref = ;

OK

哪来试试 {:5_247:}

学习了

楼主在firefly-rk3288.dts里面增加的节点 adc0在代码中找没有 这是可以随便取的吗 学习下

loading 发表于 2017-3-17 20:16
哪来试试

层主试了 可以吗 我编译时会报错

sds 发表于 2017-7-5 13:59
层主试了 可以吗 我编译时会报错

试了可以呢,报错你就根据错误提示修改嘛

代码中.name=“test_adc”,的test_adc是从哪里来的

loading 发表于 2017-7-5 17:25
试了可以呢,报错你就根据错误提示修改嘛

dts设置中 adc0是可以随便取的吗 请教下