|
Firely-RK3288 ADC驱动
发表于 2016-3-2 11:51:07
浏览:116810
|
回复:74
打印
只看该作者
[复制链接]
楼主
本帖最后由 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。写了个简单的接口。
下面是测试的效果:
|
|