Tip / Sign in to post questions, reply, level up, and achieve exciting badges. Know more

PSoC 4 製品用のランタイムクロック設定 - KBA233007

PSoC 4 製品用のランタイムクロック設定 - KBA233007

Infineon_Team
Moderator
Moderator
Moderator
5 replies posted First solution authored First comment on KBA

PSoC 4 製品用のランタイムクロック設定 - KBA233007

Translated by: keni_4440091

Original KBA: Runtime Clock Configuration for PSoC 4 Devices - KBA233007

Version: **

 

IMOはPSoC 4のメインクロック源であり、周辺およびCPUのクロックです。しかし、設計されたPSoC 4ピンに供給される外部クロック(EXTCLK)も使用可能です。HFCLKはIMOから、または外部クロックから選択できます。SYSCLKはHFCLKの整数分割になります。SYSCLKはCortex-M0 CPUに供給されます。

 

下記のブロック図にPSoC 4のクロックツリー構造を示します。

keni_4440091_0-1623654552970.png

Figure 1: PSoC 4 Clock Tree

 

注: このKBAでは定周波数クロックに関しては触れません。

 

プロジェクトを生成する場合、ユーザーに対して、クロック周波数の動的変化が必要になる場合があります。次の一連のAPIを使用して、実行時にクロック周波数を変更できます。

 

  • IMO周波数を動的に変更:

 

/* FlashのウェイトサイクルとIMO周波数の設定*/
CySysFlashSetWaitCycle(CLK_IMO_MHZ / CY_SYS_CLK_SYSCLK_DIVx);
CySysClkWriteImoFreq(CLK_IMO_MHZ);

 

注:デバイス動作の間にCPUクロック周波数が早くなった場合、サンプリングデータがフラッシュから返される前に、キャッシュが待機するクロックサイクル数を調整する必要があります。クロック周波数を下げる時、フラッシュウェイトサイクルの設定は必須ではありませんが、CPU性能を向上させるために実施することを推奨します。CySysFlashSetWaitCycle() 関数はSYSCLK周波数動作で提供されます。IMOがメインクロックの場合、SYSCLK = IMO周波数/SYSCLK分周。

 

ここで、CLK_IMO_MHZ は所望のIMOクロック周波数です。このパラメータの有効範囲は特定のPSoC 4製品ファミリに依存します。

 

注: CY_SYS_CLK_SYSCLK_DIVx パラメータでは、「x」は、2、4、8…、128と同等で、所望のSYSCLKを得るために分周されるHFCLKによって整数に対応します。

 

  • HFCLKクロックソースの動的な変更

 

/* HFCLK ソースの設定 */
 CySysFlashSetWaitCycles(CLK_IMO_MHZ / CY_SYS_CLK_SYSCLK_DIVx); 
CySysClkWriteHfclkDirect(CY_SYS_CLK_HFCLK_IMO);

 

注: ここで CySysClkWriteHfclkDirect() 関数はHFCLKソース(IMOやEXTCLKなど)を選択するために使用されます。

 

  • SYSCLK周波数の動的な変更

 

/* SYSCLK 分周の設定 */
CySysFlashSetWaitCycles(CLK_IMO_MHZ / CY_SYS_CLK_SYSCLK_DIVx );
CySysClkWriteSysclkDiv(CY_SYS_CLK_SYSCLK_DIVx);

 

このKBAで述べられているAPIについての詳細は、PSoC 4 System Reference Guideを参照してください。

 

0 Likes
15 Views
Contributors