锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

基于RT-Thread的CAN温度节点设计

时间:2022-08-29 08:00:01 嵌入式传感器节点w25传感器

采用 AHT10 传感器采集温湿度数据,通过传感器采集温湿度数据 CAN 总线传输到接收端,接收端使用 W25Q128 存储温湿度数据,接收端和发送端可显示当前测量的温湿度。关键字:RT-Thread 嵌入式操作系统;温湿度测量;CAN 通信;虚拟文件系统(DFS)

  • 1 目标要求
  • 2 环境搭建
    • 2.1 构建硬件环境
    • 2.2 软件环境搭建
  • 3 硬件框架
  • 4 软件设计
    • 4.1 自定义应用层协议
    • 4.2 发送软件设计
    • 4.3 接收软件设计
  • 5 遇到的问题
  • 6 总结

1 目标要求

(1)内部占有 CAN 总线控制器 STM32 系列单片机
(2)完成 RT-Thread 移植嵌入式操作系统 CAN 本地存储总线通信和数据文件的功能。
(3)设计制作 CAN 硬件电路主要包括数字
温度传感器、液晶显示器、大容量 SPI 存储器和 CAN 接口;

2 环境搭建

2.1 构建硬件环境

表 2.1 发送端微控制器 STM32 与 AHT10、OLED12864、TJA1050 接线关系,表 2.2 接收端微控制器 STM32 与 OLED12864、W25Q128 接线关系。

在这里插入图片描述

2.2 构建软件环境

使用 RT-Thread Studio 通过配置软件 RT-Thread Settings 完成对 IIC 同时打开设置 board.h 其引脚分配设置在宏中 RT-Thread Settings 中没有 CAN 相关驱动配置,所以需要通过 STM32CubeMX 完成对 CAN 需要同时设置配置 CAN及 CAN 的时钟。然后复制生成 msp 替换原始文件 msp 文件。然后复制生成 msp 替换原始文件 msp 文件。其次,需要完成 board.c中 CAN 宏的写作,CAN 在此之前,还需要将驱动程序添加到程序中,CAN 成功启动。虚拟文件系统需要打开 DFS、POSIX 等多个组件,如需要吊载的 FLASH 为 SPI FLASH,则需要启用 Fats 组件和 SPI、SFUD 驱动。

3 硬件框架

4 软件设计

4.1 自定义应用层协议

连接: 1.按下接收端时,发送初始命令
2.停止使用接收端等待协议
3.发送端,检测命令,正确发送温湿度数据
断开连接: 接收端不在线,发送端检测到发送失败并停止发送。
2.发送端不在线,接收端每500个ms检查总线状态,发送端不在线时熄灯,按下发送初始命令等待按钮。

4.2 发送软件设计

下图显示了发送端的详细流程图,具体代码工程将在后期发送

4.3 接收软件设计

下图为接收端的详细流程图,具体代码工程将在后期发送

5 遇到的问题

在操作文件系统时,有两个问题。

第一个问题是,当文件系统被提示时There is no space to register this file system,根据在线原因和方法,当多个文件系统被挂载时,需要修改挂载文件系统的数量,但该设计只挂载了一个文件系统,并在网上显示修改后仍然提示该信息。最后,可能是RT-Thread的BUG,因为虽然提示此信息,但是文件系统可以正常使用,因此这句话可以忽略,如果不想看到这句话,可以在驱动中将其注释。

第二个问题是在存储数据时发现使用RT-Thread提供的write()函数写入数据,然后使用cat命令查看文件内容时,与写入内容不一致。目标是将读取的温湿度数据存储到FLASH因此,读取的温湿度数据需要不断存储,但需要使用cat查看命令,发现只有第一个数据存储正确,其他数据缺失。使用了解决方案POSIX接口函数用于存储数据cat命令查看文件所有内容时所看到的内容与所写内容一致,以满足所需要求。

6 总结

下图显示了接收端串口打印信息RT Thread嵌入式操作系统启动,文件系统成功挂载,温湿度测量数据成功写入W25Q128中。
发送Is命令查看程序中创建的文件的信息,可以看出文件是在根目录中创建的,文件名称test.txt, 文件中存储的数据大小为52字节。
发送cat查看文件中存储的信息,可以看到写入的信息与存储的信息一致, 文件中存储的温湿度数据为3组,以满足要求。

如下图所示,发送端的温度显示在左侧,接收端的温度和湿度显示在右侧。发送端传感器采集的温湿度数据和接收端通过CAN总线接收到的温湿度数据一致,在测试过程中,发送端和接收端的延迟较小,更好地满足了设计要求。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章