野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9000|回复: 3

1052的flexpwm为什么换个针脚就输出不了了呢?

[复制链接]
发表于 2019-9-23 17:02:14 | 显示全部楼层 |阅读模式
求大佬帮我看看哪里有问题?例程的68.70针脚就很正常。换成其他的都没反应。
程序在附件里面

Pwm.zip

4.78 KB, 下载次数: 6

回复

使用道具 举报

 楼主| 发表于 2019-9-23 17:05:13 | 显示全部楼层
[mw_shl_code=c,true]pwm.h

#ifndef __BSP_PWM_H
#define __BSP_PWM_H

#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "fsl_gpio.h"
#include "fsl_pwm.h"
#include "fsl_xbara.h"
#include "pad_config.h"



/*********************************************************
* PWM1 输入端口、引脚号及IOMUXC复用宏定义

使用i.MX RT1052-Pro底板:
*  FLEXPWM1_PWMA0-----GPIO_SD_B0_00-----(CN5, 68)
*  FLEXPWM1_PWMB0-----GPIO_SD_B0_01-----(CN5, 70)
*  FLEXPWM1_PWMA1-----GPIO_SD_B0_02-----(CN5,65)
*  FLEXPWM1_PWMA2-----GPIO_SD_B0_04-----(CN5,69)
*引脚功能            引脚标号        引脚在开发板上对应位置
(CN5, 68) 含义是引脚连接到开发板CN5排针的第68脚


使用i.MX RT1052-Mini底板

*  FLEXPWM1_PWMA0-----GPIO_SD_B0_00-----(CN4, 68)
*  FLEXPWM1_PWMB0-----GPIO_SD_B0_01-----(CN4, 70)
*  FLEXPWM1_PWMA1-----GPIO_SD_B0_02-----(CN4,65)
*  FLEXPWM1_PWMA2-----GPIO_SD_B0_04-----(CN4,69)
*引脚功能         引脚标号     引脚在开发板上对应位置
(CN4, 68) 含义是引脚连接到开发板CN4排针的第68脚

*********************************************************/
/* FLEXPWM1_PWMA0  (CN5, 68) */
//#define PWM1_PWMA00_GPIO      GPIO3
//#



pwm.c
#include "fsl_debug_console.h"
#include "./bsp/pwm/bsp_pwm.h"


  /**
* @brief  初始化 PWM 使用到的外部引脚  
* @retval 无
*/
void PWM_gpio_config(void)
{
  gpio_pin_config_t PWM_pin_config;
  
   /*设置外部引脚的复用功能*/
  IOMUXC_SetPinMux(IOMUXC_GPIO_SD_B0_02_FLEXPWM1_PWMA01, 0U);                                      
  /*设置引脚的 pad 属性 */
  IOMUXC_SetPinConfig(IOMUXC_GPIO_SD_B0_02_FLEXPWM1_PWMA01, PWM_PAD_CONFIG_DATA);

  /*配置引脚为输出模式,默认电平位高电平*/
  PWM_pin_config.direction = kGPIO_DigitalOutput;
  PWM_pin_config.outputLogic = 1;
  PWM_pin_config.interruptMode = kGPIO_NoIntmode;
   
  GPIO_PinInit(PWM1_PWMA01_GPIO, PWM1_PWMA01_GPIO_PIN, &PWM_pin_config);

}

/**
* @brief  初始化 PWM  配置参数
* @retval 无
*/
void PWM_config(void)
{
  uint32_t pwmSourceClockInHz;  //用于保存计数频率
  uint16_t deadTimeVal = 0;     //用于保存死区计数值(),单通道输出没有用到死区,设为0即可
  pwm_config_t pwmConfig;       //定义pwm 初始化结构体 用于设置PWM工作模式
  pwm_signal_param_t pwmSignal; //用于设置 pwm 的参数,频率、周期等
  

  
  /* 设置IPG clock 时钟频率,最高只能实现四分频*/
  CLOCK_SetDiv(kCLOCK_IpgDiv, 0x3); /* Set IPG PODF to 3, divede by 4 */
  

//   /*设置pwm 错误输入为高电平,表示没有错误,只有当pwm 没有错误或者禁止错误检测才能正常输出pwm波*/
//  XBARA_Init(XBARA1);
//  XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault0);
//  XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1Fault1);
//  XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault2);
//  XBARA_SetSignalsConnection(XBARA1, kXBARA1_InputLogicHigh, kXBARA1_OutputFlexpwm1234Fault3);

//  /*禁止错误检测*/
  PWM1->SM[0].DISMAP[0]=0;

   
   /*获取默认的配置,默认配置如下
    *pwmConfig->enableDebugMode = false;   //禁止在DEBUG模式
    *config->enableWait = false;           //禁止工作在等待模式
    *config->reloadSelect = kPWM_LocalReload;//PWM模块使用本地重载信号重载pwm
    *config->faultFilterCount = 0;          //故障筛选器计数设置为0
    *config->faultFilterPeriod = 0;         //故障滤波频率设置为0,不使用故障滤波
    *config->clockSource = kPWM_BusClock;   //选择时钟源
    *config->prescale = kPWM_Prescale_Divide_1;//设置时钟分频
    *config->initializationControl = kPWM_Initialize_LocalSync;//本地同步信号初始化PWM
    *config->forceTrigger = kPWM_Force_Local;  //选择强制更新信号
    *config->reloadFrequency = kPWM_LoadEveryOportunity;//选择PWM自动重装频率
    *config->reloadLogic = kPWM_ReloadImmediate;//一旦设置了LDOK位,缓存寄存器立即加载新的值
    *config->pairOperation = kPWM_Independent;  //工作在独立模式
   */
   PWM_GetDefaultConfig(&pwmConfig);
   
   /* 修改默认配置参数 */
   pwmConfig.reloadLogic = kPWM_ReloadPwmFullCycle; //设置重载周期
   pwmConfig.pairOperation = kPWM_Independent;      //设置位独立模式
         pwmConfig.prescale = kPWM_Prescale_Divide_128;   //设置时钟分频
   pwmConfig.enableDebugMode = true;                //使能 Debug 模式
   /* 初始化 PWM 并且判断初始化是否成功*/
   if (PWM_Init(BOARD_PWM_BASEADDR, kPWM_Module_1, &pwmConfig) == kStatus_Fail)
   {
       PRINTF("PWM initialization failed\n");        
   }

    pwmSignal.pwmChannel = kPWM_PwmA;    //选择PWM 通道 PWMA 或者PWMB
    pwmSignal.level  =     kPWM_HighTrue; //选择输出极性
    pwmSignal.dutyCyclePercent = PWM_duty_Cycle_Percent;     //设置占空比   
    pwmSignal.deadtimeValue = deadTimeVal;//设置死区值,在该模式下没有使用到死区,设为0即可
   
    /*获得当前计数频率*/
    pwmSourceClockInHz = PWM_SRC_CLK_FREQ;
    /*设置pwm 参数*/
    PWM_SetupPwm(BOARD_PWM_BASEADDR, kPWM_Module_1, &pwmSignal, 1, kPWM_SignedEdgeAligned, PWM_frequency_Hz,
                 pwmSourceClockInHz);
   
    /*设置Set LDOK 位,将初始化参数加载到相应的寄存器*/
    PWM_SetPwmLdok(BOARD_PWM_BASEADDR,kPWM_Control_Module_1 , true);

    /* 开启PWM 输出*/
    PWM_StartTimer(BOARD_PWM_BASEADDR,  kPWM_Control_Module_1);

}





main.c
/**
  ******************************************************************
  * @file    main.c
  * @author  fire
  * @version V1.0
  * @date    2018-xx-xx
  * @brief   串口中断接收测试
  ******************************************************************
  * @attention
  *
  * 实验平台:野火  i.MXRT1052开发板
  * 论坛    :http://www.firebbs.cn
  * 淘宝    :http://firestm32.taobao.com
  ******************************************************************
  */
  

#include "fsl_debug_console.h"

#include "board.h"
#include "pin_mux.h"
#include "clock_config.h"

#include "./bsp/nvic/bsp_nvic.h"
#include "./bsp/led/bsp_led.h"
#include "./bsp/uart/bsp_uart.h"
#include "./bsp/pwm/bsp_pwm.h"
#include "core_delay.h"





/*******************************************************************
* Prototypes
*******************************************************************/
/**
* @brief 延时一段时间
*/
void delay(uint32_t count);

/*******************************************************************
* Code
*****************



[/mw_shl_code]
回复 支持 反对

使用道具 举报

发表于 2019-9-25 08:43:47 | 显示全部楼层
angusfy 发表于 2019-9-23 17:05
[mw_shl_code=c,true]pwm.h

#ifndef __BSP_PWM_H

除了PWM1,PWM2、3、4需要通过XBAR复用输出到其他引脚
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-9-27 10:21:34 来自手机 | 显示全部楼层
ccx 发表于 2019-9-25 08:43
除了PWM1,PWM2、3、4需要通过XBAR复用输出到其他引脚

我用的是PWM1的pwmA1和B1,没有用PWM2啊?例程用的pwm1的PWMA0和B0就没有问题
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 09:45 , Processed in 0.031560 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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