工具/软件: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以编程方式读取?
提前感谢。