工具/软件: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