2387682_ja-JP

キャンセル
次の結果を表示 
表示  限定  | 次の代わりに検索 
もしかして: 

2387682_ja-JP

2387682_ja-JP

S32K388 LPSPIのSCKDIV計算に関する質問 - 1MHzのボーレートでSCKDIV=38になるのはなぜですか?

こんにちは、NXPコミュニティの皆さん、

私はS32K388を使用してLPSPIのボーレートを設定しています。SCKDIVの値の計算について質問があります。

**私の理解:**
S32K3xxリファレンスマニュアルによると、LPSPIのボーレートの公式は以下の通りです:
```
SCK = LPSPI_CLK / (PRESCALE_DIV × (SCKDIV + 1))
```

**私の設定:**
- LPSPIクロックソース:AIPS_SLOW_CLK = 40 MHz
目標ボーレート:1MHz
- プリスケール = 0 (÷1)

**私の計算:**
「`」
SCKDIV = (LPSPI_CLK / Baud) - 1
SCKDIV = (40 MHz / 1 MHz) - 1 = 39
「`」

**S32DS生成コード:**
しかし、S32DSを使用して構成を生成すると、次のようになります。
「`c」
LPSPI_CCR_SCKDIV(38U) // SCKDIV = 38
「`」

**質問:**
SCKDIV=38の場合、実際の除算係数は39となり、これは次のことを意味します。
「`」
実際のボーレート = 40 MHz / 39 = 1,025,641 Hz ≈ 1.026 MHz
「`」
これは目標値である1MHzから約2.56%の誤差がある。

S32DSはなぜSCKDIV=39ではなくSCKDIV=38を使用するのですか?S32DS構成では、異なるLPSPIクロック周波数が使用されているのでしょうか?それとも、この選択には別の理由があるのでしょうか?

**追加の背景:**
- 私はS32DS 3.5を使っています
- S32K388リファレンス・マニュアル Rev. 6
- プロジェクトはデフォルトのクロック構成で作成されました

ご説明いただければ幸いです。よろしくお願いいたします。

よろしくお願いいたします。

Re: S32K388 LPSPI SCKDIV calculation question - why SCKDIV=38 for 1MHz baud rate?

こんにちは、 @xlele

まず、S32K3xxリファレンスマニュアルの最新版はRev. 12であることにご注意ください。現在ご利用の改訂版には、S32K310、S32K311、およびS32K3x8デバイスに関する予備情報が含まれていますが、これらのデバイスは当該文書の発行時点ではまだリリースされていませんでした。したがって、RMの最新版をダウンロードして参照することをお勧めします。

LPSPIのボーレート計算に関して、クロック構成レジスタ(CCR)のSCKDIVフィールドの説明には次のように記載されています。

ボーレート = 機能クロック ÷ (2^PRESCALE × (SCKSET + SCKHLD + 2))

ここで、SCKSETとSCKHLDはSCKDIV÷2から導出される。

SCKDIV = 38 であることを考慮すると、次のようになります。

SCKSET = SCKHLD = 38 ÷ 2 = 19

ボーレート = 40 MHz ÷ (2^0 × (19 + 19 + 2)) = 1 MHz となり、これは期待値と一致します。


BR、VaneB

タグ(1)
評価なし
バージョン履歴
最終更新日:
20 時間前
更新者: