使用gpiod_set_array_value设置LSB

时间:2018-03-15 14:36:10

标签: linux-device-driver gpio

我有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之前再次重新分配它。请参阅下图以了解我的内核模块配置

enter image description here

我实在不知道为什么它只是这样工作。

0 个答案:

没有答案