你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用STM32F334的HRTIM產生互補式PWM

[复制链接]
福留爸爸 发布时间:2017-8-26 19:47
以下代碼是我自己寫的設定register的lib來實現HRTIM互補式PWM,實在用不慣ST的庫,希望用STM32F334來實現數字電源控制,接下來會繼續更新其他PWM模式,ADC取樣方法,數字補償器,數字濾波器設計代碼。 敬請期待!!
希望大家都可以STM32F334來玩數字電源!!
void HRTIM_CLK_Config(void)
{
    /* Initialize the HRTIM clock and DLL */
    RCC_CFGR3.bits.HRTIM1SW = 1;        //PLL vco output (running up to 144 MHz)
    RCC_APB2ENR.bits.HRTIM1EN = 1;      //Enable HRTIM clock

    HRTIM_DLLCR.bits.CALRTE = 3;
    HRTIM_DLLCR.bits.CALEN = 1;

    while(!HRTIM_ISR.bits.DLLRDY);      //Wait calibration completion
}


void HRTIM_ComplementaryPWM_Config(void)
{
    HRTIM_TIMACR.bits.CKPSCx = 0;       // 144MHz * 32
    HRTIM_TIMACR.bits.CONT = 1;   
    HRTIM_TIMACR.bits.HALF = 0;
    HRTIM_TIMACR.bits.SYNCSTRTx = 0;
    HRTIM_TIMACR.bits.SYNCRSTx = 0;
    HRTIM_TIMACR.bits.DACSYNC = 0;
    HRTIM_TIMACR.bits.PREEN = 1;
    HRTIM_TIMACR.bits.UPDGAT = 0;
    HRTIM_BMCR.bits.MTBM = 0;
    HRTIM_TIMACR.bits.TxREPU = 1;
    HRTIM_TIMACR.bits.TxRSTU = 0;
    HRTIM_TIMACR.bits.PSHPLL = 0;
    HRTIM_FLTAR.bits.FLT1EN = 1;
    HRTIM_FLTAR.bits.FLTLCK = 0;
    HRTIM_OUTAR.bits.DTEN = 1;
    HRTIM_OUTAR.bits.DLYPRTEN = 0;

    HRTIM_OUTAR.bits.POL1 = 0;
    HRTIM_SETA1R.bits.PER = 1;
    HRTIM_RSTA1R.bits.CMP1 = 1;
    HRTIM_OUTAR.bits.IDLEM1 = 0;
    HRTIM_OUTAR.bits.IDLES1 = 0;
    HRTIM_OUTAR.bits.FAULT1 = 0;
    HRTIM_OUTAR.bits.CHP1 = 0;
    HRTIM_OUTAR.bits.DIDL1 = 0;

    HRTIM_OUTAR.bits.POL2 = 0;
    HRTIM_SETA2R.bits.PER = 1;
    HRTIM_RSTA2R.bits.CMP1 = 1;
    HRTIM_OUTAR.bits.IDLEM2 = 0;
    HRTIM_OUTAR.bits.IDLES2 = 0;
    HRTIM_OUTAR.bits.FAULT2 = 0;
    HRTIM_OUTAR.bits.CHP2 = 0;
    HRTIM_OUTAR.bits.DIDL2 = 0;

    HRTIM_PERAR.all  = 46080;           // 100KHz = 144MHz * 32 / 100KHz
    HRTIM_CMP1AR.all = 46080>>2;   // 50% Duty setting      

    //Dead time setting
    HRTIM_DTAR.bits.DTPRSC = 0; //Deadtime resoultion setting to 868psec

    //Falling side
    HRTIM_DTAR.bits.DTFLKx = 0;
    HRTIM_DTAR.bits.SDTFx = 0;
    HRTIM_DTAR.bits.DTFSLKx = 1;
    HRTIM_DTAR.bits.DTFx = 500; //500 * 868p = 434ns

    //Rising side
    HRTIM_DTAR.bits.DTRLKx = 0;
    HRTIM_DTAR.bits.SDTRx = 0;
    HRTIM_DTAR.bits.DTRSLKx = 1;   
    HRTIM_DTAR.bits.DTRx = 500;

    HRTIM_MCR.bits.TACEN = 1;
    HRTIM_OENR.bits.TA1OEN = 1;
    HRTIM_OENR.bits.TA2OEN = 1;
}


void HRTIM_Outputs_Config(void)
{
    /* Enable GPIOA clock for timer A outputs */

    RCC_AHBENR.bits.IOPAEN = 1;

    /* Configure HRTIM output: TA1 (PA8) and TA2 (PA9)*/
    GPIOA_MODER.bits.MODER8      = GPIO_Mode_AF;
    GPIOA_OTYPER.bits.OT8        = GPIO_OType_PP;
    GPIOA_OSPEEDR.bits.OSPEEDR8  = GPIO_Speed_50MHz;
    GPIOA_PUPDR.bits.PUPDR8      = GPIO_PuPd_NOPULL;   
    GPIOA_AFRH.bits.AFR8         = GPIO_AF_13;

    GPIOA_MODER.bits.MODER9      = GPIO_Mode_AF;
    GPIOA_OTYPER.bits.OT9        = GPIO_OType_PP;
    GPIOA_OSPEEDR.bits.OSPEEDR9  = GPIO_Speed_50MHz;
    GPIOA_PUPDR.bits.PUPDR9      = GPIO_PuPd_NOPULL;   
    GPIOA_AFRH.bits.AFR9         = GPIO_AF_13;

}

int main(void)
{
    SystemInit();

    HRTIM_Outputs_Config();
    HRTIM_CLK_Config();
    HRTIM_ComplementaryPWM_Config();

    while(1)
    {

    }
}

收藏 1 评论1 发布时间:2017-8-26 19:47

举报

1个回答
coocku2012 回答时间:2019-12-3 17:38:47

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版