作者
QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118
参考
用户态接口
每次需调用fflush接口,如果不close文件的话,否则数值无法刷新。
sprintf(file, "%s/%s/name", SYS_PATH_IIO, namelist[i]->d_name);
//printf("i %d, file %s\n", i, file);
fp = fopen(file, "r");
if (!fp)
{
//printf("open file %s failed\n", file);
continue;
}
memset(name, 0, 64);
s = fgets(name, 64, fp);
if (!s)
{
printf("fgets file %s failed\n", file);
return -1;
}
fclose(fp);
设备树
设备树中描述xadc的通道,对应在sysfs的iio中会形成对应文件,用于读取电压,需要注意的是reg = <0>表示的是VP/VN,而AD0~AD15
是1~16
。
&adc {
xlnx,channels {
#address-cells = <1>;
#size-cells = <0>;
channel1V8@0 {
reg = <0>;
};
channel1V5@1 {
reg = <1>;
};
channel3V3@2 {
reg = <2>;
};
channel1V@9 {
reg = <9>;
};
channel5V@10 {
reg = <10>;
};
};
};
多个xadc
z7+k7架构,系统中存在两个xadc,修改源码,在设备树中添加aliasesid,修改官方驱动代码(petalinux2015.2),添加对多个xadc的支持,
aliasesid = of_alias_get_id(pdev->dev.of_node, "xadc");
if (aliasesid >= 0) {
indio_dev->id = aliasesid;
}