HonestQiao 发表于 2024-2-22 10:24

【米尔-TI AM62x开发板-试用评测】485通讯测试

<div class='showpostmsg'><p>在米尔-TI AM62x开发板上,提供了两个RS485端口,可以用于连接RS485外部工业设备。</p>

<p> &nbsp;</p>

<p>&nbsp;</p>

<p>我手头正好有RS485相关的设备,所以正好开展一下测试。</p>

<p>&nbsp;</p>

<p><strong>一、硬件准备</strong></p>

<p>这次测试,使用了一个USB2485,方便和电脑连接进行通讯:</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p>RS485采用平衡发送和差分接收方式实现通信:发送端将串行口的ttl电平信号转换成差分信号a,b两路输出,经过线缆传输之后在接收端将差分信号还原成ttl电平信号。</p>

<p>因此,只需要两根线即可完成通讯。</p>

<p>不过需要注意的是,两个设备或者端口之间,RS485的A对A,B对B,而不是像RS232那样RX对TX,TX对RX。</p>

<p>&nbsp;</p>

<p><strong>二、软件准备</strong></p>

<p><strong>1. 串口工具</strong></p>

<p>我用的是picocom和comtools,可以在macOS和Linux下面使用。</p>

<p>&nbsp;</p>

<p>要在开发板的Linux中使用picocom,需要在应用开发环境进行编译:</p>

<pre>
<code class="language-bash">git clone https://github.com/npat-efault/picocom.git
cd picocom
make
file picocom
# picocom: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID=39afadd44edb2b86a1f4d60cb55a6f558263cb1c, for GNU/Linux 3.14.0, with debug_info, not stripped</code></pre>

<p>编译完成后,将生成的picocom上传到开发板备用。</p>

<p>&nbsp;</p>

<p><strong>2. 串口测试工具</strong></p>

<p>串口测试工具,使用的是 linux-serial-test,也需要先编译:</p>

<pre>
<code class="language-bash">git clone https://github.com/cbrake/linux-serial-test.git
cd linux-serial-test
cmake .
make

file linux-serial-test
# linux-serial-test: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID=70dc505751ab3c56dd4db2ee5c1fe644c2b626d7, for GNU/Linux 3.14.0, with debug_info, not stripped</code></pre>

<p>编译完成后,将生成的linux-serial-test上传到开发板备用。</p>

<p>&nbsp;</p>

<p><strong>三、端口对端口基础测试</strong></p>

<p>用杜邦线,直接将A1-A2连接,B2-B2连接,就可以进行开发板本机测试了。</p>

<p>ssh连接1:</p>

<pre>
<code class="language-bash">./picocom -c -b 115200 /dev/ttyS0</code></pre>

<p>ssh连接2:</p>

<pre>
<code class="language-bash">./picocom -c -b 115200 /dev/ttyS1</code></pre>

<p>因为485端口1和2互联了,所以上面两个串口的picocom终端会相互关联,在一个操作,会同步发送到另外一边。</p>

<p>&nbsp;</p>

<p>具体测试结果如下:</p>

<p>c74d9aa17b32c7d684af114dedb44ccf<br />
&nbsp;</p>

<p><strong>四、开发板485端口性能测试</strong></p>

<p>通过&nbsp;linux-serial-test 可以对单个端口,或者两个端口,进行性能测试。</p>

<p>如果测试单端口,需要使用回环电缆,但我手头没有,所以进行双端口测试。</p>

<p>ssh连接1:接收端命令:</p>

<pre>
<code class="language-bash">linux-serial-test -s -e -p /dev/ttyS1 -t -c -l 250</code></pre>

<p>ssh连接段2:发射端命令:</p>

<pre>
<code class="language-bash">linux-serial-test -s -e -p /dev/ttyS0 -r -c</code></pre>

<p>上述命令,可以实现 RTS/CTS 流量控制,并发送带有计数模式的数据, 两次读取之间延迟 250 毫秒,这将导致缓冲区填满并开始使用流量控制。</p>

<p>同样程序将报告模式中任何缺失的数据,如果流控制正常工作,则不应有任何缺失数据报告。</p>

<p>具体测试结果如下:</p>

<p>b9341ac57cb77ea0c980292eb6fb2bee<br />
&nbsp;</p>

<p>从上述结果来看,测试均通过,err显示为0,表示无错误发生。</p>

<p>&nbsp;</p>

<p><strong>五、开发板与电脑使用串口工具通讯</strong></p>

<p>开发板上运行命令:</p>

<pre>
<code class="language-bash">./picocom -c -b 115200 /dev/ttyS0</code></pre>

<p>电脑上使用comtools打开窗口,即可进行通讯测试:</p>

<p>75972ce60300a341f7cf713dbf05065e<br />
&nbsp;</p>

<p><strong>六、文件传输测试</strong></p>

<p>使用串口,可以在电脑和开发板之间传送文件。</p>

<p>根据modem所采用的文件传输协议:xmodem,ymodem,zmodem将其分类&nbsp;&nbsp;</p>

<ul>
        <li>xmodem:简单通用,传输信息单位是&ldquo;包=128B&rdquo;,传输速度慢,适合电话线路质量差的情况下用&nbsp;&nbsp;</li>
        <li>ymodem:由XMODEM演变来,效率可靠性高,包=128*8B;一次传输可发送或接受几个文件&nbsp;&nbsp;</li>
        <li>zmodem:于上两种不同,已连续的数据流发送数据,效率更高</li>
</ul>

<p>在macOS/Linux下,一般通过rz/sz来进行文件的传输。</p>

<p>&nbsp;</p>

<p>首先,在交叉编译环境编译lrzsz:</p>

<pre>
<code class="language-bash">git clone https://github.com/coderfordev/lrzsz.git
cd lrzsz
make

file src/lrz
# src/lrz: ELF 64-bit LSB executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, BuildID=79e067ed07413d1591ccf95de51917342a19c0fd, for GNU/Linux 3.14.0, with debug_info, not stripped</code></pre>

<p>&nbsp;</p>

<p>将最后生成的lrz、lsz部署到开发板上,并改名为rz sz。</p>

<p>然后,在开发板上运行命令:</p>

<pre>
<code class="language-bash">PATH=/home/roo:$PATH

picocom --send-cmd "sz -vv" --receive-cmd "rz -vv" -b 115200 /dev/ttyS0</code></pre>

<p>&nbsp;</p>

<p>在电脑上,可以用SecurtCRT图形界面工具,或者用picocom命令行工具。</p>

<p>用picocom的话,命令如下:</p>

<pre>
<code class="language-bash">picocom --send-cmd "sz -vv" --receive-cmd "rz -vv" -b 115200 /dev/cu.usbserial-0001</code></pre>

<p>&nbsp;</p>

<p>要开始传输文件的话,按照以下步骤进行:</p>

<ol>
        <li>先在开发板上,按Ctrl+A,再按Ctrl+R,表示接受文件,出现提示时,不要回车</li>
        <li>在电脑上,按Ctrl+A,再按Ctrl+S,表示发送文件,出现提示时,输入文件的完整路径,然后回车</li>
        <li>&nbsp;然后在开发板上,回车接收文件即可,回车后,自动开始文件传输</li>
        <li>文件发送完成后,可以用md5sum命令检查,文件传输是否正确</li>
</ol>

<p>具体的操作过程和结果如下:</p>

<p>4611555f145ffdd5c1cfb4d27b844e66<br />
&nbsp;</p>

<p><strong>七、总结</strong></p>

<p>做为一款可供工业开发使用评估的开发板,米尔-TI AM62x开发板 提供了RS485接口,可以很方便的进行485设备的通讯和控制。</p>

<p>后续将会使用485解决的读卡器进行测试通讯,并分享经验。</p>

<p>&nbsp;</p>

<p><strong>八、参考资料</strong></p>

<ul>
        <li><a href="https://blog.csdn.net/codings/article/details/127085293">Linux串口测试工具_linux 串口工具-CSDN博客</a></li>
        <li><a href="https://www.cnblogs.com/lianghong881018/p/12192020.html">linux-serial-test tool - 嵌入式实操 - 博客园 (cnblogs.com)</a></li>
        <li><a href="https://github.com/cbrake/linux-serial-test">cbrake/linux-serial-test: Linux Serial Test Application (github.com)</a></li>
        <li><a href="https://zhuanlan.zhihu.com/p/560629011">不同设备RS485接线方式 - 知乎 (zhihu.com)</a></li>
        <li><a href="https://blog.csdn.net/xiao628945/article/details/8259063">Ubuntu下安装和使用lrzsz,实现串口传输文件&amp;&amp;minicom_lrz waiting to receive.-CSDN博客</a></li>
        <li><a href="https://github.com/coderfordev/lrzsz">coderfordev/lrzsz: lrzsz from http://www.ohse.de/uwe/software/lrzsz.html (github.com)</a></li>
        <li><a href="https://stackoverflow.com/questions/13426737/simple-small-c-program-for-testing-serial-bandwidth">用于测试串行带宽的简单、小型 C 程序 - Stack Overflow</a></li>
        <li><a href="https://www.cnblogs.com/lidabo/p/4780866.html">串口传输文件 lrzsz - DoubleLi - 博客园 (cnblogs.com)</a></li>
</ul>
</div><script>                                        var loginstr = '<div class="locked">查看本帖全部内容,请<a href="javascript:;"   style="color:#e60000" class="loginf">登录</a>或者<a href="https://bbs.eeworld.com.cn/member.php?mod=register_eeworld.php&action=wechat" style="color:#e60000" target="_blank">注册</a></div>';
                                       
                                        if(parseInt(discuz_uid)==0){
                                                                                                (function($){
                                                        var postHeight = getTextHeight(400);
                                                        $(".showpostmsg").html($(".showpostmsg").html());
                                                        $(".showpostmsg").after(loginstr);
                                                        $(".showpostmsg").css({height:postHeight,overflow:"hidden"});
                                                })(jQuery);
                                        }                </script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script>

beyond_笑谈 发表于 2024-4-8 11:35

这个测评报告写的完整,下次有机会测评的话也参考这种模式
页: [1]
查看完整版本: 【米尔-TI AM62x开发板-试用评测】485通讯测试