我使用pigpiod_if2.h读取Raspberry 4B上运行Buildroot发行版的屏蔽版本,因为我需要多个C程序同时与GPIO交互-初始化使用pigpio_start,但在启动时返回错误代码-2003。
initGPIO = pigpio_start(NULL, NULL); // Initialise pigpio
if (initGPIO >= 0) {
printf("Initialised GPIO for HWConfig [pigpio]\n");
}
else {
printf("Failed to initialise GPIO for HWConfig [pigpio]\n");
printf("PIGPIO error code: %d\n", initGPIO);
}根据文档(据我所知) -2000在某种程度上引用了pigpiod头,尽管没有详细信息:
#define PI_PIGIF_ERR_0 -2000-3指的是不正确的GPIO引脚号:
#define PI_BAD_GPIO -3 // GPIO not 0-53但是,我认为这个错误可能是一个红鱼,因为当进程被重新启动时(没有重新启动机器),它工作得很好,成功的实例化消息和正确的硬件读取版本。
我将非常感谢故障排除帮助,试图找出这个问题的根本原因。到目前为止,我已经包含了一个脚本,它可以在这个程序之前检查pigpio是否正在运行(它是),并且在这个程序之前删除了对pigpio的所有引用,除了pigpio守护进程检查。
谢谢你,H
发布于 2022-06-06 15:55:06
事实证明,此问题与PIGPIO初始化在引导序列中的位置有关。我在Buildrootinit.d/etc引导目录中使用脚本号S30-S39初始化所需的外围设备。将脚本编号移到S60-S69解决了这个问题(HWConfig和其他外围设备)。按预期工作)。
虽然我还不清楚到底是什么导致了故障,但我的工作理论是,在启动序列中,所需的驱动程序还没有初始化(比如我从PIGPIO中使用的SPI代码,它从在OLED上显示随机字符到按预期运行)。
https://stackoverflow.com/questions/72258957
复制相似问题