一种简易CAN数据分析器的实现(一)【工程创建+CAN波特率计算工具】

程序实现详见《一种简易CAN数据分析器的实现(二)【程序实现】》

微信公众号关注:掌芯元器,免费为大家提供嵌入式相关的技术咨询!!!

目录

一、功能需求及实现

1、功能设计及实现

2、软硬件需求

(1)软件需求

(2)硬件模块需求

3、硬件框图

二、通过STM32CubeMX创建工程

1、点击STM32CubeMX图标打开软件;

2、点击新建工程;

3、选择MCU型号,创建相关的工程;

4、选择程序烧录方式;

5、开启外部高速时钟;

6、配置时钟树;

7、配置CAN外设参数;

8、CAN外设引脚更换;

9、CAN外设中断使能;

10、USART1外设使能及参数配置;

11、USART1外设中断使能;

12、中断优先级配置;

13、GPIO运行指示灯配置;

13、工程配置;

三、STM32_CANBaudRate工具的使用

1、工具下载

2、界面介绍

一、功能需求及实现

1、功能设计及实现

本次例程制作的简要CAN数据分析仪,主要帮助大家,在条件有限的开发环境中,自己通过常见的简单应用电路,即可实现CAN数据的监控和发送。主要功能为:通过电脑上的串口调试助手,监控CAN数据和发送CAN数据。本例程只是实现简单的CAN 标准数据帧的发送和监控,例程功能比较单一,实现也是非常简单,因此根据大家反响,决定后期是否开源全功能的CAN数据分析仪的小项目。

2、软硬件需求

(1)软件需求

①、STM32CubeMX 和 Keil 软件的使用;

②、C语言基础知识;

③、HAL库的基础掌握;

(2)硬件模块需求

①、单片机最小系统(以STM32F103CBT6为例);

②、CAN收发模块;

③、USB转串口模块;

3、硬件框图

二、通过STM32CubeMX创建工程

1、点击STM32CubeMX图标打开软件;

2、点击新建工程;

3、选择MCU型号,创建相关的工程;

4、选择程序烧录方式;

5、开启外部高速时钟;

6、配置时钟树;

7、配置CAN外设参数;

(1)CAN通信速率设置为:500Kbit/s;(这里要与你要监测的总线波特率匹配,当然波特率的设置完全可以拿出来,通过电脑直接设置,用来匹配不同的波特率匹配需求,本例程为简要例程,未带波特率实时匹配功能)

(2)CAN波特率参数配置,具体界面介绍及使用详见第2小节;

(3)发送邮箱优先级的使能:通过参考手册我们知道,CAN外设具有三个发送邮箱,我们使用邮箱对外发送数据的时候,当使能发送邮箱优先级的时候,数据的发送顺序会按照我们程序中邮箱的顺序发送;如果不使能,则按照默认的012顺序发送。

8、CAN外设引脚更换;

在外设栏使能CAN外设之后,软件自动使能默认引脚,但是与硬件原理图引脚不匹配,需要更换引脚为PB8\PB9。

操作步骤:直接点击图形界面的PB8/PB9引脚,选择CAN功能即可自动切换。

9、CAN外设中断使能;

10、USART1外设使能及参数配置;

11、USART1外设中断使能;

12、中断优先级配置;

13、GPIO运行指示灯配置;

具体GPIO的配置不具体介绍了,详见下图配置后的图形化界面显示情况。

13、工程配置;

外设相关的参数已经配置完成,最后进行工程配置即可。

三、STM32_CANBaudRate工具的使用

1、工具下载

下载链接为:https://download.csdn.net/download/zxyq_2024/89737969

2、界面介绍

①:CAN外设挂载总线的时钟频率。

从数据手册的总线框图中可以看到,CAN外设挂载在APB1总线上,回到刚才我们CubeMX配置的时钟树,APB1时钟频率为36Mhz;

②:CAN总线波特率。

③:采样点设置,与总线协议中的位时序有关,具体自己查看一下CAN协议,这里不再详解。

采样点的设置可以参考⑥中的介绍:

  • 当CAN 通信波特率大于等于 800 kbit/s 时,采样点推荐位置是在位时间段的 75%;
  • 当CAN 通信波特率大于 500 kbit/s,小于 800 kbit/s 时,采样点推荐位置是在位时间段的 80%;
  • 当CAN 通信波特率小于等于 500 kbit/s 时,采样点推荐位置是在位时间段的87.5%;

④:生成计算。

⑤:选择一个填到参数中即可,对应关系见下图。

相关推荐
FreakStudio32 分钟前
一文速通Python并行计算:09 Python多进程编程-进程之间的数据同步-基于互斥锁、递归锁、信号量、条件变量、事件和屏障
单片机·嵌入式·大学生·面向对象·多进程·技术栈·并行计算·电子diy
Rousson32 分钟前
硬件学习笔记--57 MCU相关资源介绍
笔记·单片机·mcu·学习
电子艾号哲4 小时前
Vscode开发STM32标准库
ide·vscode·stm32
双叶8365 小时前
(51单片机)LCD显示数据存储(DS1302时钟模块教学)(LCD1602教程)(独立按键教程)(延时函数教程)(I2C总线认识)(AT24C02认识)
c语言·数据库·单片机·嵌入式硬件·mongodb·51单片机·nosql
格里姆肖5 小时前
HAL库通过FATFS和SDIO+DMA写入SD卡数据错误
c语言·stm32·单片机
Vesan,5 小时前
无人机飞控运行在stm32上的RTOS实时操作系统上,而不是linux这种非实时操作系统的必要性
linux·stm32·无人机
嘿,二极管6 小时前
硬件工程师面试常见问题(4)
单片机·嵌入式硬件
哄娃睡觉6 小时前
独立ADC和MCU中ADC模块的区别
stm32
易知嵌入式小菜鸡6 小时前
STM32CubeMX-H7-15-SPI通信协议读写W25Q64
stm32·嵌入式硬件·fpga开发
wenchm6 小时前
细说STM32单片机FreeRTOS任务管理API函数vTaskList()的使用方法
c语言·c++·stm32·单片机·嵌入式硬件