基于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開發板的設備溫度檢測](https://file.elecfans.com/web2/M00/1D/11/poYBAGGQdw-ACdYUAADQZR5ulHs986.png)
![基于AB32VG1開發板的設備溫度檢測](https://file.elecfans.com/web2/M00/1D/18/pYYBAGGQd42Afu24AADIQdeHpkw448.png)
數據顯示線程,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開發板的設備溫度檢測](https://file.elecfans.com/web2/M00/1D/11/poYBAGGQdw-ACdYUAADQZR5ulHs986.png)
![基于AB32VG1開發板的設備溫度檢測](https://file.elecfans.com/web2/M00/1D/18/pYYBAGGQd42Afu24AADIQdeHpkw448.png)
數據顯示線程,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文章
4546瀏覽量
70863 -
檢測
+關注
關注
5文章
4512瀏覽量
91750 -
開發板
+關注
關注
25文章
5121瀏覽量
98218
發布評論請先 登錄
相關推薦
VMware環境下,同時燒錄固件檢測不到設備如何解決?觸覺智能鴻蒙開發板演示
![VMware環境下,同時燒錄固件<b class='flag-5'>檢測</b>不到<b class='flag-5'>設備</b>如何解決?觸覺智能鴻蒙<b class='flag-5'>開發板</b>演示](https://file1.elecfans.com/web3/M00/03/03/wKgZO2djeIOALETCAAB9Fd4p_hw121.png)
正點原子fpga開發板不同型號
【干貨】性價比拉滿!HK32F407VG開發板介紹
![【干貨】性價比拉滿!HK32F407<b class='flag-5'>VG</b><b class='flag-5'>開發板</b>介紹](https://file1.elecfans.com/web2/M00/A4/0C/wKgaomUACo-Ae1rtAAB1LgQrdkg565.png)
基于OPENCV的相機捕捉視頻進行人臉檢測--米爾NXP i.MX93開發板
![基于OPENCV的相機捕捉視頻進行人臉<b class='flag-5'>檢測</b>--米爾NXP i.MX93<b class='flag-5'>開發板</b>](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
ARM開發板的功耗分析與優化
linux開發板如何編譯curl
米爾NXP i.MX 93開發板的Qt開發指南
![米爾NXP i.MX 93<b class='flag-5'>開發板</b>的Qt<b class='flag-5'>開發</b>指南](https://file.elecfans.com/web2/M00/08/64/pYYBAGDwFEGADIPWAAFlJOlmLxg664.jpg)
評論