Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
CAN总线
HMI-Board
LittlevGL_LVGL
【Renesas GUI挑战赛】基于RTT-LVGL便携Can诊断仪系统设计
发布于 2023-09-10 11:51:37 浏览:1729
订阅该版
#目录: 1. 效果展示 2. 硬件框架 3. 软件框架 4. 软件逻辑 5. 代码路径 6. 视频连接 #应用背景: 随着生活水平提升,越来越多的车进去用户家庭,车辆在保养健康维护过程中好多隐藏的问题不便于拆卸和查看,比如hud模块,是否有遇到过高压冲击,是否有点击、led、屏、间断性失去通讯等一些列隐藏故障以及版本是否较老,有新版本软件更新迭代是否可以升级等等。针对这一类问题,车身模块本身有版本定义、故障码诊断反馈以及uds测试模式调图等功能,这时候需要有一定的诊断设备发特定报文与模块通讯才能请求到uds诊断信息。于是就有了这个便携诊断工具设计。为了方便4S店以及维修人员对车辆的健康状态的维护和保养,快捷的获取车辆状态等信息,该诊断仪当前可用于对汽车的诊断模块版本信息,uds诊断调节基本功能检查是否有故障,部分模块切换测试图查看显示效果是否异常,读取故障状态等,最终联网数据储存服务器,便于后续统计车辆维护状态,历史故障情况 另外该诊断工具小巧,便于携带,一些不便于携带大件行李情况下可以方便携带,装口袋即可;未来对于一些有一定专业技能的人士可以添加诊断报文用户定义编译,可以指定报文发送请求,这样对于使用的广泛性得以扩大。 #实现功能: 通过按键以及调节滑块等操作发出指定uds诊断报文,请求对应诊断模块的故障状态显示出来。另外可以连接网络上报服务器此次诊断具体信息,用于服务器统计记录该车历史排查维修记录,方便排查历史记录 #正文: ##1. 效果展示 设计操作页面如下,通过点击按钮可发出can诊断报文,等待回应状态显示到诊断仪上。最终连接网络,上传诊断数据信息。整体ui效果页面如下: ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/abdcd6d8d563abf26ec2c3018cedc9fc.png.webp) ##2. 硬件框架 硬件结构上比较简单,框架设计如下,芯片的can 口通过OBD连接车身can网,wifi模块连接在服务器局域网内(当然在不方便联网情况下可以先进行诊断,后面将数据存储诊断仪flash中,待有网络下联网上报诊断数据) ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/a24d17652b10ad13175cd6a312b54517.png) ##3. 软件框架 软件结构上主要是上电启动后注册驱动,初始化完can wifi等外设后加载ui,随后子线程中信号阻塞监听can报文,直到接收到了can报文,单片机中断,发出信号量,子线程读取can报文内容。 Ui任务中按钮以及滑块等用户交互接口会触发对应点击事件,收到按钮点击后组包发出一条can诊断报文,等待can回应信息后,解析回应内容存储对应buffer中,并更新ui显示内容。 Tcp连接按钮按下会在子线程创建socket任务,等待上传任务或者再次点下按钮终止任务。上传按钮按下会将诊断信息从buffer中取出,重新组包,按字符串形式存储,之后调用先前创建的socket中send指令发出 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/caceb87e05f22c2775c946f12a7307c1.png.webp) ##4. 软件逻辑 a) Ui使用SquareLine工具设计,开机后加载ui,如下是绘制的ui效果 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/218b8636030e319face22d0bc49069b4.png.webp) b) 配置can数据波特率500kbit/s,初始化设备驱动后打开设备,创建线程不断监听can信息 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/1812dfa0d04e94aee2374a21364f35d4.png.webp) 子线程中通过阻塞监听信号量,而信号量是由can收到数据中断发出信号量,配置驱动中Every Message触发can中断,再读取can数据解析打印出来。 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/f7b4af10672cbbf71ea49bc757e8bc8c.png.webp) 开机后点击按钮,可以看到can接受线程打印的log,can发送接受数据正常 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/53b16e01ec831cdc88167701810411b4.png.webp) c) Wifi使用板子上rw007模块,使能ifconfig等工具方便调试,在加载ui后配置了wifi名字和密码3次请求连接 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/197a496acf565e3def9c59fab2d4fb8f.png.webp) 复位开机后串口中也可以看到wifi连接是成功的 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/9c7e45886c2943a51d9478e8701d24dd.png.webp) d) Can诊断统一封装到can_port_req_uds_cmd接口请求和第四个参数为返回结构体指针,void*类型可按个人需求封装数据结构,最终返回了id,len长度以及data指针,最终数据按对应格式调整显示 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/8db5132a15560db40b9ffa2de0e261ac.png.webp) e) Tcp客户端在按钮connect点击后创建新线程连接,连接后保持等待,直到提交数据按钮按下时 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/73ee24a7c3c136e5529f2e1c33a12e71.png.webp) 诊断到的信息打包成对应格式按字符串方式传递,通过socket实例发送出去给服务器端 ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/35c22b3520ab132dd51a59ad81a82163.png.webp) 通过tcp上位机监听和串口打印信息,可以看到诊断信息上传ok ![screenshot_undefined](undefined) ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230910/ca0ad84326f6ca682855d059786c6f8a.png.webp) ##5. 代码路径: Ui的代码以及工程代码上传gitee中管控,如下是代码路径: Lvgl工程代码:https://gitee.com/qinglong0215/lvgl-can-gui.git HMI工程代码:https://gitee.com/qinglong0215/hmi-ra6-m3-v1.1.0.git ##6. 操作视频 测试视频连接:https://www.bilibili.com/video/BV1ph4y1v7eu
3
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
小手凉凉
这家伙很懒,什么也没写!
文章
7
回答
2
被采纳
0
关注TA
发私信
相关文章
1
我也来传一个CANOpen移植,RTT+STM32F107+CanOpenNode
2
谁有STM32裸跑的CANopen程序啊???
3
CAN驱动程序框架
4
CAN驱动接口如何规范一下
5
RTT无法进入线程.Cannot access Memory
6
编译提示arm-none-eabi/bin/ld: cannot find crt0.o: No such file o
7
rtt 2.1.0 正式版 mdk4 bsp/stm32 编译canapp.c错误
8
STM32F10XCAN驱动使用的问题
9
2.1版本stm32f10x分支bxcan驱动波特率设置的bug
10
rtthread2.1.0下,找不到can1设备
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
freemodbus
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
rt_mq_消息队列_msg_queue
SFUD
keil_MDK
msh
ulog
C++_cpp
MicroPython
本月问答贡献
踩姑娘的小蘑菇
7
个答案
2
次被采纳
a1012112796
18
个答案
1
次被采纳
红枫
5
个答案
1
次被采纳
Ryan_CW
5
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
本月文章贡献
YZRD
3
篇文章
6
次点赞
catcatbing
3
篇文章
6
次点赞
lizimu
2
篇文章
11
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部