GPIO
<p>[TOC]</p>
<h2>GPIO的使用</h2>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=c1c098bbdd74a75cf3a6ffee24c55bea&amp;file=file.png" alt="" /></p>
<h3>1、接口定义</h3>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=716d6589bbef6ca21497f810fbaa0a6b&amp;file=file.png" alt="" /></p>
<h3>2、GPIO的导出</h3>
<ul>
<li>方式1:打开内置的APP:终端模拟器</li>
<li>方式2:使用adb调试登录后台</li>
<li>方式3:使用DEBUG串口调试</li>
</ul>
<p>gpio 的控制节点在目录:<code>/sys/class/gpio/</code></p>
<p>导出节点命令:</p>
<pre><code class="language-shell">//获取超级权限
console: $ su
//导出单个gpio
console: # echo 41 &gt;/sys/class/gpio/export
//使用 for 循环导出多个 IO 节点:
console:cd /sys/class/gpio
console:/sys/class/gpio # for i in {41,32,42,33,43,34,44,35,20,21};do echo $i &gt;export;done
</code></pre>
<h3>3、DO测试:</h3>
<p><code>开关位于NPN时</code></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=76828ed40853f07cef3c902f47c0af78&amp;file=file.png" alt="" /></p>
<p>①6DO的value=0时(默认),6DO与DOGND不导通</p>
<p>②赋值6DO的value=1时,6DO与DOGND导通</p>
<p> </p>
<p><code>开关位于PNP时,源型:输出电流流向负载</code></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=1925fe18ac3125c298a327688eaa1569&amp;file=file.png" alt="" /></p>
<p>6DO的value=0时(默认),6DO与DOGND电压为0</p>
<p>赋值6DO的value=1时,6DO与DOGND电压为+24V</p>
<h3>4、DI测试</h3>
<p><code>开关位于干接点时</code></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=a0e427092fb7e051d43d66a1f4014a68&amp;file=file.png" alt="" /></p>
<p>6DI与DIGND断开时(有24V电压),6DI的value=1</p>
<p>6DI与DIGND短接时,6DI的value=0</p>
<p> </p>
<p><code>开关位于湿接点时</code></p>
<p><img src="https://www.showdoc.com.cn/server/api/attachment/visitFile?sign=6cee36616213ad32f7b6462c8204e487&amp;file=file.png" alt="" /></p>
<p>6DI,DIGND低电平或者无电源输入时,6DI的value=1</p>
<p>6DI,DIGND高电平输入时(+24V),6DI的value=0</p>
<p>注意:不可随意切换干湿接点开关,先确认好接线类型或测试手法,再确定好开关位置,最后上电</p>
<h3>5、IO控制方法</h3>
<ul>
<li>单个节点控制,以 gpio95 为例:</li>
</ul>
<pre><code class="language-shell">//设置 gpio41 为输出方向:
echo out &gt;/sys/class/gpio/gpio41/direction
//设置 gpio41 输出低电平:
echo 0 &gt;/sys/class/gpio/gpio41/value
//设置 gpio41 输出高电平:
echo 1 &gt;/sys/class/gpio/gpio41/value
//IO为输出方向时:使用电压表测量pin脚3(gpio41)对pin脚1的电压是否可控:低电平为0v,高电平为3.3v
//设置 gpio41 为输入:
echo in &gt;/sys/class/gpio/gpio41/direction
</code></pre>
<ul>
<li>多个节点控制,以 J_GPIO 上10个IO为例:</li>
</ul>
<pre><code class="language-shell">//进入gpio目录
cd /sys/class/gpio
//导出所有节点
for i in {41,32,42,33,43,34,44,35,20,21}; do echo $i &gt;export; done
//设置全部io为输出
for i in {41,32,42,33,43,34,44,35,20,21}; do echo out &gt;gpio$i/direction; done
//全部输出高
for i in {41,32,42,33,43,34,44,35,20,21}; do echo 1 &gt;gpio$i/value; done
//全部输出低
for i in {41,32,42,33,43,34,44,35,20,21}; do echo 0 &gt;gpio$i/value; done
</code></pre>