摘要:聯盛德開發板試用評測系列之二功能使用與測試作者大信今天著手對開發板功能做測試,都知道在物聯網應用場景中常需要用到的一個重要技術。
聯盛德W806-KIT開發板試用評測系列
之二:ADC 功能使用與測試
作者:大信
今天著手對W806開發板ADC功能做測試,都知道ADC在物聯網應用場景中常需要用到的一個重要技術。W806手冊說這款芯片支持片內ADC,介紹是這樣的:
片內集成 4 路 16 比特 ADC,最高采樣率 1KHz。ADC基于Sigma-Delta ADC 的采集模塊,完成最多 4 路模擬信號的采集,采樣率通過外部輸入時鐘控制,可采集輸入電壓,也可采集芯片溫度,支持輸入校準和溫度補償校準。
其管腳定義如下:
管腳 ??IO口名稱 ??功能 上下拉能力
19???? PA_1?? ADC_1 ???UP/DOWN
20???? PA_2 ??ADC_4??? UP/DOWN
21???? PA_3 ??ADC_3 ???UP/DOWN
22???? PA_4 ??ADC_2 ???UP/DOWN
電路設計參考如下:
芯片 19~21 腳可以作為普通 ADC 使用,輸入電壓范圍 0~2.4V。當高于 2.4V 時外部需做分壓處理后才 可進入 ADC 接口。為提高精度,R1 和 R2 需使用高精度電阻。根據 Sensor 輸出電壓值選擇合適的 R1,R2 電阻值分壓。如圖 3-3 所示。
?
?圖 1 ADC 分壓電路設計參考
這在很多MCU里還是少見的,不禁心生喜歡,馬上動手來測試一下,看看芯片集成的ADC功能性能如何。
從項目工程DEMO目錄下,找到adc目錄,在Sky-CDK的項目視圖里加入該工程,工程代碼如下:
#include
#include "wm_hal.h"
void Error_Handler(void);
static void ADC_Init(void);
ADC_HandleTypeDef hadc;
int main(void)
{
int value;
SystemClock_Config(CPU_CLK_160M);
printf("enter main/r/n");
ADC_Init();
while (1) {
??? value = HAL_ADC_GET_INPUT_VOLTAGE(&hadc);
??? //hadc.offset=-1;
??? printf("value = %dmv/r/n", value);
??? HAL_Delay(500);
}
}
static void ADC_Init(void){
hadc.Instance = ADC;
hadc.Init.channel = ADC_CHANNEL_0;
hadc.Init.freq = 1000;
if (HAL_ADC_Init(&hadc) != HAL_OK)? {
??? Error_Handler();
}
}
void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* hadc){
}
void Error_Handler(void){
while (1)
{}
}
void assert_failed(uint8_t *file, uint32_t line)
{
printf("Wrong parameters value: file %s on line %d/r/n", file, line);
}
代碼總體非常簡單明了。設置完芯片主屏后,直接初始化ADC,然后進入循環,讀取ADC的輸出數值,其中ADC的各函數句柄結構如下:
typedef struct __ADC_HandleTypeDef{
ADC_TypeDef?????????????????? *Instance;
ADC_InitTypeDef?????? ????????Init;
HAL_LockTypeDef?????????????? Lock;
int????????? ? ? ?????? ?????offset;
}ADC_HandleTypeDef;
編譯后,燒寫fls文件到開發板里。然后板上連接如下圖的連線,第一次將PA1直接接入地,此時ADC1輸入電壓應該為0.
圖 2 ADC 測試接線圖一
從串口收到實際的數據,如下:
?圖 3 ADC 測試PA1直接接地時輸出的數值
可見數據基本上穩定在 -64mv,其中有個別數據出現偏差,不是因為ADC穩定性的問題,而是因為硬件接線,是把導線直接插而不是焊接在開發板的接口孔里,接觸不穩定造成。
這里吐槽一下,既然提供開發板為何不附帶送一下排針,排針不焊接可以理解,但是沒有排針導致無法插入杜邦線使用,手邊又沒有排針,還不得不另外網購排針去。而購買排針的郵費又可以購買一塊W806開發板了,暈!。
這個偏差測試幾次后,它的讀數基本是固定的值,那么就可以把它看成是初始的偏差,在后面的測量種進行修正即可,即測量的值減去這哥偏差。期間在幾塊W806都測試一下初始偏差值,發現不同的板子并不一樣,初始偏差分別? -60mv ~ +50mv左右。
在測試完對地的初始偏差后,可以測量目標電壓,這里拿一節新的5號電池做測試,電池正極接PA1,負極接板上的GND。此時可以從串口得到如下的數據:
圖 4 ADC 測試PA1接5號電池時輸出的數值
測試該電池直接讀數為: 1576mv,根據前面的修正方法,減去初始偏差 -64mv.得到被測電壓為:1576-(-64)=1640mv.
為做對比,使用三位半精度數字萬用表電壓檔測試該5號電池,讀數為1609mv。則可以算出,以此萬用表為基準的誤差率:
(1640-1609)/1609 x100% = 1.9%
圖 5 使用萬用表測量5號電池的數值
?總結,本次簡單的測試,初步的測試W806的ADC的電壓測量效果,比較精確。因為沒有精密調壓電壓,沒有對個點的電壓測量。但其它網友對其線性度進行過測量,并繪制了擬合線,從測量誤差標準方差分析,其誤差小于<5%。同時本次測試也沒有對溫漂進行測試,以及高頻采樣下的ADC的精度情況。但從一般的消費領域的應用場景來看,已經可以滿足需求。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/124723.html
摘要:大信刷抖音時,偶然蹦出了聯盛德物聯開發板這個廣告。板子做的很精致,毫米厚的板子,平滑的板邊緣,亮紫色和鍍金的過孔透露著高檔品質,同時收到售后支持的加好友,在售后支持指導下加入了聯盛德官方的開發群里,開始了開發測試工作。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ...
摘要:復位系列芯片的復位可使用管腳。這個和保存代碼的是不一樣的,計劃使用。 記錄一下第一次使用立創EDA第一次設計ESP-C3的開發板(這幾天工作有點忙,稍等) 目錄 ...
摘要:元旦宅在家里,剛好收到了寄來的開發板,激動的去公司拿回快遞,動手拆拆拆。看了幾篇其他人的評測,感覺需要從另一個角度來看這塊開發板,那就先從優雅的角度看吧。接口插上耳機開發套件默認不配備揚聲器,可以聽到開發套件的語音反饋。 元旦宅在家chuang里shang,剛好收到了Rokid寄來的開發板,激動的去公司拿回快遞,動手拆拆拆。 先簡單做個自我介紹吧,我是工科測控專業畢業,還沒畢業就一直在...
摘要:產品概述是我司傾力打造的一款基于全志雙核處理器的高性能核心板,可廣泛應用于智能家居工業顯示語控設備醫療電子等產品。 產品概述 ? ?R5是我司傾力打造的一款基于全志R528-S3A雙核處理器的高性能Linux核心板,可廣泛應用于智能家居、工業顯示、語控設備、醫療電子等產品。 ? 核心板體積小...
摘要:硬件,串口模塊軟件,串口助理,硬件基本介紹是經過阿里云團隊認證的高性能視覺開發板。與電腦怎樣連線板子上有兩個接口,如果我們要按照阿里云的官方文檔來跑第一個程序,需要將距離針引腳近的那一個與電腦連接。 摘要:HaaS700是一款帶攝像頭的開發板,帶有物聯網功能,可以通過python輕應用來開發...
閱讀 2167·2021-11-24 09:39
閱讀 2780·2021-07-29 13:49
閱讀 2321·2019-08-29 14:15
閱讀 2232·2019-08-29 12:40
閱讀 3311·2019-08-26 13:42
閱讀 631·2019-08-26 12:13
閱讀 2064·2019-08-26 11:41
閱讀 3344·2019-08-23 18:32