PAR2822 ADC的模拟量测


在低功耗的蓝牙系统中,电源管理的优劣为使用者带来不同的体验感受,也为产品带来不同的定位,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.杜邦线*2
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与电表相比的精度用在消费型应用算很不错的



具电压侦测的产品让产品不再是冷冰冰,终端使用者可以提早知道系统状态
如提早通知用户,电池快没电了,预先处理等等的报警……

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★博文作者未开放评论功能