当前位置: 移动技术网 > IT编程>开发语言>C/C++ > imx6ull ADC

imx6ull ADC

2020年10月10日  | 移动技术网IT编程  | 我要评论
目录一、硬件资源二、设备树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使用,其对应关系如下:

功能名GPIOADC
GPIO1_00in_voltage0_raw
TS_YNGPIO1_01in_voltage1_raw
TS_YPGPIO1_02in_voltage2_raw
TS_XNGPIO1_03in_voltage3_raw
TS_XPGPIO1_04in_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

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

如您对本文有疑问或者有任何想说的,请点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网