”
MicroZed Chronicles: Kria & Raspberry Pi Camera”+ガウシアンフィルタ+メディアンフィルタ+ソーベルフィルタを ikzwm さんの Debian 11 で動作させるために、Zynq UltraScale+ MPSoC の I2C ペリフェラルの使用方法を学ぶ必要が出てきた。ここで、”
Zynq UltraScale+ MPSoC TRM 457 UG1085 (v1.4) 2017 年 2 月 2 日”の 458 ページの”第 22 章 I2C コントローラー”を見て、勉強していこう。
”
Zynq UltraScale+ MPSoC TRM 457 UG1085 (v1.4) 2017 年 2 月 2 日”の 458 ページから引用。
I2C コントローラーの機能について•プロセッシング システム (PS) は次の機能を持つ I2C デバイ ス をサポート し ています。
• I2C バス規格 Ver. 2
• 16 バイ ト FIFO をサポート
• プログラム可能な通常/高速バス データ レート
• マルチマス ターをサポー ト
• マスター モード
° 書き込み転送
° 読み出し転送
° 拡張アドレス をサポート
° プロセッサの処理が低速な場合、 HOLD を許可する こ と によ りクロック ストレッチをサポート
° ストールを防ぐための TO 割り込みフラグをサポート
° リピート スタートをサポート
° スレーブ モニター モー ド
• ス レーブ モード
° スレーブ トランスミッター
° スレーブ レシーバー
° 完全にプ ロ グ ラ ム可能な ス レーブ応答ア ド レ ス
° オーバーフ ロー条件を防ぐための HOLD をサポー ト
° ストールを防ぐための TO 割 り 込みフ ラ グをサポート
° データがすぐに利用でき ない場合、クロックストレッチによ り 通信を遅らせる こ と が可能
• ソフトウェアでステータス をポー リ ングするか、 割り込みで駆動 されるデバイ ス と し て動作
• プログラム可能な割り込み生成
Zynq UltraScale+ MPSoC の I2C ペリフェラルなので、MIO に SDA, SCL を出力するか、もしくは EMIO で PL 経由で SDA, SCL を出力する。
”
Zynq UltraScale+ MPSoC TRM 457 UG1085 (v1.4) 2017 年 2 月 2 日”の図 22‐2: I2C モジ ュールのブロ ッ ク図を引用する。

I2C モジュールは、インターフェースは APB で、 4 個のレジスタ・セットを持っている。Control FSM と Clock Enable Generator, RX Shift Register を持っている。
”
Zynq UltraScale+ MPSoC TRM 457 UG1085 (v1.4) 2017 年 2 月 2 日”の 462 ページの”表 22‐2: I2C レジス タの概要”と”表 22‐3: I2C レジスタのまとめ”を引用する。

”
MicroZed Chronicles: Kria & Raspberry Pi Camera”の helloworld.c のコードに
XIicPs_SetSClk(&iic_cam, IIC_SCLK_RATE);
がある。これは、”
Zynq UltraScale+ MPSoC TRM 457 UG1085 (v1.4) 2017 年 2 月 2 日”の”表 22‐29: I2C CLK の取得”の様に設定しているものと思われる。
”表 22‐29: I2C CLK の取得”を引用する。

実際のクロック値 = (入力クロック / (22U x (Div_a + 1U) x (Div_b + 1U))
- 2021年12月09日 06:35 |
- Zynq UltraScale+ MPSoC
-
| トラックバック:0
-
| コメント:0