0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于AB32VG1开发板的设备温度检测

jf_13982707 来源:jf_13982707 作者:jf_13982707 2022-02-18 11:25 次阅读

基于RT-Thread 的Sensor框架对应的软件包max6675,通过AB32VG1开发板模拟spi驱动,读取热电偶传感器的数据,并通过串口输出,到串口屏显示图形。

非常感谢这次大赛主办方睿赛德,中科蓝讯,elecfan,为我们提供了很好的软件硬件平台,学习到基于嵌入式系统开发技术,提升一下技能,为今后的工作积累经验。同时深深感受到,我们国产软件硬件系统在崛起了!

AB32VG1开发板,用GPIO模拟spi接口,接到温度传感器模块

温度传感器模块MAX6675,采用spi数据接口和开发板通讯,三根信号线so,cs,sck分别接到MISO,CS,SCLK,电源VCC,GND,+,-接到热电偶传感器

串口屏(构成:TFT显示屏,spi接口连接到ESP32开发板),通过串口连接到AB32VG1,接收并图形化显示传感器数据图表

1、软件构成:rtthread开发环境,sensor软件包,max6675软件包,Arduino编译器,littleVGL图形界面,vscode编辑器。

2、驱动:rtthread硬件设备驱动框架,rtthread硬件管理系统,spi驱动,uart模块,msh模块,downloader下载

3、线程:rtthread线程保障实时传感器数据采集,信号量实现同步串口发送数据,互斥量保护传感器数据集正确性

4、spi接口说明:非常感谢大神提供的drvsoftspi,让AB32VG1实现可以定制gpio为spi接口,

通过SOFT_SPI1_BUS_CONFIG结构体,设置miso=10,mosi=8,sck=9,将相应编号的io点连线到传感器模块的so->10,clk->9,cs->19,板级初始化 实现spi0设备总线,

max6675_init(const char *spi_device_name)中rt_soft_spi_device_attach("spi0","spi10",RT_NULL,19)将传感器设备挂载到spi0总线,片选cs=19,成为设备spi10,

rt_spi_configure(dev->spi, &cfg); //配置传输模式,设置spi10设备读写时序逻辑,cpol=1,cpha=0,datawidth=16。

5、代码仓库:https://gitee.com/alphasu1109/max6675_temp

基于AB32VG1开发板的设备温度检测
基于AB32VG1开发板的设备温度检测

数据显示线程,1秒定时,周期性读取sensor数据,存入全局变量temp1,释放信号量rxsem,同步串口发送数据

if (sensor_data.data.temp >= 0)

{

rt_kprintf("temp:%3d.%dC, timestamp:%5d\n",

sensor_data.data.temp / 100,

sensor_data.data.temp % 100,

sensor_data.timestamp);

}

else

{

rt_kprintf("temp:-%2d.%dC, timestamp:%5d\n",

abs(sensor_data.data.temp / 100),

abs(sensor_data.data.temp % 100),

sensor_data.timestamp);

}

temp1=sensor_data.data.temp;

//temp1=5;

rt_sem_release(&rx_sem);

遇到的坑:1,找不到max6675_read_temp(),原因是drvsoftspi.c没有被编译,通过勾选setting组建spi,并修改同级目录中sconscript文件,增加编译条件后解决。

2.挂载以后,通过list_device,能看到spi10,但是读取数据总是0,原因是没有设置时序逻辑,spi初始值datawidth是8,cpol和cpha都是0,经过检查max6675数据手册,重新修改配置后,成功读取数据。

3.include "spi.h" 编译报错,找不到,没有包含在include文件夹内,经过检查"rt_thread/components/drivers/include"文件夹,存在"rtdevice.h"文件,里面含有spi.h加载过程,#ifdef RT_USING_SPI #include "spi.h" #endif, 因此改为#include "rtdevice.h"

1、软件构成:rtthread开发环境,sensor软件包,max6675软件包,Arduino编译器,littleVGL图形界面,vscode编辑器。

2、驱动:rtthread硬件设备驱动框架,rtthread硬件管理系统,spi驱动,uart模块,msh模块,downloader下载器

3、线程:rtthread线程保障实时传感器数据采集,信号量实现同步串口发送数据,互斥量保护传感器数据集正确性

4、spi接口说明:非常感谢大神提供的drvsoftspi,让AB32VG1实现可以定制gpio为spi接口,

通过SOFT_SPI1_BUS_CONFIG结构体,设置miso=10,mosi=8,sck=9,将相应编号的io点连线到传感器模块的so->10,clk->9,cs->19,板级初始化 实现spi0设备总线,

max6675_init(const char *spi_device_name)中rt_soft_spi_device_attach("spi0","spi10",RT_NULL,19)将传感器设备挂载到spi0总线,片选cs=19,成为设备spi10,

rt_spi_configure(dev->spi, &cfg); //配置传输模式,设置spi10设备读写时序逻辑,cpol=1,cpha=0,datawidth=16。

5、代码仓库:https://gitee.com/alphasu1109/max6675_temp

基于AB32VG1开发板的设备温度检测
基于AB32VG1开发板的设备温度检测

数据显示线程,1秒定时,周期性读取sensor数据,存入全局变量temp1,释放信号量rxsem,同步串口发送数据

if (sensor_data.data.temp >= 0)

{

rt_kprintf("temp:%3d.%dC, timestamp:%5d\n",

sensor_data.data.temp / 100,

sensor_data.data.temp % 100,

sensor_data.timestamp);

}

else

{

rt_kprintf("temp:-%2d.%dC, timestamp:%5d\n",

abs(sensor_data.data.temp / 100),

abs(sensor_data.data.temp % 100),

sensor_data.timestamp);

}

temp1=sensor_data.data.temp;

//temp1=5;

rt_sem_release(&rx_sem);

遇到的坑:1,找不到max6675_read_temp(),原因是drvsoftspi.c没有被编译,通过勾选setting组建spi,并修改同级目录中sconscript文件,增加编译条件后解决。

2.挂载以后,通过list_device,能看到spi10,但是读取数据总是0,原因是没有设置时序逻辑,spi初始值datawidth是8,cpol和cpha都是0,经过检查max6675数据手册,重新修改配置后,成功读取数据。

3.include "spi.h" 编译报错,找不到,没有包含在include文件夹内,经过检查"rt_thread/components/drivers/include"文件夹,存在"rtdevice.h"文件,里面含有spi.h加载过程,#ifdef RT_USING_SPI #include "spi.h" #endif, 因此改为#include "rtdevice.h"

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 设备
    +关注

    关注

    2

    文章

    4172

    浏览量

    69260
  • 检测
    +关注

    关注

    5

    文章

    4083

    浏览量

    90745
  • 开发板
    +关注

    关注

    25

    文章

    4429

    浏览量

    93993
收藏 人收藏

    评论

    相关推荐

    使用STM32L4R9单片机开发板,DfuSeDemo无法检测设备的原因?

    使用STM32L4R9单片机开发板,官方例程STM32Cube_FW_L4_V1.16.0Projects32L4R9IDISCOVERYApplicationsUSB_DeviceDFU_Standalone 实现USB的IAP,下载完DFU程序后,DfuSeDemo无法检测
    发表于 04-09 07:59

    【米尔-全志T113-i开发板试用】米尔-全志T113-i开发板与modbus设备的连接和操作

    继前面开发环境设置和libmodbus库的移植后,本文主要介绍通过米尔-全志T113-i开发板实现与modbus设备的连接和操作。 一、设备简介 刚好手头有个modbus
    发表于 03-21 19:39

    鸿蒙设备-开发板基础学习(BearPi-HM Micro)

    theme: minimalism 每当学习一门新的编程语言或者上手一款新的开发板,在学习鸿蒙设备开发过程中,带大家写的第一个程序,通过这个程序,我们可以对鸿蒙设备
    发表于 01-08 21:54

    【ELF 1开发板试用】板载资源测试4:体验温湿度传感器

    的基本命令。四、实验设备和工具1、PC机/笔记本电脑1台,安装并配置好飞凌嵌入式ELF1开发板要求的软件环境(本次测试未用到虚拟机)。2、飞
    发表于 12-18 11:09

    【ELF 1开发板试用】板载资源测试2:体验六轴传感器

    USB口、LED等电路基础知识。3、知晓Linux常用的基本命令。四、实验设备和工具1、PC机/笔记本电脑1台,安装并配置好飞凌嵌入式ELF1开发板
    发表于 12-15 00:02

    【ELF 1开发板试用】+传感器检测

    的操作如图3所示,其中hum 是湿度值,temp是温度值。 图3 读取温湿度 2.六轴传感器检测 ELF1 开发板所配置的六轴传感器为ICM20607,其位置如图4所示。 图4六轴
    发表于 11-29 11:59

    【ELF 1开发板试用】开箱检测

    【ELF 1开发板试用】开箱检测 有人说:开箱验货很简单!我的观点是:开箱验货也要“有要求,走流程”!以下是开箱检测过程记录。 一、确定开箱检测
    发表于 11-24 11:29

    【ELF 1开发板试用】+常用接口功能测试

    时间 设置系统时间到 RTC 芯片,再读取 RTC时间的操作如图8所示: 图8 更新RTC时间 3.温度检测 ELF1 开发板提供CPU的结温测试功能,其
    发表于 11-21 23:57

    【ELF 1开发板试用】+ RGB LED及按键的控制

    在GPIO的输入设备中,最常用的便是按键。在ELF 1开发板上,自然也短不了它,其在开发板上的位置如图6所示,共有3个,分别为K1、K2及
    发表于 11-21 11:11

    开发板的工作温度在什么范围?

    一般开发板工作温度在什么范围啊
    发表于 11-08 08:15

    #fpga开发板 Lattic-mipi开发板

    FPGA开发板
    明德扬科技
    发布于 :2023年10月25日 18:01:23

    OpenHarmony开发板汇总

    海思Phoenix 开发板(Hi3751V351)标准系统:鸿诚志远HCPAD-100(RK3568)标准系统:DAYU110(SL8541E)标准系统:全志T507EVB_OH1标准系统:OSWare
    发表于 10-19 11:27

    K210开发板部署到开发板上后,会提示“Out of Memory”无法完成检测任务如何解决?

    您好,我想问一下嘉楠官方有没有出一套基于K210开发板进行目标检测的训练流程呢?我想训练自己的数据集并部署到亚博智能K210开发板上,在网络上找到的yolo-for-k210项目所训练
    发表于 09-14 08:35

    【社区工程师专题系列第二期】电子工程师需要在参赛中历练成长——林宏华

    开发板的语音播放功能; 3、基于Node-Red的串口功能与AB32VG1通讯; 4、连接腾讯云的Explorer平台; 5、腾讯连连公众号接收云平报警信息; 6、门窗检测开关。 硬件说明 因为官方提供了
    发表于 06-13 15:26