回复
梅科尔工作室-IoT-南向开发第五次培训笔记
张aaaa呐呐
发布于 2023-9-1 18:29
浏览
0收藏
ADC学习
dcRead()
unsigned int AdcRead (WifiIotAdcChannelIndex channel, unsigned short * data, WifiIotAdcEquModelSel equModel, WifiIotAdcCurBais curBais, unsigned short rstCnt )
描述:
根据输入参数从指定的ADC通道读取一段采样数据
参数:
名字 | 描述 |
---|---|
channel | 表示ADC通道. |
data | 表示指向存储读取数据的地址的指针 |
equModel | 表示平均算法的次数 |
curBais | 表示模拟功率控制模式 |
rstCnt | 指示从重置到转换开始的时间计数。一次计数等于334纳秒。值的范围必须从0到0xFF |
硬件设计
本案例将使用板载用户按键F1来模拟GPIO口电压的变化。通过查看芯片手册可知GPIO_11对应的是 ADC Channel 5 ,所以需要编写软件去读取ADC Channel 5的电压,程序设计时先将GPIO_11上拉,使GPIO_11的电压一直处于高电平,当按键按下时GPIO_11接地,此时GPIO_11的电压变为 0 V。
软件设计
主要代码分析
该函数通过使用AdcRead()函数来读取 ADC_CHANNEL_5 的数值存储在data中, WIFI_IOT_ADC_EQU_MODEL_8 表示8次平均算法模式,WIFI_IOT_ADC_CUR_BAIS_DEFAULT 表示默认的自动识别模式,最后通过 data * 1.8 * 4 / 4096.0 计算出实际的电压值。
static float GetVoltage(void)
{
unsigned int ret;
unsigned short data;
ret = AdcRead(WIFI_IOT_ADC_CHANNEL_5, &data,
WIFI_IOT_ADC_EQU_MODEL_8, WIFI_IOT_ADC_CUR_BAIS_DEFAULT, 0xff);
if (ret != WIFI_IOT_SUCCESS)
{
printf("ADC Read Fail\n");
}
return (float)data * 1.8 * 4 / 4096.0; /* data * 1.8 * 4 / 4096.0:
Convert code into voltage */
}
运行结果
示例代码编译烧录代码后,按下开发板的RESET按键,通过串口助手查看日志,当F1按键未按下时采集到的电压为3.3V左右,当按键按下时,电压变为0.2V左右。
=======================================
*************ADC_example***********
=======================================
vlt:3.371V
=======================================
*************ADC_example***********
=======================================
vlt:3.371V
=======================================
*************ADC_example***********
=======================================
vlt:3.373V
=======================================
*************ADC_example***********
=======================================
vlt:0.248V
=======================================
*************ADC_example***********
=======================================
vlt:0.244V
弯曲传感器学习笔记:
弯曲传感器:
折弯弯曲传感器,它的电阻值就会上升,那么flex_value的值就会越来越小。
涉及到 上下拉电阻:
电源至元器件引脚上的电阻称为上拉电阻,作用是平时使该引脚为高电平;地至元器件引脚上的电阻称为下拉电阻,作用是平时使该引脚为低电平。低电平在IC内部与GND相连,高电平在IC内部与大电阻相连。
分类
标签
已于2023-9-1 18:29:50修改
赞
收藏
回复
相关推荐