[戻る]
過去ログ [ 0001 ]
過去ログ:     ワード検索: 条件: 表示:

タイトル
記事No
投稿日
投稿者
参照先
70MIPSではI2Cはサポート外?
50
: 14/12/26-21:23
dsPIC33E

dsPIC33EやPIC24Hは70MIPSでの高速動作がウリですが、動作速度を40MIPS(dsPIC33F、PIC24Fの最高速度)以上に設定するとI2Cの動作が安定しなくなります。
同じような現象を体験した人はいませんか?

それと関連するデーターシートによって、I2CBRGの計算式が複数存在することも気になっています。
恐らく、(40MIPS以下で)近似する式が複数あるのでどれでも正解なのでしょうが……
40MIPS以下ではどの計算式を使用しても(算出される値はどれも微妙に異なりますが)400Hzでも100Hzでもきちんと通信することが出来ます。
しかし、動作速度を41MIPS〜70MIPSに設定するとどの計算式を使ったI2CBRGを設定しても通信が安定しません。
計算式以外でも色々値を入れてみましたが、どの範囲の値を使っても安定しませんでした。

これは40MIPS以上でのI2C通信はサポートされていないということなのでしょうか。
英語フォーラムを覗いてみてもdsPIC33Eの高速動作時(40MIPS以上)ではI2C通信が安定しないと書かれていましたが、皆さんどうでしょうか。

仕様PICはdsPIC33EP256GP502
通信ターゲットは、MPU9150です。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re: 70MIPSでI2Cはサポート外
56
: 15/01/03-19:14
Gokan <gokan@picfun.com>

I2Cの通信はクロックに基づいて行いますから、通信速度が特に
これでなければならないということはないので、
I2CBRGが異なっていても問題なく通信はできるはずです。
特にErrataも発行されていませんのでデバイスの問題はないかと
思います。
原因を特定することはできませんが、一般的な不安定要素の原因は
下記のようなことが多いですね。

(1)プルアップ抵抗が大きすぎる
  通常は数kオームとしますが、消費電流を意識して抵抗値を
  おおきくすると波形がなまりますから通信エラーがおきます。
(2)信号の反射が起きている
  SPIなどの高速通信の場合によく起きる現象で、PIC内部、外部で
  信号の反射が発生し、信号波形が乱れて通信エラーが起きること  があります。
  この対策は通信線に直列に数100オームの抵抗を挿入して
  ダンピングします。
(3)ケーブルの距離が長すぎる
  I2C、SPIともボード上の通信が基本ですので通常は約20cm以下
  とする必要があります。
(4)ノイズによる誤動作
  パスコンが少ない、高速信号と並行な配線などなどの原因による
  ノイズによる誤動作です。

               以上



> dsPIC33EやPIC24Hは70MIPSでの高速動作がウリですが、動作速度を40MIPS(dsPIC33F、PIC24Fの最高速度)以上に設定するとI2Cの動作が安定しなくなります。
> 同じような現象を体験した人はいませんか?
>
> それと関連するデーターシートによって、I2CBRGの計算式が複数存在することも気になっています。
> 恐らく、(40MIPS以下で)近似する式が複数あるのでどれでも正解なのでしょうが……
> 40MIPS以下ではどの計算式を使用しても(算出される値はどれも微妙に異なりますが)400Hzでも100Hzでもきちんと通信することが出来ます。
> しかし、動作速度を41MIPS〜70MIPSに設定するとどの計算式を使ったI2CBRGを設定しても通信が安定しません。
> 計算式以外でも色々値を入れてみましたが、どの範囲の値を使っても安定しませんでした。
>
> これは40MIPS以上でのI2C通信はサポートされていないということなのでしょうか。
> 英語フォーラムを覗いてみてもdsPIC33Eの高速動作時(40MIPS以上)ではI2C通信が安定しないと書かれていましたが、皆さんどうでしょうか。
>
> 仕様PICはdsPIC33EP256GP502
> 通信ターゲットは、MPU9150です。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^2: 70MIPSでI2Cはサポート外
68
: 15/01/05-18:47
dsPIC33E

Gokenさん返信ありがとうございます。

配線距離は5cm程度、最近配線で1mm程度、プルアップ抵抗は1kΩで、直列抵抗は挟んでいない回路です。
原因ですが(2)と(4)で探ってみたいと思います。

I2Cの通信速度などは変えず、dsPIC33Fをそのまま33Eに置き換えて内部の動作速度を40→70MIPSに変更しただけなので回路等の修正は必要ないと考えていましたが、内部の動作速度を変えるだけでもPICのノイズ特性が変わると考えた方が良さそうですね。

実機で実験していましたが、ブレッドボード上に新しく33Eの回路を作って検証したいと思います。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^3: 70MIPSでI2Cサポート
71
: 15/01/07-09:51
Gokan <gokan@picfun.com>

ちょっと気になるので

プルアップが1kΩというのは小さ過ぎではないかと
充分駆動できているかどうか気になります。


> Gokenさん返信ありがとうございます。
>
> 配線距離は5cm程度、最近配線で1mm程度、プルアップ抵抗は1kΩで、直列抵抗は挟んでいない回路です。
> 原因ですが(2)と(4)で探ってみたいと思います。
>
> I2Cの通信速度などは変えず、dsPIC33Fをそのまま33Eに置き換えて内部の動作速度を40→70MIPSに変更しただけなので回路等の修正は必要ないと考えていましたが、内部の動作速度を変えるだけでもPICのノイズ特性が変わると考えた方が良さそうですね。
>
> 実機で実験していましたが、ブレッドボード上に新しく33Eの回路を作って検証したいと思います。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
Re^4: 70MIPSでI2Cサポート
163
: 15/02/27-13:40
dsPIC33E

ご指摘の通りプルアップ抵抗を4.7kΩに変えたところ70MHzでも快調に動作するようになりました。

また以前からあったリセットではない謎のフリーズ現象も改善されました。
恐らく、9軸センサに関係するI2C1とT2割込みレベルをシステムの中で一番高くしていたせいで、I2Cの通信がたまに失敗してそれで再同期するまでシステム全体が止まっていたのだ思います。

今まで1kΩでそれっぽく動作していたので気付きませんでした(汗汗
ひょっとして今までノイズのせいにしていたアレやコレも全部プルアップ抵抗のせいなんじゃないかと納得しています。。
▲pagetop
タイトル
記事No
投稿日
投稿者
参照先
プルアップ抵抗の話
165
: 15/02/27-18:51
dsPIC33E

しかし何故プルアップ抵抗が大きいと上手くいくのでしょうか・
(電気の根本的な知識が抜けている気がして)

信号の立ち上がり立下りのエッジは抵抗値が小さいほどきつくなって理想的な矩形になり、消費電力の分だけしっかり通信できそうな気もするのですが……

抵抗が大きすぎると充電時間が掛かりすぎて高速通信できなくなるという理屈は分かるのですが、小さいと何故ダメなのでしょうか?
▲pagetop

- WebForum -