【国产RISC-V Linux板 昉·星光VisionFive试用报告】UART通讯功能使用
本帖最后由 HonestQiao 于 2022-8-2 13:30 编辑<p>在星光派官方提供的文档:3.赛昉科技40-Pin GPIO Header用户手册.pdf 中,演示了,如何在星光派的系统中,使用minicom进行串口通讯。</p>
<p>使用Python语言,也可以非常方便的应用串口,进行数据交互。</p>
<p>这个分享中,演示星光派和电脑,通过串口进行通讯。</p>
<p> </p>
<p>首先按照文档中的说明,启用UART1和UART2,并注意对应的挂载点:</p>
<p>启用时,注意设置好对应的GPIO口:</p>
<p> </p>
<p> </p>
<p> </p>
<p>要让星光派和电脑进行串口通讯,需要先用USB2TTL进行连接,具体连接如下:</p>
<p></p>
<p> </p>
<p>在星光派上,我们使用UART1,对应的串口为/dev/ttyS2,通信波特率使用最常见的115200</p>
<p>然后,可以在星光派编写如下的程序:</p>
<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<code class="language-python"># -*- coding: UTF-8 -*-
import serial
from time import sleep
def recv(serial):
while True:
data = serial.read_all()
if data == '':
continue;
else:
break;
sleep(0.02)
return data
if __name__=="__main__":
serial = serial.Serial("/dev/ttyS2", 115200, timeout=0.5)
if serial.isOpen():
print("open success, wait for data")
else:
print("open failed")
exit(1)
while True:
data = recv(serial)
if data != b'':
print("StarFive receive:", data)
serial.write(data)
</code></pre>
</div>
<p>保存为uart_recv.py,并运行:</p>
<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<code>python uart_recv.py</code></pre>
</div>
<p>运行后,如果打开串口成功,建辉提示打开成功,并等待数据:</p>
<p> </p>
<p> </p>
<p>然后,我们再到电脑上,编写如下的程序:</p>
<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<code class="language-python"># -*- coding: UTF-8 -*-
import serial
from time import sleep
if __name__ == "__main__":
serial = serial.Serial("电脑的串口端口", 115200, timeout=0.5)
if serial.isOpen():
print("open success")
else:
print("open failed")
exit(1)
i = 0
while True:
i+=1
data = "test %d" % i
serial.write(data.encode('utf-8'))
print("send:", data)
sleep(1)
</code></pre>
</div>
<p>并保存为python_send.py。</p>
<p>注意,上述代码中,`电脑的串口端口`需要修改为你系统实际对应的。</p>
<p>在电脑上运行:</p>
<div class="parsedown-markdown">
<pre style="background:#555; padding:10px; color:#ddd !important;">
<code>python uart_send.py</code></pre>
</div>
<p> </p>
<p>在星光派上运行的程序中,就会收到对应的数据了。</p>
<p> </p>
<p>因为我是在macOS上操作,所以通过ssh连接到星光派操作,电脑上本地在命令行操作,得到的结果如下:</p>
<p> </p>
<p>如果把上面的两个程序反过来,就能够在星光派上发送数据,在电脑上接收了。</p>
<p>进一步的,你还可以进行双向的收发通讯测试。</p>
<p>还可以进行双向的收发通讯测试,这个可以试一下</p>
页:
[1]