BeagleBone Black ADC冻结

时间:2015-11-23 02:43:22

标签: beagleboneblack adc

我正在使用BeagleBone Black SBC闪存的2015年7月debian图像,并尝试利用板载ADC来测量电压值。我知道sysfs adc内核驱动程序存在问题导致包含每个ADC值的虚拟文件被锁定导致“资源暂时不可用”#34;错误。为了避免这种情况,我试图利用libpruio和PRU来读取ADC值。但是会出现类似的问题。 ADC值冻结,不会更新。关闭程序并重新运行它会导致程序冻结(排序)。重启的唯一解决方案。

所以问题是双重的: 1)有没有经验使用PRU&libpruio和BeagleBone Black的人都遇到过这个问题,如果有的话,你的解决方案是什么?

2)有没有人知道如何在BeagleBone黑色(包括不同的PRU库)上实际使用板载ADC?据我所知,它几乎没有功能。我所看到的所有使用它的方法都充满了完全破坏错误。似乎BeagleBone完全具备有用的ADC能力。

访问带有libpruio的ADC的基本代码:

    system("echo PRUSSDRV > /sys/devices/bone_capemgr.9/slots");
    PruIo *io = pruio_new(0, 0x98, 0, 1);
    if (io->Errr)
    {
            printf("Initialisation failed (%s)\n", io->Errr);
    }

    if(pruio_config(io, 0, 0x1FE, 0, 4, 0))
    {
            printf("Config failed (%s)\n", io->Errr);
    }

    adc_raw = io->Value[6];

可根据要求提供更多代码。此外,当使用VDD_ADC,GND_ADC和AIN#从外部器件读取而不是使用分压器调整电路时,问题更为普遍。

外部源不超过1.8v(引脚中的ADC容限高达1.8v)。

提前感谢您的想法。

编辑:经过进一步的实验,我认为部分问题是在读取ADC值的同时尝试输出PWM信号。只有在输出PWM信号时,程序似乎才会失败。

有没有人遇到过这个问题?解决方案?再次感谢。

更新:我正在尝试使用PWM驱动电机系统和ADC读取输出电压。只有在电机本身运行时,无论输出是否连接到电路板,问题似乎都会发生。不仅仅是输出PWM信号。

如果切断电机电源并且电路板仍然输出PWM,则工作正常。

如果我给电机供电并且没有将输出电机连接到ADC,而是使用VDD_ADC将ADC引脚连接到单独的微调电位器,则ADC会冻结。

如果我给电机供电并且ADC连接到输出电机,ADC也会冻结。

所以看起来电机真正运行的问题......任何人有什么想法?

0 个答案:

没有答案