set/reset GPIO 虽然命令行没有按预期工作
set/reset GPIO though command line is not working as expected
我正在尝试通过 sysfs set/reset GPIO 值。我参考了 this 文档。
有一次我有点困惑,下面给出了场景
导出 gpio 200 进行测试
mx6q:/sys/class/gpio/gpio200# echo "out" > direction <-- set the direction as write(out)
mx6q:/sys/class/gpio/gpio200# cat direction < -- just to verify
out
mx6q:/sys/class/gpio/gpio200# echo 1 > value < -- set value as 1(high)
mx6q:/sys/class/gpio/gpio200# cat value
1
mx6q:/sys/class/gpio/gpio200# echo 0 > value < -- set value Low again
mx6q:/sys/class/gpio/gpio200# cat value
0
mx6q:/sys/class/gpio/gpio200# cat direction
out
mx6q:/sys/class/gpio/gpio200# echo "in" > direction < -- change the direction to read the pin
mx6q:/sys/class/gpio/gpio200# cat direction
in
mx6q:/sys/class/gpio/gpio200# cat value < -- what i am expecting here is 0 (last set value)
1
所以不管我之前设置的值是多少,我总是读到一个高值。这真的是预期的行为吗?
我有两点很困惑,
- 为什么之前设置的值在我改变方向后不存在?
- "Direction" 的真正含义是什么,如果我可以在 "in" 和 "out" 两种情况下获取值?
请建议阅读适当的文档以清楚了解 GPIO 操作。
提前致谢
what does the "Direction" really means, if i can cat for the value in both "in" and "out" case?
这个问题有点不清楚,但也许这有帮助:
如果 direction
为 out
,则 value
中的数据定义了您要在 GPIO 引脚上 设置 的逻辑电平。
如果direction
为in
,则value
中的数据为当前从GPIO引脚读取的逻辑电平。
why the previously set value is not persisting after i change the direction?
假设您将引脚接地。
如果你把方向设置为out
,把1
写成value
,那么当然当你回读value
时你会看到1
因为这就是你刚刚要求的。
如果您当时将 direction
设置为 in
,value
现在将显示为 0
,因为您将引脚接地,所以您当前从引脚读取逻辑 0。
我正在尝试通过 sysfs set/reset GPIO 值。我参考了 this 文档。
有一次我有点困惑,下面给出了场景
导出 gpio 200 进行测试
mx6q:/sys/class/gpio/gpio200# echo "out" > direction <-- set the direction as write(out)
mx6q:/sys/class/gpio/gpio200# cat direction < -- just to verify
out
mx6q:/sys/class/gpio/gpio200# echo 1 > value < -- set value as 1(high)
mx6q:/sys/class/gpio/gpio200# cat value
1
mx6q:/sys/class/gpio/gpio200# echo 0 > value < -- set value Low again
mx6q:/sys/class/gpio/gpio200# cat value
0
mx6q:/sys/class/gpio/gpio200# cat direction
out
mx6q:/sys/class/gpio/gpio200# echo "in" > direction < -- change the direction to read the pin
mx6q:/sys/class/gpio/gpio200# cat direction
in
mx6q:/sys/class/gpio/gpio200# cat value < -- what i am expecting here is 0 (last set value)
1
所以不管我之前设置的值是多少,我总是读到一个高值。这真的是预期的行为吗? 我有两点很困惑,
- 为什么之前设置的值在我改变方向后不存在?
- "Direction" 的真正含义是什么,如果我可以在 "in" 和 "out" 两种情况下获取值?
请建议阅读适当的文档以清楚了解 GPIO 操作。 提前致谢
what does the "Direction" really means, if i can cat for the value in both "in" and "out" case?
这个问题有点不清楚,但也许这有帮助:
如果 direction
为 out
,则 value
中的数据定义了您要在 GPIO 引脚上 设置 的逻辑电平。
如果direction
为in
,则value
中的数据为当前从GPIO引脚读取的逻辑电平。
why the previously set value is not persisting after i change the direction?
假设您将引脚接地。
如果你把方向设置为out
,把1
写成value
,那么当然当你回读value
时你会看到1
因为这就是你刚刚要求的。
如果您当时将 direction
设置为 in
,value
现在将显示为 0
,因为您将引脚接地,所以您当前从引脚读取逻辑 0。