18. 鈦極OS之TiPWM

鈦極OS之TiPWM

 

  脈衝寬度調製(Pulse-width modulation)簡稱PWM,是利用微處理器的數字輸出來對模擬電路進行控制的一種非常有效的技術,廣泛應用在從測量、通信到功率控制與變換的許多領域中。具體可參考https://baike.baidu.com/item/%E8%84%89%E5%86%B2%E5%AE%BD%E5%BA%A6%E8%B0%83%E5%88%B6?fromtitle=PWM&fromid=3034961https://en.wikipedia.org/wiki/Pulse-width_modulation

  TiJOS Framework提供TiPWM來支持PWM功能,其將PWM按照port分組,共支持256組,組號範圍0-255,即:port0-port255;其中每組內按照channel劃分16通道,16個通道使用相同的脈衝頻率,通道範圍0-15,即:channel0-channel15;每組都支持指定模式的單獨設置、每個通道都支持單獨的佔空比控制。

 

  Java包

  tijos.framework.devicecenter

 

  TiPWM方法定義

  TiPWM類中主要的方法:

 

方法 說明
TiPWM open(int portID, int... channelIDs) 靜態方法,通過指定port和channel集合打開PWM,返回TiPWM對象
void close() 關閉當前對象
void setFrequency(int freqValue) 設置脈衝頻率
setDutyCycle(int channelID, double duty) 設置脈衝佔空比,0 - 1: 0% - 100%
void updateFreqAndDuty() 更新週期和佔空比


  TiPWM類中他方法的技術說明請參考TiJOS Framework說明文檔。

 

  TiPWM對象創建與銷燬

  TiPWM對象的創建需要調用open靜態方法,傳入指定port和channel集合參數,返回創建的接口對象。

  TiPWM對象的銷燬需要調用close方法。

  1. <font size="3">...
  2. int pwmPort0 = 0;
  3. int pwmChannel0 = 0; //定義channel集合
  4. int pwmChannel1 = 1;
  5. int pwmChannel2 = 2;
  6. TiPWM pwm0 = TiPWM.open(pwmPort0, pwmChannel0, pwmChannel1, pwmChannel2);
  7. ...
  8. ...</font>
  9. <font size="3">...
  10. pwm0.close();</font>
複製代碼  
  TiPWM輸出控制

  TiPWM的輸出控制通過setFrequency、setDutyCycle和updateFreqAndDuty方法完成。

  1. <font size="3">...
  2. Random random = new Random();//使用僞隨機數引擎
  3. pwm0.setFrequency(1000);//1Khz
  4. while(true) {
  5. int ch0=0, ch1=0, ch2=0;
  6. int max=255;
  7. int min=0;
  8. ch0 = random.nextInt(max)%(max-min+1) + min;
  9. ch1 = random.nextInt(max)%(max-min+1) + min;
  10. ch2 = random.nextInt(max)%(max-min+1) + min;
  11. //改變佔空比
  12. pwm0.setDutyCycle(pwmChannel0, ch0 / 255);
  13. pwm0.setDutyCycle(pwmChannel1, ch1 / 255);
  14. pwm0.setDutyCycle(pwmChannel2, ch2 / 255);
  15. //更新
  16. pwm0.updateFreqAndDuty();
  17. ...</font>
複製代碼  注意:脈衝頻率和佔空比的支持受平臺特性限制,設置時須瞭解硬件平臺特性。


  更多詳細介紹請見鈦雲物聯官網:www.tijos.net
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章