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:ADS8688-how to read the ads8688

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

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

https://e2e.ti.com/support/data-converters-group/data-converters/f/data-converters-forum/755433/linux-ads8688-ads8688-how-to-read-the-ads8688

器件型号:ADS8688

工具/软件:Linux

您好!

如何使用 libiio 读取 ADS8688的数据 。(在 debian 和内核版本中:4.4.54-ti-R93)

我正在尝试使用 libiio 从 ADS8688读取数据、但当我使用  Iio_device_create_buffer 创建缓冲 区时、始终得到空值。

它显示 errno 22:  参数无效

我使用的是 v0.16的 libiio 版本

我不熟悉 Linuk 器件驱动程序和 libiio。 我在这里附加了 IIO_INFO 的输出和代码  

IIO_INFO 输出

库版本:0.16 (git 标签:v0.16)
使用后端编译:本地 xml IP USB
使用本地后端创建 IIO 上下文。
后端版本:0.16 (git 标签:v0.16)
后端描述字符串:Linux BeagleBone 4.4.5.54-ti-R93 #1 SMP 3月17日星期五13:08:22 UTC 2017 armv7l
IIO 上下文具有1个属性:
本地、内核:4.4.5.54-ti-R93
IIO 上下文有1个器件:
IIO:device0:ads8688
找到8个通道:
voltage0:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:32639
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104
电压1:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:65535
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104
电压2:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:65535
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104
电压3:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:65535
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104
电压4:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:65535
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104
电压5:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:65535
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104
电压6:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:65535
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104
电压7:(输入)
找到5个通道特定属性:
属性0:偏移值:-32768
属性1:offset_available 值:-32768 0
属性2:原始值:65535
属性3:比例值:0.312504320
属性4:scale_available 值:0.312504320 0.156254208 0.078127104

我的代码是

int main()

bool 循环= 0;
unsigned int *data;
struct IIO_buffer * buf;
unsigned int chan = 0;
struct IIO_channel *通道;
unsigned int samples_count = 100;
CTX = IIO_CREASE_DEFAULT_CONTEXT ();
dev = ICO_context_find_device (ctx、"ads8688");

CHAN = IIIO_DEVICE_GET_CHANNES_COUNT (dev);
printf ("通道数=%d\n"chan);


struct IIO_device *trigger = IIO_context_get_device (ctx、0);
if (触发= NULL)
printf ("tri cr errno %d:%s\n"、errno、strerror (errno));

int err = ICO_DEVICE_SET_TRIGGER (dev、TRIGGER);
if (err < 0)

printf("tri errno %d:%s\n",errno,strerror(errno));

CH = IIIO_DEVICE_GET_CHANNEL (dev、0);
if (ch == NULL)

printf ("ch errno %d:%s\n"、errno、strerror (errno));

IIO_CHANNEL 启用(ch);
if (ch == NULL)

printf ("ch errno %d:%s\n"、errno、strerror (errno));

buf = IIO_DEVICE_CREASE_BUFFER (dev、1024、false);
if (buf == NULL){
printf ("buf errno %d:%s\n"、errno、strerror (errno));

// IIO_buffer_floin (buf);

// for (data = IIO_buffer_first (buf、ch);data < IIO_buffer_end (buf);data += IIO_buffer_step (buf))
// printf ("%d\n"、*数据);

// IIO_buffer_destroy (buf);
IIO_CHANNEL DISABLE (ch);
//接收(ctx);
IIO_Context_Destroy (ctx);
返回0;

请尽快向我建议解决方案。请尽快等待您的回复

谢谢、此致

KUMUDA

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


    支持此器件的工程师一周内都不在办公室。 但是、我不确定他们的专业技术是否扩展到了该 Linux 驱动程序。 让我检查一下谁可能会提供帮助、我会再给您回复。


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


    此时、我不认为我们可以支持这个问题。 我们在小组中没有 Linux 专业知识。 尽管我们有一个链接、但我认为它仍然来自 TI 外部。

    我们的一般回答是、链接中的 Linux 驱动程序为您提供了一个基础、您可以根据自己的差异进行扩展和修改。 如果有人已经为您正在使用的相同实施扩展了驱动程序、请咨询 Linux 社区的其他成员。


    吴约瑟