我有GPIO设备,我决定使用GPIOLIB来控制它。这个GPIO是8位。我正在尝试使用连接到此GPIO的8个LED来构建驱动程序和检查功能。
除了一个问题,我几乎可以成功使用 gpiod_set_array_value :
发送ascii字符B(即:0100_0010),触发右边的指针(-x --_-- x - )。
发送ascii字符A(即:0100_0001),tirggers右边的leds(-x --_--- x)。
之后LSB保持高位(其指示灯始终处于开启状态)
因此再次发送ascii字符B,会触发错误的指示灯(-x --_-- xx)。
任何奇数都会发生这种情况(LSB是' 1'),我不能再将其设置为0。
当我尝试使用 gpiod_set_value 单独控制此LSB引脚时。它工作正常(我可以打开/关闭它),所以我不认为硬件有问题。
任何人都可以建议,这可能是问题
------------- EDIT -----------------
我找到了解决此问题的方法。可能对某人有用:
我必须关闭创建的gpiod描述符,然后在将任何值设置为我的gpio之前再次重新分配它。请参阅下图以了解我的内核模块配置
我实在不知道为什么它只是这样工作。