在低功耗的藍牙系統中,電源管理的優劣為使用者帶來不同的體驗感受,也為產品帶來不同的定位,PAR2822 是原相科技的藍牙SOC,內部包含一個低功耗 10 位通用模數轉換器 (GPADC),頻率為 1MHz採樣率。
每一次測量,數據採集僅需要25us。通過切換它可以作為 10 通道通用模數轉換,其中1 個額外通道用於電池電壓檢測,而另外 10個通道用於監控GPIO0~GPIO9。為了獲得更好的精度,內部參考電壓校準是首選。該 GPADC 可應用於電池監控、溫度電阻、模擬信號採樣等傳感應用。
今天小編就要來實際使用PAR2822 內建ADC來測量單節AA電池,並透過PAR2822開發板自帶的USB->UART 口打印電池狀況看看有沒有符合預期
1.準備工具設備
a.PAR2822開發板
b.Keil 編譯環境,詳細版本請參考之前的"PAR2822 開發板 GPIO 配置筆記"一文
c.三用電表,查線路及電壓量測對照
d.杜邦線兩
e.AA電池一顆
f.電池盒(可有可無,最主要是拍照美觀固定電池不要跑來跑去的啦)
來個工具設備的大合照
2.搭建環境
上一回"PAR2822 開發板 GPIO 配置筆記"用了P0,P1,P2,
這次我們就用P3這個引腳試試看,順便回味程式內IO配置的方法吧
測試1
分別把PAR2822開發板上的P3與3V3 GND 兩個測試點用杜邦線接上分別測試看看UART打印出來的ADC值
測試2
把PAR2822開發板上的P3與AA電池的正極連接,AA電池負極與PAR2822開發板共地觀察UART打印出來的ADC值
3.程式設計
adc_st status為0代表ADC為目前沒有ready 的值
adc_st status為1代表ADC取值未完成
adc_st status為2代表ADC已經有ready的值可被打印了
void adc_irq_callback(uint32_t int_st)
觀察ADC取值狀況
void timer_callback()
一段時間來看一下如果ADC 還沒有ready的值就繼續取值,有值就打印出來
main主函式
初始化引腳UART口與設定P3為 GPADC_CH
打開DMA存放ADC值與設定TIMER1/GPADC中斷
4.實驗結果
a.
3.3V ADC 打印值
GPADC value=ADC code*3.6/1024
忽略誤差範圍以0x3ab為例
939*3.6/1024=3.3V
b.
0V ADC打印值
一個bit的跳動可忽略,套入公式為0V
c.
0.9034V AA電池 ADC 打印值
GPADC value=ADC code*3.6/1024
忽略誤差範圍以0x102為例
258*3.6/1024=0.907V與電表相比的精度用在消費型應用算很不錯的
具電壓偵測的產品讓產品不再是冷冰冰,終端使用者可以提早知道系統狀態
如提早通知用戶,電池快沒電了,預先處理等等的報警...