OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3172|回复: 1

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

[复制链接]

28

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-2-23
在线时间
37 小时
发表于 2018-3-13 18:11:04 | 显示全部楼层 |阅读模式
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
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

28

主题

86

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
317
金钱
317
注册时间
2018-2-23
在线时间
37 小时
 楼主| 发表于 2018-3-13 18:11:41 | 显示全部楼层
第十五章 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所示:
2.JPG
图15.4.1 W7500EVB ADC试验结果
将 ADC 通道1和MH Sensor Senies模块连接在一起,可以看到MH Sensor Senies模块采集到周围的光照程度。

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 21:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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