This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] Linux/ADS8688:无法通过libiio通过ti_ads8688.ko驱动程序读取数据

Guru**** 2546140 points
Other Parts Discussed in Thread: ADS8688

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/598981/linux-ads8688-unable-to-read-data-through-the-ti_ads8688-ko-driver-via-libiio

部件号:ADS8688

工具/软件:Linux

我似乎在错误的论坛上发布了这个问题,并在这里重新定向。

我得到 了通过 SPI协议连接的ads8688。

它显示在/sys/labs/io/devices/io:device0中

我可以运行IIO_INFO,它会显示设备条目

prompt$>IIO_INFO

库版本:使用
本地后端创建的0.7 (git tag:0.7 v) IIO上下文。
后端版本:0.7 (git tag v.v)
后端描述字符串:linux arm 4.9 .10-bone4 #1 2月16 19:35:11 UTC 2017 armv 7 l 0.7
context有1台设备:
	IIO:device0:ads8688
		8个通道找到:
			voltage6:(输入)
			5个通道特定属性找到:
				at0:原始值:at887
				
				:attr: 0.3.1250432亿 值:attr: attr: -3.2768万
				attr 3:offset_available value:-3.2768万 0
				attr 4:scale可用值:0.3.1250432亿 0.1.56254208亿 0.312504320
			voltage4:(输入)
			5通道特定属性:
				at0:offset value:-tr 68
				attr 1:原始值:39887
				attr 2:scale value:0.312504320 0.0.78127104亿
				attr 3:offset_available value:-32768 0
				attr 4:0.0.78127104亿 0.1.56254208亿
			voltr 0:scale voltage (输入)
			找到5个通道特定属性:
				属性0:比例值:0.312504320 0.0.78127104亿
				属性1:原始值:48303
				属性2:偏移值:-32768
				属性3:offset_available值:-32768 0
				属性4:scale可用值:0.312504320 0.1.56254208亿
			voltage3:(输入)
			找到5个通道特定属性:
				属性0:比例值:0.3.1250432亿
				属性1:原始值: 32726
				属性2:偏移值:-3.2768万
				属性3:offset_available值:-3.2768万 0
				属性4:scale可用值:0.3.1250432亿 0.1.56254208亿 0.0.78127104亿
			voltage7:(输入)
[...]

这很好,我可以从通道0读取电压,正如您可能在上面列表中该通道的原始值中看到的那样。

但是,我找不到我期望找到的一些文件夹,用于启用/禁用信道的文件夹,缓冲区等

不管怎样,我尝试使用IIO工具从设备读取,但我得到了...

bs@arm:~$ IIO_readdev IIO:device0 
无法分配缓冲区:参数无效

调用IIO_DEVICE_CREATE_BUFFER时,我用自己的代码得到相同的结果:它失败,原因是--EINVAL (参数无效)。

在进一步检查libiio代码后,我对IIO_DEVICE_GET_SAMPLE_SIZE的返回值感到怀疑。

调用IIO_DEVICE_GET_SAMPLE_SIZE ( dev )将返回0,并将errno设置为:13 (权限被拒绝)(如果您不是root)或 2 (没有这样的文件或目录)(如果您作为root运行)。

要创建缓冲区,IIO_DEVICE_GET_SAMPLE_SIZE必须大于零。

另外,我发现调用IIO_CHANGE_ENABLE()不会启用该通道,因为以后调用IIO_CHANGE_IS_ENABLED将返回FALSE。 所以很有可能
检索IIO_DEVICE_GET_SAMPLE_SIZE的值时,发现所有通道似乎都已禁用,因此返回零。

考虑到IIO_CHANGE_ENABLE的实施,我确信这是由于驱动程序中缺少一些功能,缺少扫描元素文件夹/功能
或者类似的东西。

我认为这是ti_ads8688.c驱动程序的缺陷或问题。 是否有更新过的ti_ads8688.c驱动程序,我可以尝试更新它的任何计划?
是否有人知道如何通过IIO_device以编程方式读取?

提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好Ignacio:

    如果此驱动程序需要添加修补程序和/或代码增强功能,请将修补程序发送到相关的Linux内核社区,如以下维护程序文件中列出的那样

    当前没有待定更新

    Cynthia的渐变

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我知道这个清单,但是找不到ti-ads8688.c驱动程序的管理人员。
    但这里还有另一个问题:

    如何使用IIO API而不是libiio库从设备读取数据。
    (我自己正在努力改进驾驶员,但我在这方面没有太多经验
    这将需要很多时间),因此我正在寻找替代方案。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Ignacio
    Linux支持部门应该能够更好地支持您的问题。 我建议您在Linux支持论坛上提出问题
    此致,Cynthia