查看:
2090
|
回复:
1
|
M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(14)--实战...
|
|
WSGustin
29
主题
48
回复 |
发表于2018-03-13 17:48:46
|
显示全部楼层
1#
电梯直达
|
|
WSGustin
29
主题
48
回复 |
发表于2018-03-13 18:01:26
|
显示全部楼层
2#
第十五章 ADC试验本章将向大家介绍 W7500 的 ADC 功能。本章,将利用 W7500 ADC的通道 1 来采样,并在 OLED 模块上显示出来。 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 通道模拟输入 u 模数转换可以由软件启用,每次触发都会对选定的输入进行转换,模数转换结束后会产生中断。 ADC的操作 1、 ADC 在运行前需要进行初始化,初始化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, 可以看到代码如下: 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); } } 15.4 下载试验在代码编译成功之后,下载代码到 W7500EVB 开发板上,可以看到OLED 显示,如图15.4.1所示:
图15.4.1 W7500EVB ADC试验结果 将 ADC 通道1和MH Sensor Senies模块连接在一起,可以看到MH Sensor Senies模块采集到周围的光照程度。 |
|