基于MM32F0140实现车速监视抬头显示并整数速度播报
基于MM32F0140实现车速监视抬头显示并整数速度播报,板上设有JLink、CAN接口,以及做了一部分USB转串口电路,外加一块1.8寸LCD屏幕。
标签
PCB设计
WeDesign
MrLeekon
更新2023-06-07
324
https://www.bilibili.com/video/BV1tX4y1y7y3/?share_source=copy_web&vd_source=0bbe0b31caff885ce2736fcfcfe251ba

目标

  • 按照MM32F0140手册设计原理图
  • 按原理图画PCB
  • PCB打板
  • 驱动LCD
  • 从汽车OBD接口的CAN总线中获取数据显示
  • 整数时速播报

感受

  • 优点
    • 从整体上来说,MM32的SDK还是很舒服的,特别从MindSDK网页中下载单个的Demo,结构简单,容易上手。
    • MM32F0140用的LQFP宽的引脚封装,手工焊接没有任何难度
    • MM32F0140芯片手册有中文的,小白上手简单
      • 直接拿到DataSheet后,就能直接画板子了,资源描述清晰
      • 编程的时候直接拿到SDK就能用,SDK的网页也是说明清晰
      • 在SDK不能达到需求时,看用户手册,也是中文的,容易找到需要的
  • 缺点
    • MM32F0140的HAL库中,没有关于SysTick的初始化,有一点不怎么会,但因为都是ARM核,直接把STM32的拷过来改改也能跑,问题不大
    • 关于CAN的开发,没有深入的介绍,无从下手,这是我的问题

项目介绍

    本次活动采用的灵动MM32F0140芯片设计的车速监视抬头显示,主要是为了实现显示车速的功能,该设计中包含CAN总线的驱动(从汽车OBD上读取车速信息)、UART串口(用于调试及打印CAN总线信息)、SPI通讯的LCD屏幕(主体目标显示)。    

    这个项目首先需要通过PCB设计,打板并焊接成PCBA。PCB需要包括连接LCD的部分电路和连接汽车OBD接口的CAN总线适配器电路。

    然后,该项目的主要功能是从汽车 OBD 接口的 CAN 总线中获取数据并通过 LCD 显示出来。需要使用特殊的 OBD-II 接口适配器来将汽车 OBD 接口的 CAN 总线转换为 MM32F0140 可以理解的信号。通过配置 MM32F0140 来读取这些数据,然后将它们格式化显示在 LCD 上。

    为了实现整数时速播报,需要将从 OBD 接口获取的速度数据进行四舍五入处理,并将结果以整数的形式显示在 LCD 上。为了实现这个功能,需要编写特定的代码来将浮点数格式化为整数,然后将它们显示在 LCD 上。

    当CAN总线上有消息时, MM32F0140 会读取并处理数据,并将其显示在LCD上。MM32F0140 会以一定的时间间隔从CAN总线上读取速度数据,并将其显示在LCD上。速度数据的预期格式可能与实际的CAN消息格式不匹配,因此需要解析CAN消息并提取感兴趣的数据位,以便对速度进行正确的解释和显示。

    最终,用户将得到一个车用速度计,可以从汽车的OBD接口中读取数据,并将其整数速度显示在LCD上。这种设备可以在车辆的内部安装,为驾驶员提供一个快速、准确、易于读取的速度测量工具。

    为了方便调试,还加了 USB 转串口芯片CH343P,调试信息直接通过串口打印,同时方便后续加上命令行时交互。

项目设计思路

    主要将上诉的一些需求满足,对于USB转串口的电路直接通过CH343的手册获得;对于LCD的电路,可以通过淘宝上一些商品描述中的资料,拿到相应的原理图设计;至于CAN部分,是直接从官方的资料中拿到的,上网买对应的IC即可。

画原理图、PCB制板过程中遇到的问题,以及解决方法

    画原理图,主要依靠着复制粘贴,打板前要记得用DRC检测。这个项目中,在绘制原理图部分,还是相对简单,但是是第一次使用KiCad,多少有些不熟悉,硬禾学堂上有不少关于KiCad的教程,基本可以满足大部分需求,对于该项目同期的KiCad 7.0视频,可能对一些入门的描述不够,需要通过其它视频补充。因为不熟悉,基本封装和符号我都是从立创上转过来的,通过LCkiconverter插件,插件对于KiCad 7.0可能兼容性不好,可能旧的会好些,但我没有试过,主要表现在,插件中可以同时输出多个符号和封装的包,但是实际上KiCad 7.0只能导入到一个,所以每个符号都导出了一次,会有点繁琐。除了符号和封装外,这个不太熟,其余大部分,能通过复制粘贴就不自己画,导致后面有个问题,就是PCB布局的时候,过孔太多,太多干涉的,这部分如果在原理图设计中做好规划,那会好很多。其实主要的问题还是在LCD的线的问题。解决的办法就是细心,慢慢走线,起码打出来的板目前来说是能跑的。

实现结果展示

    由于板载了CH343 USB转串口进行修改,能实现串口打印的功能;其次移植了中景源的LCD驱动代码,目前还没驱动起来,仅让屏幕亮了。

    下面就是根据MM32F0140设计出来的板子了

pCSXSl4.jpg

 

在芯片设计过程中,遇到什么难题以及解决方法,或未来针对这个芯片的扩展项目

    目前主要CAN总线部分和LCD驱动部分仍没有完成,而且代码上全是测试移植的代码,相对来说没有做分层,有点乱糟糟的。未来有时间应该还是会想办法实现从CAN里面读取数据,或许加上个实时操作系统,实现车辆信息显示的功能。

    对于涉及串口打印,或者需要使用字库,但是乱码,解决方法:用记事本将C文件和H文件另存为文件ANSI格式的文件,并且将Keil的编码方式改成GB2312,重新编译下载即可解决。但这个还不是很好的方式,看看以后还有没有其他方式。

    目前这块板子,本身想增加一个播报芯片或者使用PCM+DAC+功放实现一个播报的,但是最后画的时候忘了,所以也没增加。

芯片的优势与局限

    总的来说,我还没有完全使用全MM32F0140的外设,如果要说局限的话,我会希望有USB。

软硬件
电路图
附件下载
MM32F0144_CAN_Project.zip
KiCad工程
MM32F0140_Template.zip
测试代码
团队介绍
一个小菜鸡
团队成员
MrLeekon
评论
0 / 100
查看更多
目录
硬禾服务号
关注最新动态
0512-67862536
info@eetree.cn
江苏省苏州市苏州工业园区新平街388号腾飞创新园A2幢815室
苏州硬禾信息科技有限公司
Copyright © 2023 苏州硬禾信息科技有限公司 All Rights Reserved 苏ICP备19040198号