[MCU] 联盛德W806 ADC的问题

littleshrimp   2021-11-21 19:32 楼主

W806单片机已经推出有一段时间了,目前资料都只存在于民间,官网还是找不到这颗芯片的资料。

我想使用这颗芯片的ADC,打开对应的例程WM_SDK_W806\demo\adc\main.c,代码看上去比较简洁。

image.png   因为想知道HAL_ADC_GET_INPUT_VOLTAGE是如何将数据转找成对应电压的

image.png

我定位到int HAL_ADC_GET_INPUT_VOLTAGE(ADC_HandleTypeDef* hadc)看的一脸懵逼

这里的4,1000.0,1000000和1.196都不知道是哪里来的

“voltage = (double)value / 4.0 * (126363 / 1000.0) / 1000000 + 1.196;”
image.png 从网店给我的链接下载了对应的资料,在04_W806技术文档.rar里有一个W800系列寄存器.pdf,是W800不是W806,猜它们可能除了射频其它功能是一样的。

在ADC的介绍里有PGA的介绍,如果集成PGA用它来做什么就更方便了,不过问题来来,如果有PGA,在计算电压时就应该把PGA设置写到公式里,但是看公式除了value 其它都是写死的,这就比较奇怪。

“voltage = (double)value / 4.0 * (126363 / 1000.0) / 1000000 + 1.196;”

image.png

查看W806代码里的 HAL_ADC_Init函数,里边确实有PGA的配置

image.png 不过具体需要怎么配置?是通过hadc把配置传递进来看还是怎么弄我却没看懂。

主要就是这句话:

MODIFY_REG(hadc->Instance->PGA_CR, ADC_PGA_CR_BPREF | ADC_PGA_CR_GAIN | ADC_PGA_CR_BP, ADC_PGA_CR_CHOPEN | ADC_PGA_CR_PGAEN);

对应的宏定义如下,看了,没看懂,我真不知道使用库来操作寄存器为什么要去理解MODIFY_REG这个定义

image.png  我觉得厂家写的MODIFY_REG应该不需要我们去理解(读懂),但是我又不知道不理解它还有什么别的办法使用库函数来对PGA进行设置。

所以BB了半天我弄出来2个问题:

1、PGA怎么设置?

2、电压如何计算?

 

虾扯蛋,蛋扯虾,虾扯蛋扯虾

回复评论 (2)

https://h.hlktech.com/Mobile/download/fdetail/143.html

看来只有我回复虾扯蛋版主了。

点赞  2021-11-21 20:59
引用: tagetage 发表于 2021-11-21 20:59 https://h.hlktech.com/Mobile/download/fdetail/143.html 看来只有我回复虾扯蛋版主了。

感谢,看资料和我之前下载的一样,“WM_W800_寄存器手册手册”。

点赞  2021-11-22 09:06
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复