

SpresenseArduinoLibraryのanalogWrite()では490Hzの周期でPWM出力されるとなっていますが、  
6.5MHzで動作させるにはどうすればよいのでしょうか？  
<https://developer.sony.com/ja/develop/spresense/developer-tools/hardware-
documentation#_pwm%E3%81%AE%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95>


CC BY-SA 4.0
2018-10-11T10:36:50.437
49193
2018-11-29T08:21:46.180
27535
question
spresense
Spresense Arduino Library におけるpwmの周波数の変更方法


ソニーのSPRESENSEサポート担当です。

PWMの周波数の変更方法と、6.5MHzのPWMの出力方法の２点について回答をさせていただきます。

## 1\. PWMの周波数変更方法について

バージョン 1.1.1 にて、PWMの周波数を変更するAPIを追加いたしました。  
ライブラリのアップデートは、Arduino IDE の「ボードマネージャ」で行ってください。

追加したAPIは、 _analogWriteFreq_ と、 _analogWriteSetDefaultFreq_ の２つです。

PWM周波数の変更は、 _analogWriteFreq_ を _analogWrite_ の代わりに使用していただく方法か、 _analogWrite_
を使用する前に _analogWriteSetDefaultFreq_ を使用し周波数を予め変更していただく方法のいずれかになります。

### 使用例

  1. _analogWriteFreq_ を使用する場合  
PIN_PWM_0に対して、Duty比 100/255※のPWMを周波数2000Hzで使用する

[code]     analogWriteFreq(PIN_PWM_0, 100, 2000);

    
[/code]

  2. _analogWriteSetDefaultFreq_ を使用する場合  
PIN_PWM_0に対して、Duty比 100/255※のPWMを周波数2000Hzで使用する

[code]     analogWriteSetDefaultFreq(2000);

    analogWrite(PIN_PWM_0, 100);
    
[/code]

（※）Duty比は255刻みになります。255 を設定した場合、Duty比は100%になります。

## 2\. PWM の最大周波数について

Spresense Arduino Library の PWM の最大周波数は、4.1MHzです。  
最大周波数では、Duty比 50% 以外は設定できません。

6.5MHz のクロック出力は、Spresense SDK の構成を変更することによって行えます。  
Spresense SDK のコンフィギュレーション設定を開いていただき、

CXD56xx Configuration  
->Sensor Control Unit (SCU)  
->SCU clock mode (RCOSC) 

で、「RCOSC」を「XOSC」へ変更してください。

6.5MHz は最大周波数ですので、Duty比 50% 以外は設定できません。

どうぞ、よろしくお願いいたします。


CC BY-SA 4.0
2018-11-29T07:21:05.500
50746
2018-11-29T08:21:46.180
2018-11-29T08:21:46.180
19110
29520
49193
answer