欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

imx6ull ADC

程序员文章站 2022-03-05 13:23:48
目录一、硬件资源二、设备树2.1 设置通道数2.2 关闭电阻触摸2.3 设置pinctrl2.4 重新编译设备树2.5 更新设备树三、ADC使用四、C语言操作一、硬件资源  imx6ull开发板默认将电阻屏幕的4个引脚没有使用,这4个引脚可以作为ADC使用,其对应关系如下:功能名GPIOADCGPIO1_00in_voltage0_rawTS_YNGPIO1_01in_voltage1_rawTS_YPGPIO1_02in_voltage2_rawT...

一、硬件资源

  imx6ull开发板默认将电阻屏幕的4个引脚没有使用,这4个引脚可以作为ADC使用,其对应关系如下:

功能名 GPIO ADC
GPIO1_00 in_voltage0_raw
TS_YN GPIO1_01 in_voltage1_raw
TS_YP GPIO1_02 in_voltage2_raw
TS_XN GPIO1_03 in_voltage3_raw
TS_XP GPIO1_04 in_voltage4_raw

二、设备树

  在使用ADC前,需要在设备树中进行设置,设置如下:

2.1 设置通道数

  如需要使用4个ADC引脚,则需要设置通道数为5(GPIO1_IO00占用一个)。

&adc1 {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_adc1>;
	num-channels = <5>;
	status = "okay";
};

2.2 关闭电阻触摸

  因ADC和电阻触摸屏使用了同样的引脚,所以使用ADC时,需关闭电阻触摸功能。

&tsc {
	pinctrl-names = "default";
	pinctrl-0 = <&pinctrl_tsc>;
	xnur-gpio = <&gpio1 3 GPIO_ACTIVE_LOW>;
	measure_delay_time = <0xffff>;
	pre_charge_time = <0xfff>;
	status = "disabled";
};

  注,如需同时使用ADC和电阻触摸,可选择其他引脚使用。

2.3 设置pinctrl

	pinctrl_adc1: adc1grp {
		fsl,pins = <
			MX6UL_PAD_GPIO1_IO01__GPIO1_IO01	0xb0
			MX6UL_PAD_GPIO1_IO02__GPIO1_IO02	0xb0
			MX6UL_PAD_GPIO1_IO03__GPIO1_IO03	0xb0
			MX6UL_PAD_GPIO1_IO04__GPIO1_IO04	0xb0
		>;
	};

2.4 重新编译设备树

build-dtb.sh

2.5 更新设备树

  笔者喜欢用tftp更新,命令如下

# 在开发板执行
cd /run/media/mmcblk1p1
rm imx6ull-xly-emmc-lcd.dtb
tftp -g -r imx6ull-xly-emmc-lcd.dtb 192.168.1.180
sync

  后面IP地址为tftp服务器IP,读者需要替换为自己的IP地址。
  更新完设备树后,直接重启即可。

三、ADC使用

  对ADC的读取可以直接通过/sys/bus/iio/devices/iio:device0下面的文件读取得到。

cd /sys/bus/iio/devices/iio:device0
cat in_voltage1_raw

imx6ull ADC
  目录中,in_voltage1_raw,in_voltage2_raw2,in_voltage3_raw,in_voltage4_raw中的内容就是ADC的值。由于IMX6ULL ADC为12位,所以其最小值为0,对应0V,最大值为4095(2^12),对应3.3V。

四、C语言操作

  如需使用C语言操作ADC,可直接使用C文件操作,打开/sys/bus/iio/devices/iio:device0/in_voltagex_raw,读取里面的内容即可。

本文地址:https://blog.csdn.net/xinluyao/article/details/109003441

相关标签: linux应用编程