Atmel SAM Dマイコンを最高周波数の48MHzで動作させるには、次のいずれかの方法で48MHzクロックを生成します:
- 内蔵8MHzオシレータを250分周して32KHzの基準クロックを作りDFLLにより48MHzを生成
- 内蔵32KHzオシレータからDFLLにより48MHzを生成
- 内蔵8MHzオシレータを4分周して2MHzの基準クロックを作りDPLLにより48MHzを生成
いずれの場合も、GCLK0 (General Clock 0番)を48MHzにすることで、システムクロックが48MHzになります。基準クロックを作るには、0番以外のGCLKチャンネルを使います。
※いずれの方法でも内蔵クロックを使用するためクリスタルの精度には及びません。外付の32.768KHzのクリスタルからDFLLもしくはDPLLにより48MHzを生成すると、精度も高く、RTCの誤差も最も小さくなります。実時間アプリケーションには最適です。
48MHzで動作させる場合にはFlashメモリのウェイト設定が必須
48MHzの高速クロックを使用する場合には内蔵のFlash ROMからの読み出しにウェイトを置く必要があります。これを設定しないと、MCUから何も反応がない状況になります。
Vccが2.7V-3.6Vの場合には 1 に設定します。2.7V以下の場合にはデータシートのNVM Characteristicsの節を参照してください。
ASFを使用している場合、ウェイトを設定するには conf_clocks.h
の CONF_CLOCK_FLASH_WAIT_STATES
マクロを定義します。
#define CONF_CLOCK_FLASH_WAIT_STATES 1
ASFを使用しない場合、NVCTRL
モジュールのCTRLB
レジスタのRWS
に1を書き込みます。
NVMCTRL->CTRLB.bit.RWS = 1;
ATMEL STARTを使用している場合には、PMコンポーネントの"NVM Wait States:"を1に設定します。