查看: 1281  |  回复: 1
M0+MAC+TCP/IP 以太网单芯片方案 W7500EVB用户手册连载(9)--实战篇
WSGustin
29
主题
48
回复
发表于2018-03-07 18:05:27 | 只看该作者
1# 电梯直达
W7500(W7500P)芯片简介: 
W7500 芯片为工业级以太网单芯片解决方案, 集成 ARM Cortex-M0,128KB Flash 及全硬件TCP/IP 核(和W5500、W5100内核一致),特别适用于物联网领域。 使用 W7500EVB, 让您轻松完成原型开发。

全硬件TCP/IP核的最大优点是他在执行联网操作时不需要占用MCU的运行资源,大大增加了MCU的工作效率。

上一章,介绍了 W7500 的 PWM 输出模式的使用方法,这一章,将向大家介绍W7500  PWM 输入捕获模式的使用。在本章中,将PWM作为输入捕获模式,另外在初始化PA10引脚,PA10引脚不断的改变自身的电平,利用PWM的捕获功能来捕获该引脚。

想了解更多关于WIZnet W7500更多信息,或者有技术问题请联系我们:gustin@wisioe.com
深圳炜世科技—WIZnet官方代理商,全程技术支持,价格绝对优势!
电话:0755-86568556
邮箱:support@wisioe.com
WSGustin
29
主题
48
回复
发表于2018-03-07 18:09:55   |  只看该作者
2#

第十章 PWM输入捕获试验

上一章,介绍了 W7500 PWM 输出模式的使用方法,这一章,将向大家介绍W7500 PWM 输入捕获模式的使用。在本章中,将PWM作为输入捕获模式,另外在初始化PA10引脚,PA10引脚不断的改变自身的电平,利用PWM的捕获功能来捕获该引脚。
章分为如下几个部分:
10.1
输入捕获简介
10.2
硬件设计
10.3
软件设计
10.4
下载验证


10.1 输入捕获简介

当外部输入信号改变时,PWM就会捕获该通道定时器的值。 该通道可以选择在上升沿捕获或下降沿捕获的方式。如果捕获中断被启用,当外部输入信号被切换时捕获中断就发生。定时器的值被保存在 Channel-n 捕获寄存器中,直到中断被清除捕获寄存器才会被重写,如图10.1.1所示:

 

10.1.1 带有中断清除的捕获事件

他的配置流程在上一章讲过了这里就不重复了。

可以调用PWM_CaptureModeInit函数来初始化PWM的捕获模式。

void PWM_CaptureModeInit(PWM_CHn_TypeDef* PWM_CHn, PWM_CaptureModeInitTypeDef* PWM_CaptureModeInitStruct);

PWM_CaptureModeInit函数的是针对PWM捕获模式写的,所以配置他的结构体也不一样,下面看看他的结构体成员。

typedef struct
{
    uint32_t    PWM_CHn_PR; 
    uint32_t    PWM_CHn_MR; 
    uint32_t    PWM_CHn_LR; 
    uint32_t    PWM_CHn_UDMR; 
    uint32_t    PWM_CHn_PDMR; 
    uint32_t    PWM_CHn_CMR; 
}PWM_CaptureModeInitTypeDef;

可以看到这个结构体包含了如下几个成员:
参数PWM_CHn_PR设置预分频寄存器。
参数PWM_CHn_MR设置匹配寄存器。
参数PWM_CHn_LR设置边界寄存器。
参数PWM_CHn_UDMR设置上下模式寄存器。
参数PWM_CHn_PDMR设置周期模式寄存器。
参数PWM_CHn_CMR设置PWM的捕获模式寄存器。

针对 PWM通道0 的捕获模式初始化范例代码格式:

PWM_CaptureModeInitTypeDef PWM_CaptureModeInitStruct;
PWM_CaptureModeInitStruct.PWM_CHn_PR = 50; 
PWM_CaptureModeInitStruct.PWM_CHn_LR = 10000; 
PWM_CaptureModeInitStruct.PWM_CHn_UDMR = PWM_CHn_UDMR_UpCount; 
PWM_CaptureModeInitStruct.PWM_CHn_PDMR = PWM_CHn_PDMR_Periodic; 
PWM_CaptureModeInitStruct.PWM_CHn_CMR = PWM_CHn_CMR_RisingEdge; 
PWM_CaptureModeInit(PWM_CH0, &PWM_CaptureModeInitStruct); 
PWM_CHn_SetPEEER(PWM_CH0, PWM_CHn_PEEER_ExtEnable); 
PWM_CHn_Start(PWM_CH0);  //开启定时器PWM_CHn_Start(PWM_CH0);

10.2 硬件设计

本实验用到的硬件资源有:

1)      UART2

2)      PWM

3)      杜邦线

10.3 软件设计

打开输入捕获实验,可以看到,工程和上一个实验没有什么改动。因为输入捕获代码是直接添加在 pwm.c pwm.h 中。

pwm.c 里面加入如下代码:

void PWM_Input(void)
{
  PWM_CaptureModeInitTypeDef PWM_CaptureModeInitStruct; 
  PWM_CaptureModeInitStruct.PWM_CHn_PR = 50; 
  PWM_CaptureModeInitStruct.PWM_CHn_LR = 10000; 
  PWM_CaptureModeInitStruct.PWM_CHn_UDMR = PWM_CHn_UDMR_UpCount;  //递增计数
  PWM_CaptureModeInitStruct.PWM_CHn_PDMR = PWM_CHn_PDMR_Periodic; //循环模式
  PWM_CaptureModeInitStruct.PWM_CHn_CMR = PWM_CHn_CMR_RisingEdge; //上升沿捕获
  PWM_CaptureModeInit(PWM_CH0, &PWM_CaptureModeInitStruct); 
  PWM_CHn_SetPEEER(PWM_CH0, PWM_CHn_PEEER_ExtEnable);  // 使能输出禁止输入使能
  PWM_CHn_Start(PWM_CH0);  //开启定时器
}

void GPIO_Configuration(void) 
{
  GPIO_InitTypeDef GPIO_InitStructure; 
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; 
  GPIO_Init(GPIOC, &GPIO_InitStructure); 
  PAD_AFConfig(PAD_PC, GPIO_Pin_0, PAD_AF2); 
	
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10; 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT; 
  GPIO_Init(GPIOA, &GPIO_InitStructure); 
  PAD_AFConfig(PAD_PA, GPIO_Pin_10, PAD_AF1); 
}

main.c 里面加入如下代码:

int main()
{
/*  炜世科技—WIZnet W7500官方代理商,全程技术支持,价格绝对优势!*/	
  SystemInit();     	   /* 系统内部时钟初始化 */ 
  delay_init();		   /* 系统滴答时钟配置*/
  S_UART_Init(115200);       /* 初始化串口通信:115200@8-n-1*/
  PWM_Input();                   /* PWM 捕获模式初始化 */
	
  printf("PWM捕获测试\r\n");
  while(1) 
  {
    GPIO_SetBits(GPIOA, GPIO_Pin_10); 
    delay_ms(1000); 
    GPIO_ResetBits(GPIOA, GPIO_Pin_10); 
    delay_ms(1000); 
    printf("CR=%d\r\n",PWM_CHn_GetCR(PWM_CH0));
  }
}

10.4 下载验证

在完成软件设计之后,将编译好的文件下载到W7500 开发板上,再打开串口调试助手,选择对应的串口,然后可以看到PWM通道1捕获到的数据,如图10.4.1所示:

 

10.4.1 W7500EVB PWM捕获试验结果






主题

回复
  • 温馨提示: 标题不合格、重复发帖、发布广告贴,将会被删除帖子或禁止发言。 详情请参考: 社区发帖规则
  • 您当前输入了 0 个文字。还可以输入 8000 个文字。 已添加复制上传图片功能,该功能目前仅支持chrome和火狐

禁言/删除

X
请选择禁言时长:
是否清除头像:
禁言/删除备注:
昵 称:
 
温馨提示:昵称只能设置一次,设置后无法修改。
只支持中文、英文和数字。

举报

X
请选择举报类型:
请输入详细内容:

顶部