Armadilloフォーラム

I2C1からのPMICの制御について

kl_kyoko

2016年1月21日 17時13分

初めて投稿させていただきます。大嶋と申します。

Armadillo-440を使用してリアルタイム制御を実施しようと試みています。

OSをμITRON仕様のμC3(イーフォース社)に積み替えて動作させたいのですが、
基板に元々入っているブートローダ及びLINUXを消去し、μC3及びアプリをフラッシュに書き込んで、
アプリを起動しようとしたところ、ある領域の電源供給がONにならなくなりました。
※LINUXで起動させていた時には正常に動作していました。

いろいろ調査したところ、PMICから3.3Vが出力されていないように見えます。
ブートローダーをμC3に変更した影響だと思われます。

μC3はArmadilloに対応していますが、I2C1のドライバやPMICのドライバを備えていません。
このため、PMICを制御しようとしましたがPMICとI2Cを介した通信が行えていないように見えます。

(1)まずはmultiplexerの初期化を行うべく以下の初期化を行いました。

/* CON10                                             Pin No. ***********************************/
REG_IOMUXC.SW_MUX_CTL_PAD_GPIO_C = 2;                // 3:GPIOC(ALT2)     ->I2C2 SCL
REG_IOMUXC.SW_MUX_CTL_PAD_GPIO_D = 2;                // 4:GPIOD(ALT2)     ->I2C2 SDA
REG_IOMUXC.SW_MUX_CTL_PAD_I2C1_CLK=0x80;            // I2C_SCL | Force input path of pad I2C1_CLK
REG_IOMUXC.SW_MUX_CTL_PAD_I2C1_DAT=0x80;            // I2C_DAT | Force input path of pad I2C1_CLK
REG_IOMUXC.SW_PAD_CTL_PAD_I2C1_CLK= 0x000000E0;        // [I2C_SCL]Pull/Keeper=Enable  Pull=Enable  ,100KΩPull-up
REG_IOMUXC.SW_PAD_CTL_PAD_I2C1_DAT= 0x000000E0;        // [I2C_SCL]Pull/Keeper=Enable  Pull=Enable  ,100KΩPull-up

(2)続いて、I2Cを初期化すべく以下の処理をしました。
i.MX25 Multimedia Applications Processor Reference Manual(IMX25RM Rev. 2 01/2011)の
Figure 29-13. Detailed Flowchart of a Typical I2C Master Tx Mode, Part 1(29-20ページ)のフローチャートに従い
コーディングしましたが、5つめの『Program MSTA and MTX』を実行した後の『IBB =1?』となりません。

そこで質問です。
1.I2C1を使用する場合の初期化方法は間違っていないでしょうか?
2.PMICのアドレスは0x54で良いのでしょうか?

開発が先に進まず、大変困っています。
何卒、よろしくお願いいたします。

コメント

at_yuma.arakawa

2016年1月21日 19時14分

> 1.I2C1を使用する場合の初期化方法は間違っていないでしょうか?

> REG_IOMUXC.SW_MUX_CTL_PAD_I2C1_CLK=0x80; // I2C_SCL | Force input path of pad I2C1_CLK
> REG_IOMUXC.SW_MUX_CTL_PAD_I2C1_DAT=0x80; // I2C_DAT | Force input path of pad I2C1_CLK
SIONビットはb4なので、0x10の間違いではないでしょうか。

> i.MX25 Multimedia Applications Processor Reference Manual(IMX25RM Rev. 2 01/2011)
のA-137〜A-138を見てみてください。

> REG_IOMUXC.SW_PAD_CTL_PAD_I2C1_CLK= 0x000000E0; // [I2C_SCL]Pull/Keeper=Enable Pull=Enable ,100KΩPull-up
> REG_IOMUXC.SW_PAD_CTL_PAD_I2C1_DAT= 0x000000E0; // [I2C_SCL]Pull/Keeper=Enable Pull=Enable ,100KΩPull-up
Pull/Keeper Enableはb7、
Pull Up/Down Configはb5-4で「100KΩ Pull Up」の場合、設定値は0b10なので、
0x000000A0の間違いではないでしょうか。

> i.MX25 Multimedia Applications Processor Reference Manual(IMX25RM Rev. 2 01/2011)
のA-351〜A-354を見てみてください。
 

> 2.PMICのアドレスは0x54で良いのでしょうか?
PMICのスレーブアドレスは0x54で正しいです。
MC34704のデータシート[1]のP.31に、「7bit Physical Address」が「1010100」であると書かれています。

[1]: 以下のリンク先の「ドキュメント」タブから
「MC34704, Multiple Channel DC-DC Power Management IC - Data Sheet (REV 8.0) 」が参照できます。
http://www.nxp.com/ja/products/power-management/pmics/pmics-for-i.mx-pr…