This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

hrpwm 可以做高精度频率吗

我想做一个20kz 正负 1hz  精度  pwm 并且占空比可调 的应用,   hrpwm   可以用吗?

  • 可以的,这个精度问题就看你能否使用一颗高精度的晶振作为系统的时钟了。

  • 你指的是周期是20KHz 正负1Hz吗,如果有高精度晶振,一般不用HRPWM也可以达到。

    如果是采用内部晶振,或是精度比较差点的晶振的话,那可以使用HRPWM的HRPeriod寄存器去来调整,因为HRPWM的微步长可达到150ps.

    但有高精度周期寄存器的芯片属于下面几款:

    1 Added high-resolution period support, added option 
    to select high-resolution B output, added automatic
    micro-step conversion

    28065, 28064, 28063, 28062

    28027, 28026, 28023, 28022, 28035, 28034, -

     28033, 28032, 28069, 28068, 28067, 28066,

  • 他那个微步长150ps是怎么算出来的,假设我的芯片型号是28035,系统时钟是60M,那么系统步长是16.67ns,HRPWM微步长的寄存器有8位总共256个等级,那么16.67ns/256=65.11ps,65.22ps<150ps,也就是说最小微步长应该是65.32ps才对,那为什么是只有150ps呢?
  • 1、HRPWM是基于MEP微边沿定位技术实现的,至于实现方式则没有给出技术细节,逻辑门传输延时? 瞎猜的不用深究,反正知道MEP能细分SYSCLK就行了。

    2、MEP实现的细分步长没有说就是1/256xTsysclk,只是它用到高8位存储而已,就像考试满分100份,用8位存储,你不能说最小分辨率是1/256分,考试分数只能是80或者80.5,有没有80.125分的?没有是吧。MEPStep就是动态的来计算这个满分的,芯片datasheet给出了细分的步长范围,180ps只是典型值而已。

    3、举个简单的例子,F2803x,PWM部分 Page 25,High Resolution Period部分的例子。

           60MHz主频(PWM时钟频率同),Count_UP模式,要实现175KHz的频率。

           使能高精度周期模式(HRPE)和自动转换功能.

           175kHz频率对应的周期值: 60M/175K=342.857,因为Count_Up模式,周期值需要减去1,得到341.857。

            因为使能了自动转换模式,直接计算PRDM.all = 341.857 * 2^16 = 22403940 = 0x0155DB64,其中TBPRD=0x0155,TBPRDHR=0xDB64

            跟计算结果是不是一致?很简单。

    4、多阅读Reference Guide,一遍读的云里雾里,二遍似懂非懂,三遍略有所得,再读几遍就差不多了。。。  共勉。