RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo
前言
上一篇已经将Qt移植过去了,此时我们移植整体应用不是什么问题了,那么现在应用对外得接口使用了RS485接口,板载了一个RS485,于是需要调通,兼容这个开发板得RS485。
补充
看起来很简单,弄起来不懂得就是不懂,懂得虽然懂还得花时间去研究一下开发板特性,与厂家沟通下,改下代码,得益于之前使用HI3559DV300做过类似得RS485,所以这次弄起来花费了不太麻烦。
调通RS485过程
步骤一:RS485调试设备与开发板连线
先得有个RS485调试转USB,这样才能调试,界限,笔者得是绿联得RS422/485口,如下图:
开发板485口原理图:
于是接线,对了,这个口子是2.54mm得4dip得dip接插件,这个做硬件得一般都会备点货,属于通用接口,当年各种都备货了一点:
剪一根的一半,然后按照加插件插入的顺序接入,因为看到1和4引脚是联通的地,万用表测了对覆铜层通的(GND),直接1和4接到一起了,然后接A对应T/R+,B对应T/R-,如下图:
接入发开饭:
另外一头usb接入PC电脑,用串口打开即可(PS:485的usb模块对于pc来说就是一路串口)。
步骤二:打开开发板RS485调试工具
这里的话,因为开发板使用的buildroot,去打开RS485这个类似于串口的设备还真没有,得益于笔者项目研发都会产出阶段性调试工具,于是便有了如下工具(PS:官方有个RS485调试Qt的demo,读者可以使用官方的):
(对了,这里还有相关工具的交叉编译移植,其实跟x86下编译类似,不赘述了,不懂得可以查看《RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo测试》得demo编译过程,其实是一样的。
步骤三:调试工具轮询接收测试485口
因为调试工具是被动接收485数据的,所以pc端打开485之后,1s发送一次,每一个端口依次打开,测试485口试哪个口。
然后,结果试每个口都不行,这时候就怀疑:
- 是否试AB的正负线接反了,可以直接交换,测一轮,也可以核对一次。
- Rs485口是否有特殊的,需要自行拉上拉下(这里得到官方验证,默认是拉上的,只能发出不接收)
(PS:通过客服技术支持,得到口为ttyS7,且需要上下拉,默认是上拉,只发送)
于是加了一个按钮,直接发送出去测试一下:
PC端收到了发送过来的消息:
确认了,是需要上下拉,这时候查阅官方文档,并没有关于上下拉的描述,只能通过官方提供的RS485的Qtdemo来提取了。
步骤四:提取官方QT调试RS485的demo中的关键上下拉逻辑代码
直接抠代码,一般是通过echo输入到一个设备文件、file打开设备文件,或者ioctl的方式,这三种方式稍微提一下区别(何种方式看开发板方案上是怎么提供的):
- echo方式:cmd的方式,程序中用system,qt中可以用QProcess,这个方式效率相对有点低,不适合频发发送接收的状态
- file方式:file方式是文件方式,兼容linux系统和qt开发最合适的方式,当作文件写入控制,很好的处理了环境问题,效率比echo高,比ioctl低,但是5ms足够几百字节的完成切换了(具体要按照实际情况发送调)。
- ioctl方式:ioctl的方式在qt中不是很好,在某些情况下,qt根本不需要接触到sysroot下面的依赖库,直接qt交叉编译自己的库就可以,本开发板是已经融合好了 (PS:像海思这种,就只能将qt反向弄到sample里面去,因为环境都是makefile配置的)
以上三种各有优缺点,但是其实选择权不在我们,而在主板方案提供商,所以拿过来用,能用就行了,别死磕。
提取代码如下:
步骤五:改造我们的串口代码
添加一个宏定义:
在串口设备管理模块添加相关代码.
在打开的时候,添加代码:
在发送的时候,添加代码:
在关闭的时候,添加代码:
改在完以后,再交叉编译协议调试工具过去测试。
步骤六:调试解析成功
在目标板上打开应用,打开对应的串口,然后实现收发成功:
小结
RS485调试通了,大项目中的调试工具也通了,那么剩下的就是移植应用了,移植应用中,遇到了新的问题(做嵌入式,轮上都是没问题,实际上问题一个又一个,运气好不麻烦,运气不好卡个一两天,麻烦的一两周都常有的事)
RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo的更多相关文章
- nrf开发笔记一开发软件
nrf52810 的开发环境,比较主流的可以使用keil,iar亦可.sdk中,使用的是pca10040e,s112.虽然开发板共用一个型号(pca10040) keil5中,cmsis 需要4.5. ...
- Qwt开发笔记(二):Qwt基础框架介绍、折线图介绍、折线图Demo以及代码详解
前言 QWT开发笔记系列整理集合,这是目前使用最为广泛的Qt图表类(Qt的QWidget代码方向只有QtCharts,Qwt,QCustomPlot),使用多年,系统性的整理,本系列旨在系统解说并 ...
- VUE依赖webpack分别给开发环境和生产环境配置不同的常量值并在项目中动态引用
当在开发和产品上线的时候,我们经常会遇到在同一个地方由于环境的不同而地址也不同的情况,这时候如果在代码中将该地址写死,那势必会造成上线时手动改动,多人开发及多处使用该地址难以维护等一系列问题,为避免这 ...
- Yocto开发笔记之《Tip-应用程序无法在目标机运行》(QQ交流群:519230208)
官方app编译环境编译的应用程序可以在开发板自带的系统中运行,自己编译并烧写了系统,却提示: root@imx6ulevk:/root# ./VTTerminal -sh: ./VTTerminal: ...
- APPCAN开发笔记:html页面之间的参数传递:使用js获取url中的参数,以及在APPCAN中不能使用的解决方法
用PHP的GET/POST方式来传递方式已经是司空见惯了,但是如果我的页面是一个静态的html的页面,想传递参数的时候要怎么办呢?在APPCAN的开发中我们会经常遇到这样的问题,因为所有的页面都是静态 ...
- wp8开发笔记之开发环境的搭建
开发工具的下载: Windows phone sdk 8.0下载地址: http://www.microsoft.com/ZH-CN/download/details.aspx?id=35471 开发 ...
- Delphi For Android 开发笔记 1 - 开发工具介绍
在开始前,推荐喜欢delphi或者pascal的朋友,如果想将原来Windows的软件工程移植到Android,可使用CodeTyphon+Delphi XE7进行开发. 1.CodeTyphon C ...
- 安卓开发笔记(二十):利用夜神模拟器调试运行Android Studio的apk
一.首先来到夜神模拟器的安装目录下 如下图所示: 再把这整个文件夹添加到我们的windows环境变量里.然后再把android studio 和夜神模拟器都打开,注意必须同时打开而且不能够把夜神模拟器 ...
- odoo开发笔记 -- 日常开发注意点总结(持续补充)
(1) odoo视图字段,如果是readonly,默认该数据是不会往后台传递的,因此,保存数据的时候,该字段的数据是不会存到数据库中的.(待确认,字段中增加默认值,保存) (2)视图界面,注释的时候, ...
- vue全家桶+Koa2开发笔记(8)--开发网页
1.使用 mongoose 动态倒入数据 mongoimport -d student -c areas areas.dat -d 后面是数据库名称: -c后面是表名称 最后是数据源 2.使用vue的 ...
随机推荐
- [转帖]【软件测试】Jmeter性能测试(性能测试,Jmeter使用与结果分析)
文章目录 前言 一.性能测试 1. 什么是性能测试? 2. 性能测试的重要性 3. 性能指标--QPS和TPS ①QPS ②TPS 二.压测工具Jmeter 1. 什么是Jmeter? 2. Jmet ...
- IIS 实现autoindex的简单方法 能够下载文件等.
之前使用nginx 的autoindex on 的参数 能够实现了 nginx的 目录浏览查看文件 但是那是linux上面的 windows 上面很多 使用的 其实是 iis的居多 然后看了下 其实也 ...
- 一文搞懂Go GC演进史,讲的太细致了!
最近在和 Go就业训练营 的朋友讨论Go GC的问题,发现了刘丹冰老师总结的内容,写的太好了,和大家分享一下. 我们的讨论和思考也整理到这篇文章中了,希望对你有启发. 垃圾回收(Garbage Col ...
- 如何将数据库中的树结构表导出EXCEL
我们常常会遇到这样的需求,将数据库中父子结构的表数据导出作为表头 我们实现的开发中就遇到这样的需求:将所有用户的权限表导出,权限作为表头 思路:sql求出每一条权限数据应该跨的行数,在代码中填充这些数 ...
- IDM全版本激活工具
前往IDM官网下载IDM IDM官网 下载破解工具 IDM激活工具.zip 解压打开激活工具选择1 然后回车耐心等待激活完成即可
- Go语言的100个错误使用场景(一)|代码和项目组织
目录 前言 1. Go: Simple to learn but hard to master 1.1 Go 语言概述 1.2 简单不等于容易 1.3 使用 Go 的100个错误 2. Code an ...
- 21.7 Python 使用Request库
Request库可以用来发送各种HTTP请求,该框架的特点是简单易用,同时支持同步和异步请求,支持HTTP协议的各种方法和重定向.它还支持Cookie.HTTPS和认证等特性. Request库的使用 ...
- Python通过SNMP监控网络设备
前段时间,为了实现自动化巡检,我开发了自动化巡检工具,由于我的系统设备版本比较多,所以我是分别开发的客户端程序,服务端使用dll文件与客户端通信,服务端的dll在与python通信,通过Python丰 ...
- IDEA破解激活
!!!不要使用最新2021.2.3以后的版本,没有30天免费试用.推荐使用2021年之前的版本!!! 1: IDEA安装后使用30天免费试用进入,然后找到图中位置点击 2: 点击下图链接下载破解jar ...
- Advanced Installer设置安装最后一步启动软件
左侧用户界面中选择对话框-ExitDialog 在完成操作项中勾选"安装结束时启动应用程序",在弹出的对话框中选择需要启动的exe文件