首页 > 其他分享 >RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo

RK3568开发笔记(九):开发板buildroot固件调通RS485口,运行项目中RS485协议调试工具Demo

时间:2023-09-14 10:35:31浏览次数:39  
标签:buildroot qt RK3568 RS485 开发板 串口 485 调试

前言

  上一篇已经将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调试通了,大项目中的调试工具也通了,那么剩下的就是移植应用了,移植应用中,遇到了新的问题(做嵌入式,轮上都是没问题,实际上问题一个又一个,运气好不麻烦,运气不好卡个一两天,麻烦的一两周都常有的事)

标签:buildroot,qt,RK3568,RS485,开发板,串口,485,调试
From: https://www.cnblogs.com/qq21497936/p/17701815.html

相关文章

  • buildroot 构建根文件系统(8)添加网络时间同步
    一、开发背景构建最小系统后成功运行后,时间都是从初始化时间开始计算,形如:ThuJan 109:57:55UTC1970二、开发需求开机联网后自动从网络中获取最新的时间,同步到系统中三、开发环境LinuxUbuntu4.15.0-65-generic+buildroot-2023.02.3+i.mx6d(cortex-A9)......
  • RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个D
    前言  前面发现开发板用ubuntu固件发现空间不够,本篇使用buildroot固件,来实现目标板运行qt界面应用。<br>烧写buildroot固件  这部分更详细的参照《RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏)》的步骤,本质上烧写都是一样的,只是不同的update.img。步骤一:下载镜像  ......
  • RK3568开发笔记(八):开发板烧写buildroot固件(支持hdmi屏),搭建Qt交叉编译开发环境,编译一个D
    前言  前面发现开发板用ubuntu固件发现空间不够,本篇使用buildroot固件,来实现目标板运行qt界面应用。 烧写buildroot固件  这部分更详细的参照《RK3568开发笔记(六):开发板烧写ubuntu固件(支持mipi屏)》的步骤,本质上烧写都是一样的,只是不同的update.img。步骤一:下载......
  • 迅为RK3568开发板驱动指南第六篇-平台总线
    文档教程更新至第六篇第1篇驱动基础篇第2篇字符设备基础第3篇并发与竞争第4篇高级字符设备进阶第5篇中断第6篇平台总线未完待续,持续更新中...视频教程更新至十一期第一期_驱动基础第二期_字符设备基础第三期_并发与竞争第四期_高级字符设备进阶第五期_中断第六期_平台总线第......
  • buildroot 构建根文件系统(6)添加字体和中文支持
    一、开发背景构建最小系统后成功运行后,Qt程序在界面上文本不显示二、开发需求Qt库编译的程序可以正常运行三、开发环境LinuxUbuntu4.15.0-65-generic+buildroot-2023.02.3+i.mx6d(cortex-A9)四、实现步骤1、添加界面中文支持1)基于前面章......
  • RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo
    前言  在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境。<br>补充说明  本篇是基于《RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、文件传......
  • RK3568开发笔记(七):在宿主机ubuntu上搭建Qt交叉编译开发环境,编译一个Demo,目标板运行Demo
    前言  在之前的博文中已经搭建好了一个比较完善的ubuntu宿主机,都很完善了但是发现没有Qt交叉编译开发环境,所以还需要搭建一套Qt交叉编译开发环境。 补充说明  本篇是基于《RK3568开发笔记(三):RK3568虚拟机基础环境搭建之更新源、安装网络工具、串口调试、网络连接、......
  • iTOP-RK3568开发板内核模块实验-设置交叉编译器
    在上一章节我们编写了最简单的helloworld驱动程序。有了驱动程序以后,要如何编译并使用驱动呢。编译驱动有俩种方法,分别是将驱动编译成内核和将驱动编译成内核模块。我们先来学习如何将驱动编译成内核模块、4.1设置交叉编译器1下载网盘资料下的交叉编译器,网盘路径为:“XXX”,将下......
  • buildroot 构建根文件系统(5)添加 Qt 库相关环境
    一、开发背景构建最小系统后成功运行后,需要支持Qt库编译的程序在上面运行二、开发需求Qt库编译的程序可以正常运行三、开发环境LinuxUbuntu 4.15.0-65-generic+ buildroot-2023.02.3+i.mx6d(cortex-A9)四、实现步骤1、基于前面章节的文件系统上打......
  • 关于 rk3568 yocto USB 鼠标不能使用的问题
    问题:发现rk3568yocto镜像出现 USB无法识别鼠标键盘的问题。 经测试发现: 1  1.2底板的yocto镜像,lvds屏幕的镜像是可以的,鼠标与触摸同时可用。   2 测试1.7底板的 yocto lvds影响是不是同样可用。 这说明只要是lvds就是可以用的。  3......