【平头哥Sipeed LicheeRV 86 Panel测评】II. GPIO管脚引出,RGB三色LED闪烁
本帖最后由 zhang1gong 于 2022-3-15 11:28 编辑<p><strong><span style="font-size:16px;">1 核心板LED点亮</span></strong></p>
<p> </p>
<p>LicheeRV教程提供了核心板上的LED点亮教程。LED点亮或闪烁往往是广泛应用于自动控制的嵌入式系统运行的第一个试验程序,如同一般在桌面系统上学习编程语言运行的第一个程序:“Hello, world!”。我是第一次在Linux系统下运行点灯程序,感觉和在裸机上用c或汇编编程完全不同:基本上不用关心硬件,完全是对文件操作,充分提现了Linux系统“万物皆文件”的理念。<br />
核心板上驱动LED的GPIO口(PC1)与底板上的其他应用冲突,因此必须把核心板从底板上拆下,才能做这个点灯试验。但是,核心板上的USB口并不具备模拟串口功能,对此教程似乎并没有明确说明。几位已经做了这个试验的测试者都提到了:要用ADB。虽然大概早晚都会在我的桌面系统中装ADB以搭建交叉编译环境,我还是想先看看有没有其他办法。<br />
将核心板从底板拆下后,发现在USB口旁边有4个预留的焊盘,PCB板背面在焊盘旁边标出了“T R G 5V”,不禁使人想到:这难道是个串口?查了一下原理图,果然如此!正好我手头有不止一个串口转USB的小板(某宝上几块钱一个还包邮),为什么不用这个串口呢?忽然想到开发套件中有个小口袋装了4脚插针,应该就是干这个用的。顺利地将4脚插针焊上,但马上发现:如果将核心板插回底板,由于在串口插针下是底板上的复位按键,需要对焊上的插针修剪,否则插针的焊接端就会顶到复位按键上。焊接、修剪过程其实十分简单,但我差点儿在阴沟里翻船。经历了核心板不能工作、终于又恢复的过程(此处略去具体翻船现场和恢复过程200字),总算有惊无险!</p>
<p>通过核心板上的串口,经小板转换成USB连到桌面系统的模拟终端,按照教程给出的命令行指令逐条执行,点灯过程很顺利。(教程给出的命令行指令有一处小错:“cd /sys/class/gpio/export/gpio65”)</p>
<p class="imagemiddle" style="text-align: center;"></p>
<p> </p>
<p><strong><span style="font-size:16px;">2 引脚扩展,RGB三色LED闪烁</span></strong></p>
<p> </p>
<p>底板上预留的扩展引脚区给人以无限遐想,总觉得如不把它们引出来,似乎对不起设计者的初衷。将引脚引出的主要障碍是需要把显示屏与底板分离。分离本身其实并不困难,难的是下决心去做这种带一点儿破坏性的事情(恳请厂家在出厂时就把双排插座焊上吧)。用刀片将显示屏和底板之间的连接分离,小心地在底板上焊上插座,可以方便地用杜邦线连接扩展引脚了。</p>
<p>根据底板上扩展引脚的标号,对照原理图,在感觉没有被占用的引脚中选择B2、B3、B4来用,分别用来驱动三色LEB中的R、G、B。参照教程,先用</p>
<p>“cat /sys/kernel/debug/pinctrl/2000000.pinctrl/pinmux-pins”</p>
<p>命令查询管脚标号对应的数字编号:</p>
<p> </p>
<p class="imagemiddle" style="text-align: center;"></p>
<p> </p>
<p>然后参照教程写了两个脚本,并放到“/mnt/SDCARD”目录下,这样掉电文件也不会丢失:</p>
<hr />
<p><span style="font-family:Courier;"># rgb_config.sh</span></p>
<p><span style="font-family:Courier;">echo 34 > /sys/class/gpio/export<br />
echo 35 > /sys/class/gpio/export<br />
echo 36 > /sys/class/gpio/export</span></p>
<p><span style="font-family:Courier;">cd /sys/class/gpio/gpio34<br />
echo out>direction<br />
cd /sys/class/gpio/gpio35<br />
echo out>direction<br />
cd /sys/class/gpio/gpio36<br />
echo out>direction</span></p>
<hr />
<p><span style="font-family:Courier;"># rgb_blink.sh</span></p>
<p><span style="font-family:Courier;">for a in $(seq 1 5)<br />
do<br />
cd /sys/class/gpio/gpio34<br />
echo 1 > value<br />
sleep 0.5<br />
cd /sys/class/gpio/gpio35<br />
echo 1 > value<br />
sleep 0.5<br />
cd /sys/class/gpio/gpio36<br />
echo 1 > value<br />
sleep 1</span></p>
<p><span style="font-family:Courier;"> cd /sys/class/gpio/gpio34<br />
echo 0 > value<br />
sleep 0.5<br />
cd /sys/class/gpio/gpio35<br />
echo 0 > value<br />
sleep 0.5<br />
cd /sys/class/gpio/gpio36<br />
echo 0 > value<br />
sleep 1</span></p>
<p><span style="font-family:Courier;">done</span></p>
<hr />
<p>脚本“rgb_config.sh”用来初始化管脚,“rgb_blink.sh”控制三色LED的闪烁。</p>
<p> </p>
<p class="imagemiddle" style="text-align: center;"></p>
<p class="imagemiddle" style="text-align: center;"> </p>
<p class="imagemiddle">Linux系统下万物皆文件,还要进一步好好体会。</p>
<p> </p>
页:
[1]