野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 7703|回复: 1

M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(14)--实战篇

[复制链接]
发表于 2018-3-13 18:12:32 | 显示全部楼层 |阅读模式
W7500(W7500P)芯片简介:
W7500 芯片为工业级以太网单芯片解决方案, 集成 ARM Cortex-M0,128KB Flash 及全硬件TCP/IP 核(和W5500、W5100内核一致),特别适用于物联网领域。 使用 W7500EVB, 让您轻松完成原型开发。

本章将向大家介绍 W7500 的 ADC 功能。本章,将利用 W7500 ADC的通道 1 来采样,并在 OLED 模块上显示出来。

想了解更多关于WIZnet W7500更多信息,或者有技术问题请联系我们:gustin@wisioe.com
深圳炜世科技—WIZnet官方代理商,全程技术支持,价格绝对优势!
电话:0755-86568556
邮箱:support@wisioe.com
回复

使用道具 举报

 楼主| 发表于 2018-3-13 18:13:10 | 显示全部楼层
第十五章 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, 可以看到代码如下:
  1. int main()
  2. {
  3.    /* 炜世科技—WIZnet W7500官方代理商,全程技术支持,价格绝对优势! */  
  4.   double data;
  5.   uint8_t tmp,luminance[6] = "\0";
  6.   SystemInit();                      /* 系统内部时钟初始化 */
  7.   delay_init();                      /* 系统滴答时钟配置*/
  8.   GPIO_Configuration();              /* DHT11管脚初始化 */
  9.   SSP_Configuration();               /* SPI0配置初始化 */
  10.   OLED_Init();                       /* OLED屏配置初始化 */
  11.   ADC_Init(ADC_CH1);                 /* 初始化ADC通道1 */            
  12.   OLED_Show_Hybrid(0, 0, (uint8_t*)"炜世科技W7500EVB");

  13.   while(1)
  14.   {
  15.     ADC_Start();
  16.     data = ADC_ReadData();
  17.     data = (double)((data/4095)*100);
  18.     tmp = 100 - data;
  19.     luminance[0] = 'L';
  20.     luminance[1] = ':';
  21.     luminance[2] = tmp/10 + '0';
  22.     luminance[3] = tmp%10 + '0';
  23.     luminance[4] = '%';
  24.     luminance[5] = '\0';
  25.     OLED_Show_Hybrid(5, 40, (uint8_t*)luminance);           
  26.   }
  27. }
复制代码



15.4 下载试验
在代码编译成功之后,下载代码到 W7500EVB 开发板上,可以看到OLED 显示,如图15.4.1所示:
2.JPG
图15.4.1 W7500EVB ADC试验结果
将 ADC 通道1和MH Sensor Senies模块连接在一起,可以看到MH Sensor Senies模块采集到周围的光照程度。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-1 06:58 , Processed in 0.033020 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表