我想做一个20kz 正负 1hz 精度 pwm 并且占空比可调 的应用, hrpwm 可以用吗?
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.
你指的是周期是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,
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,一遍读的云里雾里,二遍似懂非懂,三遍略有所得,再读几遍就差不多了。。。 共勉。