[sprd]-iio接口读取adc值

FAQ106065

通过原理图我们可以获取任意一个adc对应的通道号,sc2721的adc驱动将每个物理通道分解为两个逻辑通道,一个是大量程一个是小量程。

例如我们需要使用adc通4的大量程那么我们就要选择adc逻辑通道9

我们需要在dts中配置通道数

io-channels = <&pmic_adc 9>;     //通道逻辑编号
io-channel-names = "adc_temp";    //通道名称,以便于驱动获取

以上配置之后我们便可以通道adc电压读取接口读取到adc_temp电压了。

Demo:
dts配置

io-channels = <&pmic_adc 9>;     //通道逻辑编号
io-channel-names = "adc_temp";    //通道名称,以便于驱动获取

内核获取:

1.从dts中获取该adc通道
	pdata->channel_adc = iio_channel_get(dev, "adc_templ");
	if (IS_ERR(pdata->channel_adc)) {
		dev_err(dev, "get iio channel adc fail\n");
		goto fail;
	}

读取电压值:
	err = iio_read_channel_processed(pdata->channel_temp, &val);

展讯的各个adc通道

static const struct iio_chan_spec sprd_sc2721_iio_channels[] = {
	SPRD_ADC_CHANNEL(0, 0, IIO_VOLTAGE, "ADCI0"),
	SPRD_ADC_CHANNEL(1, 0, IIO_VOLTAGE, "ADCI0"),
	SPRD_ADC_CHANNEL(2, 1, IIO_VOLTAGE, "ADCI1"),
	SPRD_ADC_CHANNEL(3, 1, IIO_VOLTAGE, "ADCI1"),
	SPRD_ADC_CHANNEL(4, 2, IIO_VOLTAGE, "ADCI2"),
	SPRD_ADC_CHANNEL(5, 2, IIO_VOLTAGE, "ADCI2"),
	SPRD_ADC_CHANNEL(6, 3, IIO_VOLTAGE, "ADCI3"),
	SPRD_ADC_CHANNEL(7, 3, IIO_VOLTAGE, "ADCI3"),
	SPRD_ADC_CHANNEL(8, 4, IIO_VOLTAGE, "ADCI4"),
	SPRD_ADC_CHANNEL(9, 4, IIO_VOLTAGE, "ADCI4"),
	SPRD_ADC_CHANNEL(10, 5, IIO_VOLTAGE, "VBATSENSE"),
	SPRD_ADC_CHANNEL(11, 5, IIO_VOLTAGE, "VBATSENSE"),
	SPRD_ADC_CHANNEL(12, 6, IIO_VOLTAGE, "FLOATING_6"),
	SPRD_ADC_CHANNEL(13, 6, IIO_VOLTAGE, "FLOATING_6"),
	SPRD_ADC_CHANNEL(14, 7, IIO_VOLTAGE, "TYPEC_CC1"),
	SPRD_ADC_CHANNEL(15, 7, IIO_VOLTAGE, "TYPEC_CC1"),
	SPRD_ADC_CHANNEL(16, 8, IIO_VOLTAGE, "THM"),
	SPRD_ADC_CHANNEL(17, 8, IIO_VOLTAGE, "THM"),
	SPRD_ADC_CHANNEL(18, 9, IIO_VOLTAGE, "TYPEC_CC2"),
	SPRD_ADC_CHANNEL(19, 9, IIO_VOLTAGE, "TYPEC_CC2"),
	SPRD_ADC_CHANNEL(20, 10, IIO_VOLTAGE, "FLOATING_10"),
	SPRD_ADC_CHANNEL(21, 10, IIO_VOLTAGE, "FLOATING_10"),
	SPRD_ADC_CHANNEL(22, 11, IIO_VOLTAGE, "FLOATING_11"),
	SPRD_ADC_CHANNEL(23, 11, IIO_VOLTAGE, "FLOATING_11"),
	SPRD_ADC_CHANNEL(24, 12, IIO_VOLTAGE, "FLOATING_12"),
	SPRD_ADC_CHANNEL(25, 12, IIO_VOLTAGE, "FLOATING_12"),
	SPRD_ADC_CHANNEL(26, 13, IIO_VOLTAGE, "DCDCOUT_CPU"),
	SPRD_ADC_CHANNEL(27, 13, IIO_VOLTAGE, "DCDCOUT_CPU"),
	SPRD_ADC_CHANNEL(28, 13, IIO_VOLTAGE, "DCDCOUT_MEM"),
	SPRD_ADC_CHANNEL(29, 13, IIO_VOLTAGE, "DCDCOUT_MEM"),
	SPRD_ADC_CHANNEL(30, 13, IIO_VOLTAGE, "DCDCOUT_GEN"),
	SPRD_ADC_CHANNEL(31, 13, IIO_VOLTAGE, "DCDCOUT_GEN"),
	SPRD_ADC_CHANNEL(32, 13, IIO_VOLTAGE, "DCDCOUT_CORE"),
	SPRD_ADC_CHANNEL(33, 13, IIO_VOLTAGE, "DCDCOUT_CORE"),
	SPRD_ADC_CHANNEL(34, 13, IIO_VOLTAGE, "DCDCOUT_WPA"),
	SPRD_ADC_CHANNEL(35, 13, IIO_VOLTAGE, "DCDCOUT_WPA"),
	SPRD_ADC_CHANNEL(36, 14, IIO_VOLTAGE, "VCHGSEN"),
	SPRD_ADC_CHANNEL(37, 14, IIO_VOLTAGE, "VCHGSEN"),
	SPRD_ADC_CHANNEL(38, 15, IIO_VOLTAGE, "VCHG_BG"),
	SPRD_ADC_CHANNEL(39, 15, IIO_VOLTAGE, "VCHG_BG"),
	SPRD_ADC_CHANNEL(40, 16, IIO_VOLTAGE, "PROG2ADC"),
	SPRD_ADC_CHANNEL(41, 16, IIO_VOLTAGE, "PROG2ADC"),
	SPRD_ADC_CHANNEL(42, 17, IIO_VOLTAGE, "FLOATTING_17"),
	SPRD_ADC_CHANNEL(43, 17, IIO_VOLTAGE, "FLOATTING_17"),
	SPRD_ADC_CHANNEL(44, 18, IIO_VOLTAGE, "FLOATTING_18"),
	SPRD_ADC_CHANNEL(45, 18, IIO_VOLTAGE, "FLOATTING_18"),
	SPRD_ADC_CHANNEL(46, 19, IIO_VOLTAGE, "SDAVDD"),
	SPRD_ADC_CHANNEL(47, 19, IIO_VOLTAGE, "SDAVDD"),
	SPRD_ADC_CHANNEL(48, 20, IIO_VOLTAGE, "HEADMIC_IN_DET"),
	SPRD_ADC_CHANNEL(49, 20, IIO_VOLTAGE, "HEADMIC_IN_DET"),
	SPRD_ADC_CHANNEL(50, 20, IIO_CURRENT, "HEADMIC_HEADSET_L_INT"),
	SPRD_ADC_CHANNEL(51, 20, IIO_VOLTAGE, "HEADMIC_HEADSET_L_INT"),
	SPRD_ADC_CHANNEL(52, 20, IIO_VOLTAGE, "HEADMIC_VDDVB"),
	SPRD_ADC_CHANNEL(53, 20, IIO_VOLTAGE, "HEADMIC_VDDVB"),
	SPRD_ADC_CHANNEL(54, 20, IIO_VOLTAGE, "HEADMIC_VDDPA"),
	SPRD_ADC_CHANNEL(55, 20, IIO_VOLTAGE, "HEADMIC_VDDPA"),
	SPRD_ADC_CHANNEL(56, 20, IIO_VOLTAGE, "HEADMIC_MICBIAS"),
	SPRD_ADC_CHANNEL(57, 20, IIO_VOLTAGE, "HEADMIC_MICBIAS"),
	SPRD_ADC_CHANNEL(58, 20, IIO_VOLTAGE, "HEADMIC_HEADMICBIAS"),
	SPRD_ADC_CHANNEL(59, 20, IIO_VOLTAGE, "HEADMIC_HEADMICBIAS"),
	SPRD_ADC_CHANNEL(60, 21, IIO_VOLTAGE, "LDO_CALOUT0"),
	SPRD_ADC_CHANNEL(61, 21, IIO_VOLTAGE, "LDO_CALOUT0"),
	SPRD_ADC_CHANNEL(62, 22, IIO_VOLTAGE, "LDO_CALOUT1"),
	SPRD_ADC_CHANNEL(63, 22, IIO_VOLTAGE, "LDO_CALOUT1"),
	SPRD_ADC_CHANNEL(64, 23, IIO_VOLTAGE, "LDO_CALOUT2"),
	SPRD_ADC_CHANNEL(65, 23, IIO_VOLTAGE, "LDO_CALOUT2"),
	SPRD_ADC_CHANNEL(66, 24, IIO_VOLTAGE, "FLOATTING_24"),
	SPRD_ADC_CHANNEL(67, 24, IIO_VOLTAGE, "FLOATTING_24"),
	SPRD_ADC_CHANNEL(68, 25, IIO_VOLTAGE, "FLOATTING_25"),
	SPRD_ADC_CHANNEL(69, 25, IIO_VOLTAGE, "FLOATTING_25"),
	SPRD_ADC_CHANNEL(70, 26, IIO_VOLTAGE, "FLOATTING_26"),
	SPRD_ADC_CHANNEL(71, 26, IIO_VOLTAGE, "FLOATTING_26"),
	SPRD_ADC_CHANNEL(72, 27, IIO_VOLTAGE, "FLOATTING_27"),
	SPRD_ADC_CHANNEL(73, 27, IIO_VOLTAGE, "FLOATTING_27"),
	SPRD_ADC_CHANNEL(74, 28, IIO_CURRENT, "FLOATTING_28"),
	SPRD_ADC_CHANNEL(75, 28, IIO_VOLTAGE, "FLOATTING_28"),
	SPRD_ADC_CHANNEL(76, 29, IIO_VOLTAGE, "FLOATTING_29"),
	SPRD_ADC_CHANNEL(77, 29, IIO_VOLTAGE, "FLOATTING_29"),
	SPRD_ADC_CHANNEL(78, 30, IIO_VOLTAGE, "DP"),
	SPRD_ADC_CHANNEL(79, 30, IIO_VOLTAGE, "DP"),
	SPRD_ADC_CHANNEL(80, 31, IIO_VOLTAGE, "DM"),
	SPRD_ADC_CHANNEL(81, 31, IIO_VOLTAGE, "DM"),
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sprd指的是Spreadtrum Communications Inc.,是一家位于中国的半导体公司。该公司专注于移动通信和物联网领域,为全球提供芯片解决方案和相关产品。sprd的产品覆盖了从2G到5G的全系列移动通信领域,还包括IoT、车载以及AI等领域,为手机、平板、智能穿戴等各类智能终端设备提供芯片解决方案和系统集成服务。 pcie-startup-syscons 是一个Linux内核模块,主要用于启动PCI Express子系统并初始化PCIe端点。PCIe(startup-syscons)是PCI Express架构的一部分,用于通过PCI Express总线连接设备,支持高速数据传输和低延迟操作。PCIe架构已经成为电脑和服务器上的主流总线架构,因为它的带宽高、响应快,具有良好的可扩展性和兼容性。 在操作系统中,pcie-startup-syscons 模块是自启动的,它会在内核启动时自动加载并初始化硬件设备。该模块的主要作用是启动PCI Express子系统,包括 PCIe端点和 PCIe总线,为用户提供一个稳定的硬件平台。同时,pcie-startup-syscons 还提供了一套API接口,用于管理PCI Express子系统和PCIe总线上接入的设备。 综上所述,sprd是一家专注于移动通信和物联网领域的半导体公司,提供芯片解决方案和相关产品;而pcie-startup-syscons是一个用于启动PCI Express子系统和初始化PCIe端点的Linux内核模块,具有高速数据传输和低延迟操作的优点,在处理器、电脑和服务器中普遍使用。在数字化时代,半导体技术和PCI Express总线架构的重要性越来越凸显,这两个领域的发展也将会给智能终端设备和数字化应用带来更多的机遇和挑战。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值