第十五章 ADC试验 本章将向大家介绍 W7500 的 ADC 功能。本章,将利用 W7500 ADC的通道 1 来采样,并在 OLED 模块上显示出来。
本章将分为如下几个部分:
15.1 W7500 ADC 简介
15.2 硬件设计
15.3 软件设计
15.4 下载验证
15.1 W7500 ADC 简介W7500 拥有1个 ADC,这个 ADC 可以独立使用,也可以使用双重模式(提高采样率)。W7500的 ADC 是 12 位逐次逼近型的模拟数字转换器。它有8个通道。各通道的 A/D 转换可以单次、连续、扫描或间断模式执行。 ADC 的结果可以左对齐或右对齐方式存储在 16 位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。 W7500的 ADC 最大的转换速率为 1Mhz,也就是转换时间为 1us(在 ADCCLK=14M,采样周期为1.5个 ADC 时钟下得到),不要让 ADC 的时钟超过 14M,否则将导致结果准确度下降。 特点 u 12 位配置分辨率 u 转换时间 : 最大 10MHz (采样时间可编译) u 8 通道模拟输入
CH0 : PC_15
CH1 : PC_14
CH2 : PC_13
CH3 : PC_12
CH4 : PC_11
CH5 : PC_10
CH6 : PC_09
CH7 : PC_08
1 通道内部 LDO(1.5v) 电压
CH15 : 内部电压 u 模数转换可以由软件启用,每次触发都会对选定的输入进行转换,模数转换结束后会产生中断。 ADC的操作 1、 ADC 在运行前需要进行初始化,初始化ADC,需先清除 PWD 位。
2、 可选 ADC 通道为 0-7 和 15 (初始内核电压)。
3、 检查 INT 位了解模数转换完成情况。
4、 如果 INT 位置高 (1), 读 ADC 转换数据。
5、 最后, ADC 操作通过设置 PWD 位结束。
图15.1.1 W7500 无中断ADC初始化流程 15.2 硬件设计本实验用到的硬件资源有: 1) OLED 屏幕 2) ADC 3) MH Sensor Senies模块 ADC 属于 W7500 内部资源,实际上只需要软件设置就可以正常工作,不过需要在外部连接其端口到被测电压上面。本章,通过ADC的通道1(P14)来读取MH Sensor Senies模块采集到的数据通过OLED屏来显示。 15.3 软件设计打开 ADC 转换实验,可以看到main.c中多了一个ADC_Init函数。相关的库函数是在 W7500x_adc.c 文件和W7500x_adc.h 文件中。 打开main.c, 可以看到代码如下: [mw_shl_code=applescript,true]int main()
{
/* 炜世科技—WIZnet W7500官方代理商,全程技术支持,价格绝对优势! */
double data;
uint8_t tmp,luminance[6] = "\0";
SystemInit(); /* 系统内部时钟初始化 */
delay_init(); /* 系统滴答时钟配置*/
GPIO_Configuration(); /* DHT11管脚初始化 */
SSP_Configuration(); /* SPI0配置初始化 */
OLED_Init(); /* OLED屏配置初始化 */
ADC_Init(ADC_CH1); /* 初始化ADC通道1 */
OLED_Show_Hybrid(0, 0, (uint8_t*)"炜世科技W7500EVB");
while(1)
{
ADC_Start();
data = ADC_ReadData();
data = (double)((data/4095)*100);
tmp = 100 - data;
luminance[0] = 'L';
luminance[1] = ':';
luminance[2] = tmp/10 + '0';
luminance[3] = tmp%10 + '0';
luminance[4] = '%';
luminance[5] = '\0';
OLED_Show_Hybrid(5, 40, (uint8_t*)luminance);
}
}[/mw_shl_code]
15.4 下载试验在代码编译成功之后,下载代码到 W7500EVB 开发板上,可以看到OLED 显示,如图15.4.1所示: 图15.4.1 W7500EVB ADC试验结果 将 ADC 通道1和MH Sensor Senies模块连接在一起,可以看到MH Sensor Senies模块采集到周围的光照程度。
|