2012/08/05

[fm3]まだI2Cがうまくいかん

私はI2Cですら動かせないのか・・・と思ったが、まあいつものことだ。
とにかく、まだ動いていない。

 

今はSOT1_2 / SCK1_2を使っているが、ポートを変えたら動いたりせんだろうか、とSOT6_1 / SCK6_1にしてみたが、状況は変わらず。

image

EPFR07でリロケートもしてる。
ロジアナ自体が悪さを?と思って外してみたが、そんなわけでもなさそうだ。
皆目見当が付かん。


思いつくことを、つらつら書いていたら、何か浮かぶかもしれない。

 

EIBCRレジスタがあれば、手動でSDA/SCLをぱたぱたさせられそうなのだが、FM3基板のFM3はTYPE2なのでレジスタがない。

 

富士通のサンプルでは、「ch0はマイクロコントローラの仕様で使用できない」と書かれている。
I2Cだけみたいだけど、そんなのどこにも書いてないなぁ。

 

MFSのブロック図がないので、何が関わっているのかがよくわからない。
仕方ないので、FR60のドキュメントを見てみた。
同じ富士通のだから、似てるんじゃなかろうか。

IDARというレジスタが、TDRレジスタに相当するみたいだ。
FR60はダブルバッファになってるらしく、BusBusyのときはシリアル転送用のレジスタに、そうでないときは内部転送レジスタにロードされる、とある(ブロック図では読み取れん)。
シフトレジスタがあるだろうから、そこの図が見たかったのだが・・・ないのか。

なんとなくだけど、クロックさえ生成すればデータが出ていきそうな感じだ。
ってことは、クロック生成できていないか、供給されていないということ?

マルチファンクションシリアルは、APB2バスに載っている。
APB2バスクロックは、PCLK2らしい。

そういえば、TOPPERS/ASPの環境はどういうクロックになってるんだろうか?


target_initialize()を見ると、

  • ベースクロック : 1分周
  • APB0 : 1分周
  • APB1 : 2分周
  • APB2 : 2分周

のようだ。
PCLK2の出力許可もしているので、クロック供給されていないということはない。
まあ、されてなければRC-S620/Sの制御すらできなかったはずだよな。


ペリフェラルマニュアルの「I/Oポート」も大切そうだ。
表2-2に、GPIOとして使うか周辺機器として使うかと、影響するレジスタが記載されている。
I2Cだから、オープンドレインで入出力。
影響するのは、PFRとPZRらしいから、やはりPZRは設定しておこう。

ADEとかは何もしてないから0だろうと思っているが・・・どうだろう。
心配だから見ておこう。

  • ADE : AN31~AN00だから関係なさそう。でも、0にしておくか。
  • SPSR : デフォルトでUSBは0だし、外部クロックのピンはそのままがいいだろう。
  • DAE : デフォルトで0だから、いいだろう。
  • VEx : LCDCC3レジスタでいいのかな? PICTLを1にして、残りを0にすればいいのか。
  • COMx : LCDC_COMENレジスタでいいのかな? デフォルトでGPIOだからいいだろう。
  • SEGx : LCDC_SEGENxレジスタでいいのかな? デフォルトでGPIOだからいいだろう。

あー、めんどくさい。。
そして変化無し。。。。。
そうだよなぁ、そんなので動かないなら、スタートコンディションすら生成されないよなぁ。


仕方ないから、オリジナルでFRAMアクセスして波形を取ってみるか。
でも、ポートをつかむような道具を持ってないので、ちょっと一苦労だ。
まあ、波形は取らなくても、動くことが確認できればいいか。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。