どちくしょうが!、シリアル通信なめんなよゴルァ
線繋がってたら動くとでも思ってんのか!!
規格、伝送方式、符号化、基板設計、
静電対策、伝送線、XT、EMC対策
考える事ぁあ山ほどあんだよ!!!と、合コンでブチ切れたい
尚、「センサーはI2Cだ!」とのたまう奴は来なくていいからw
※前スレ
【古い】シリアル通信【最新】
http://2chb.net/r/denki/1112199189/ ここんとこオシロスレで聞いて1-Wireを調べてた。
ちょっと遅いが伝送距離500mとか、電力も送れるとか、デバイスを沢山ぶら下げられるとか、それで線2本とか、規格としては中々良いね。
でもなぁ〜、Maxim社がライセンスをガチガチにしている為か、ほぼMaxim社しかデバイスを作ってない。Microchip社がマスター側を少しやっている位。
で、Maxim社だから高い高い。コストメリットが無いなぁ〜
>>2
おわっ! 宣伝せずにしばらく俺様用チラ裏スレにしようと思っていたのに、見つけるの早!!
4-20mAにはHART通信があるからね。
低速で変なシリアル通信規格に味付けしてみたくてさ >>4
なるほど。
センサーの校正値とかにTEDSも含まれそう。
そういやVGAケーブルを介したモニタのプラグアンドプレイはどんな通信をしてるんだろうって思ったらI2Cっぽい。
基板外で使われるI2Cの例になるかな。 >>5
DVI, HDMI, DisplayPortもI2Cで通信してるよ。
オシロスレッドのI2Cキッズがドヤ顔するでしょうね。 >>5
TEDSは知らんかった。校正とかの記録があるから、比較的高価なセンサーで使うのかな。
いきなり新しい事を知ったよ thx
ディスプレイにI2Cは使われてるね。EDIDを読み取る為に。
でも中身的にはディスプレイ側にEEPROMがぶら下がっているだけ。電源もPC側が供給してる。
ただしDisplayPortはもっと進化しているよ。
DVIやHDMIとの上位互換性の為にI2CモードもあるがDisplayPort時にはLVDS双方向モードになり、EDIDは勿論、レーン構成のやり取りや信号品質のやり取りもしているんだ >>6 >>6
奴がここに来ませんようにw
なにせまともな会話にならないからなぁ 1-Wireの独りネタw >>3
1-Wireデバイスは高い。でも、1-Wire未対応チップでもこんな回路で1-Wireに接続出来るとか。
面白いね、実に面白い!
ならさ、デバイス側もMCUにすればADC, DAC, GPIO, I2Cに変換出来て色々と接続出来るね。
安価なMCUは50円位だし、ちっこいMCUなら1-Wire経由の電源で十分だし、Maxim社のラインナップの制約を受けなくなるし!
で、俺がこれを思い付いたって事は誰か先人が既にやっているに違いない(笑)
MCU用のオープンソースがどっかに落ちてるんじゃね? オシロスレでも聞いて誘導されてきたんだが、相談に乗ってほしい。
STM32F446nucleoボードと秋月のBMX055をI2Cで接続しているんだが、エラーが多発するんだ。
波形はこんな感じで、リンギングが原因だと思う。
リンギング対策で
・ダンピング抵抗50〜500Ωまで
・チップフェライトビーズ120〜600Ωまで
・パイ型フィルタ(https://www.murata.com/ja-jp/products/emc/emifil/library/pickup/sensor)
を試したんだが、一番ましなチップフェライトビーズ120Ωでも上の画像程度。
ボードのピンからBMX055までの配線長は10p以下。
通信速度は400kbpsで100kbpsだと速度的に厳しいのでここは妥協できない。
どうすればエラーが出ないレベルまで下げられるかな? あ〜ぁ、建ててまだ24時間も経って無いのにバラされてしまったよorz
>>10
リンギングが原因では無いと思うな。気になるならダイオードクリップしてしまえw
でさ、I2Cはオープンドレインで接続する規格。つまり立ち上がりは抵抗による浮遊容量へのチャージ波形。つまりCR時定数の波形になる。
なのに立ち上がりでオーバーシュート、つまりSTM32のI2C駆動設定を間違えているよ。 たしかにオープンドレインには見えない波形。
プルアップ抵抗はどれぐらいですか?
あと、STM32のI2Cの初期設定はどんなになってるんだろう。
と思ったけど、なんか立ち上がりのはじめの部分(1.5Vまで上がるところ)の勾配が不思議。
単純にプッシュプルになってるならこうはならないような。
STM32とBMX055の間に電圧変換とかバッファとかは入ってないですね?
>>10
既出だけどジワジワ上がってる所が怪しい動き
データシート見たけど、型番は実際の所よく分からんかったけどボードにはブルアップ抵抗なくて、AVRの内部抵抗がデフォルトでは標準になってるはず
AVRは久しく触ってないけど、恐らく電源はUSBでしょ?
ならAVR側の電源は5Vで秋月(型番分からないから適当なの)の方は3.3Vだったから、そこが気になる
設定でプルアップ切ってなかったら切るべき
I2Cの立ち上がりはプルアップ抵抗とコンデンサで調整するのが基本
秋月の方は10kΩになってるぽいけどこれは大きすぎ2.2kくらいにしてみるべき(ここは適宜調整) 立ち上がりは適度に鈍るようにしてあげてほしいけど、抵抗とコンデンサの定数はLTSPICEとかでシミュレーションしてから決めてください
秋月のは写真よく見るとプルアップのジャンパは未実装か
結局コンデンサが信号線とグランドの間に入ってないのが原因な気がする
>>10
通信距離が10cm以下なら余計なfilterは要らないと思う
考えられる原因としては(確認するべきポイント)
・ センサーモジュールのジャンパ設定があってるかの確認
・ I2Cのプルアップ状況の確認(JP4~5,8含む)
・ センサモジュールのサンプリング速度と読み込みレートに問題が無いか
・ プログラム側に問題はないか
あと、信号のプロービング方法間違ってると思う
・ 2本ともGNDを正しく接続してるか
・ 1:1ではなく1:10を使用してるか 何でエラーになってるかの原因はクロック立ち下がりのリンギングにあると考えられる
これが1Vを超過してるのでBMX055の通信線のVIL 0.3VDDIOをオーバーしてるのは明らか
ここを確かめる場合もっとズームして重ね書きでトリガレベルを1.1以上(感覚では1.5〜2.0Vまで上がる時とがあるのでは)にして見つけられるはず、測定器次第だが
一般的にはダンピング抵抗が効くのはインピーダンスの不整合で発生してる場合なのでI2Cには効果はほとんどない
フェライトビーズのフィルタは10MHz超えて100MHzに掛けて効いてくるものが殆どで低速のI2Cとは相性が悪い
探せばある気はするけど選定も入手も価格も面倒くさいと思う
>>10
ついでに気になった特徴はSCLとSDAのハイ時の電圧の変動が同期してるでしょ
電源ラインも弱いか、プルアップ抵抗から嫌な回り込みしてる証拠かなと思う >>12
> 立ち上がりのはじめの部分(1.5Vまで上がるところ)の勾配が不思議。
それ、不思議だよね。
どこかで見たような気もするけど、なんであぁなるんだろう? >>22
それか
パラ見して信号がが0.5Vccの閾値行ったらトリガ検知してdynamic driverが動くとか書いてあるから1.7Vまでリンギングが行ってたらそれが原因の一つで確定かな(他にもあるかは知らない) >>22
FXMA2102とな?だからどこかで見たような波形なのかな。
話は外れるがFXMA2102はA側とB側の電位差が不要で、バス切断可能で、かつ安価。
ノイズ対策に便利でオススメ 測定ポイントによると思うけど、リンギングそのものはプローブの当て方でも変わるしなあ。
エラーが多発するというのは、ちゃんとデータを取れていることもあるのかな?
400kは譲れない、ということだけど、100kなら安定して取れているのかな?
クロック外してデータだけ見てリンギング出てればその可能性は排除できる
I2Cはハイは抵抗から出してで、ローはトランジスタで吸うから電流レベルが全然違うのが特徴的で例えばグランドリードによるリンギングはこういう等方的に現れないと言うのが俺の考え
それよりむしろ通信ラインの容量が小さいからプローブ付けたら現象出ないとかの方があり得る
トイオシロっぽいから帯域が足りなくてギブス現象が出る可能性もあるけど、見た感じは余裕でしょという感想
>I2Cはハイは抵抗から出してで、ローはトランジスタで吸うから電流レベルが全然違うのが特徴的で例えばグランドリードによる
>リンギングはこういう等方的に現れないと言うのが俺の考え
オープンドレイン一般論としてはそれでいいけれど、FXMA2102を通しているので純粋なオープンドレインではないしね。
LHの遷移時にコンプリメンタリ駆動しているし。
>>28
SCLはマスタから出るのでSCLを見れば等方性は分かるよ
これはマイコン-変換器で見てるはずだし みんな教えてくれてありがとう
まとめて答えると、
・STM32の出力設定はオープンドレインになってる
CubeMXの吐いたコードは当てにならないことがあるけど、コードを読んでもあってるし、
実際に動かしてレジスタをモニタしてもオープンドレインだから本当にオープンドレインだと思う
・STM32のプルアップは10kOhmで、こっちでプルアップしてる
BMX055もさらにプルアップしてトータル5kOhmにしたけど波形を見た限り違いが判らなかった
・使ってるオシロはpicoscope3406っていう200MHz帯域のもので、プロ向けとしてはチープだけど
トイオシロとしては高級すぎると思う
・測定個所はnucleoボードに生えているピンで、これに直接プローブを当ててる。
・エラーの原因はおそらく立下りのリンギングだという指摘はあってると思う。
仕様によればLOは0.3Vddということだから、3.3V系の場合は0.99V
数回流すだけで1V超えることがあるんで、すぐエラーが出るのは当然だと思う。
・BMX055にはレベル変換ICが使われてるのは分かってたけどこれが通信に影響を
与える可能性を全く考慮してなかった。
>>10の波形は変換器を通ったあとのBMX055側での波形でしょね。 >測定個所はnucleoボードに生えているピンで、これに直接プローブを当ててる。
あ、そうでしたか。>>32は撤回。
駆動側のI2Cも立ち上がりのアクセラレーションがかかるんですね… 詳しい情報出てきたので言えるけど
この場合の正しいプロービング場所はSCLはBMX基板のGNDと変換器入力ピン相当(データシートB0)ね
SDAはどうにか方向選別して両側見る必要あるけど、SCLはマスタから出るから受信端で見ないと駄目
送信端は波形が崩れやすい
>>18
> 何でエラーになってるかの原因はクロック立ち下がりのリンギングにあると考えられる
その可能性は極めて低そう。
I2Cにおいて SCL=Lは「データラインのHIGHまたはLOWの状態の変更は、SCLラインのクロック信号がLOWの場合にのみ可能」であり、波形の中では Lの時に SDAが変化している。
つまりリンギングは何も影響を与えていない。
そりゃそうだ、0.3Vddを超えても不感帯に突入しただけ。
Hとして認識されるには0.7Vddまで上昇しないといけないのだから。 >>31
う〜ん、エラーの原因が分からんね。
ちなみにNucleoにI2C EEPROMとかI2C SRAMとか、他のデバイスを接続した時は通信に成功しているの?
OKなら問題はBMX055側、NGならNucleo側に問題あり >>35
こんなちょっと出した波形で1V超えてるなら頻繁に1.5Vくらい普通に行くよ
それだけでクロックが崩れる
尚且クロストークも発生してる
前で書いてるけど変換器は0.5Vcc超えたらハイにしてるはずだ
変換器のクロック出力も見てみればいいんだよ >>31
色々悪い条件を重ねてシミュレーションしてみたんだけど
立ち上がりでリンギング出る理由が・・・
オープンドレインで動いてない可能性を疑いたくなるが、CubelIDEで設定してるなら問題ないはず・・・
IOのスルーレート下げられるから下げてみたらどうだろう
あとIOもVDDも3.3Vだろうから、レベル変換IC無視して直結してみては? >>37
0.7Vddは3.3V電源なら2.3V。1.5Vでもまだ不感帯の中だよ
> 変換器は0.5Vcc超えたらハイにしてるはず
そういうI2C規格に反したデバイスは作られないし、実際に違う 立ち上がりでリンギングは出てないのでは。
クロックのリンギングが問題になるなら、100kでもエラーが出ると思うけれど
100kと400kで違うかどうかは、話には出てなかったかな。
実際の配線はどうなんだろう。写真があれば、見て意見ができる人もいると思う。
ところで、VIH は「これ以上は間違いなくHと認識される電圧」を指す。
なので、それ以下でもHになることは普通にある。
同様に、VIL は「これ以下は確実にL」。それより上でもLになることはある。
0.7VDD〜0.3VDDは不感域ではなくて、そこの中のどこかが閾値と考えるべき。
74シリーズのC-MOSロジックでも、シュミットやTTL互換入力タイプでもない限り、VCC-GNDの中点付近に
閾値があるような認識を持ってる人は多いよね。
なお、0.7VDDと0.3VDDはシュミットのヒステリシスを反映したものでもない。
I2Cの場合はヒステリシスのMinが0.05VDD。
プルアップ抵抗がでかすぎると思う。
プルアップ抵抗を小さくすれば立ち上がりが早くなると共にリンギング
にも多少は効果があると思う。
配線がどうなってるか画像up。
リンギングが原因と決めてかかると解決が遅くなる。
まず100kHzでちゃんと動くのかどうか試してから順番にやった方が良い。
>>41
ブルアップは5kΩらしいよ。3.3Vだと大きい印象。
> まず100kHzでちゃんと動くのかどうか試してから
賛成。EEPROM繋いで動くのかな?
リンギングもショットキーダイオード噛ませればいいし。 >>42
>>10の波形のゆっくり立ち上がる部分は片側のプルアップ抵抗(10kΩ)のみで
引っ張り上げてられていて、その後FXMA2102がドライブして急激に上がってる
ということで、並列になるのはHレベルになってからだと思う。
立ち上がりが遅いから元が1usくらいのSCLが600nsあるかないかになってしま
っている。 >>43
そっか、FXMA2102で分離するから10kΩか。大きいな。
ところでI2C規格を読み直したら、マスターが1つならPush-Pullで駆動しても構わないとか。ほぉ〜 >立ち上がりが遅いから元が1usくらいのSCLが600nsあるかないかになってしま
>っている。
BMX055のI2CクロックのH時間のminが600ns。>>10の波形を見るとだいたい600ns。
ちょいとはマージンがあるとは思うけれど、プルアップで改善できるなら試す価値あるかも。
>>31の
>BMX055もさらにプルアップしてトータル5kOhmにしたけど波形を見た限り違いが判らなかった
この「さらにプルアップ」なんだけど、
さらに、とユーザーが能動的になれるのは、ユーザーが手を加えているからだと思った。
https://akizukidenshi.com/download/ds/akizuki/AE-BMX055_20180403.pdf
もし「さらにプルアップ」がR3,R4を指すなら、中継ICの電圧遷移に関係なく、最初からNucleo側と並列になってる。 みんなアドバイスありがとう。
・BMX055以外にI2Cスレーブデバイスがなかったので、STM32のI2Cを2つ使って
自分自身に信号を送るようにしてみた。STM32内部のプルアップでは波形がなまりすぎだったんで、
別に2.2kOhmでプルアップしてみた。
立下り時にリンギングがみられるけど最大でも500mVくらい。
測定の様子→
波形→
・上でうまくいったのでBMX055を接続した状態で2.2kOhmを追加したけど、波形の違いは判らなかった。
その時の回路図(SDAとSCLは同じようにプルアップしてるので簡略化してる)はこんな感じ
・STM32とBMX055の配線はこんな感じ
使用時の様子→
配線の様子→
STM32の設定は問題なさそうで、やっぱり配線の問題っぽいとこまでは分かった。 >>46
問題は相手側かぁ〜
配線も泣き別れしているけど、これ位の長さなら問題無さげ。
お試しでショットキーダイオードは付けた? >>46
以前の波形と比較するとSCLのパルス幅が違うんだけどI2Cの設定
変えたの?
傾きが違うのはプルアップ抵抗の差としても立ち上がり始める
タイミングが違うみたいなんだけど。
>>46
もうひとつ。
電源のグランドはつながってるけど信号のリターンがないので
STM32のSCLとSDAが出てるコネクタ内のグランドとBMX055の
グランドをつないだ方がいいね。SCLに添わせる感じで。 >>46
ちょっと前に軽く言ったけど
パッシブプローブのグランドリードを正しく接続しないと正しく測定できないよ
↓以下はは同じ回路から測定方法を変えたもの
(正しく測定した波形)
(正しく測定した波形・拡大)
(グランドリード不適切な波形)
(グランドリード不適切な波形・拡大)
で、リンギングの原因は測定方法だろうから、実際の回路に問題は無いと思うのよ
速度上げたせいで加速度センサのバッファが空の状態でデータ読み出してない? >>46
ところでそもそも、
> 接続しているんだが、エラーが多発するんだ。
これってなんのエラー?
どこかのCRCエラー?あるいはNAK?レジスタ値がおかしい?
どれ? I2C Fast-modeでのSCLの規格
tLOW 1.3us min
tHIGH 0.6us min
抵抗でプルアップしている以上バス上のtHIGHは短くなるんだから
tLOW 1.25us
tHIGH 1.25us
のduty=50%で送信すれば規格を満足しそうに思うんだが、わざわざ
tHIGHを短く送信するのが普通なのかな。
なぜtLOW 1.25us minの規格にしなかったのだろう。
1000kHzの方の規格ではtLOW 0.5us minとなっている。
>>52
I2CはLの時にデータセットし、Hの時に読み取るからじゃね? >>52
あと、マルチマスターの時にSCLの引っ張り具合を見てなんちゃらかんちゃらと規格書に書いてあったな。
それ絡みとか? 俺は少なくとも歯学部卒業して以来、常に医学部コンプを持っていた。
確かに歯学部入学当初は同じような境遇のヤツが多くいた。
一年生の時から「将来は口腔外科医としてやっていきたいです」
なんて言ってな。
でも結局口外に進んだのは俺一人。
皆、歯学部の6年間で医科との絶対的な差に気付いたか。
歯科という本来の役割に気付いたか。
はたまた6年間チャランポランな学生生活で当初の志を忘れたか。
>>58
>0.3×VCCという入力“L” レベル(VIL)より低い電圧をロジック“L” と解釈し
は、「VIL(0.3・Vcc)より低ければ、Lと解釈しないといけない」の意味であって、
高い電圧から下がってきたときに、「VIL(0.3・Vcc)きっちりに落ちるまではLと
解釈してはいけない」という意味じゃないよ。
っていうか、その資料の図1に0.7・Vcc〜0.3・Vccについて、
Receiver Threshold Band (しきい値はここの範囲)
って書いてあるよね? 不感域とは書いてないでしょ? >>59
> Receiver Threshold Band (しきい値はこの範囲)
おまいはアナデバと喧嘩する気なのかい?
「より低い電圧をロジック“L” と解釈」「より高い電圧をロジック“H”と解釈する必要があり」と説明されてんだよね。
しきい>値<ならそのどこかにあるって解釈もあるが、しきい>帯<なんだよ。
まぁ論より証拠、そのメーカー教えてね シュミットトリガを非明記で使ってる方がまともなベンダーならありえないぞ
VILを超えたり、VIHを下回ってるのに、ヒステリシスが入ってるはずだから問題ないとかやってんのか?
んな評価有り得ないよ
>>61
> シュミットトリガを非明記で使ってる方がまともなベンダーならありえないぞ
いや、あるかどうかは知らんけどそれでも規格に準拠してればいいとは思う
問題はID:tR2dKQt0が非明記なのにそれがある「はず」っで思っちゃってところ
まあ低能によくある「書いてない所は俺の都合のいいようになってるはずだ病」だと思う >>58,60
I2Cを語る以前に、基本のロジック回路から勉強し直すことをお勧めします
>40,59の方の説明で有ってるので、理解出来ない様でしたら「理解力・読解力」をもっと身に着ける事をお勧めします >>66
Vhys シュミットトリガ入力の
ヒステリシス: 0.05VDD
の意味もわかってないんだろうな…
そもそもシュミットトリガ自体を理解してるのか怪しいレベルw >>64
なんと言うか、ネットには知ったかぶりして平気でウソを言う>>40な奴が居るからさ、気を付けなきゃいけないんよ。
見ててごらん、「ごめんなさい」と言わずにしれっと消えるからさ >>69
ヒステリシスとか最小値とかをちゃんと理解してたら
> そりゃそうだ、0.3Vddを超えても不感帯に突入しただけ。
> Hとして認識されるには0.7Vddまで上昇しないといけないのだから。
なんてアホなことは言わないはずだがw VIH, VILの意味ぐらいすなおに受け入れないなら電子工作を語らない方がいいと思う。
ヒステリシス電圧 0.05Vdd(min)からも考えてみなよ、って親切をうけながら突っぱねてどうするんだろう。
データシートや規格に最小値として0.05Vddと書かれているわけだから、デバイスにばらつきがあったとしても
VDD=5Vであるなら、0.25Vのヒステリシスがあればいいことになるよ。ここは合意できるかな?
もし0.7VDD〜0.3VDDが不感地帯だとするのなら、ヒステリシスは誤差なく0.4VDDでなければならぬ、って
ことになる。そもそも、廉価な半導体部品を作るのに、そんなに誤差なく作れるわけがないのにな。
VIL=0.3VDD(max)の解釈はどうするつもりなんだろう。これは
「このICの入力に電圧を与えてLとして認識してほしけりゃ最大でも0.3VDDにしなさいよ」
ってことで、
同様にVIH=0.7VDD(min)は、
「このICの入力に電圧を与えてHとして認識してほしけりゃ最小でも0.7VDDにしなさいよ」
だし。
VOL=0.4V(max)は、「指定条件下で、このIC(または規格のIC)が出力するLは最大でも0.4Vにしなさい」ってこと。
>>58のリンク先にこう書かれている
「これらの要件により、ロジック“L” のノイズ・マージンとして0.3×VCC – 0.4V」
VCCが5Vなら、「ロジック“L” のノイズ・マージンとして1.5V – 0.4V」となっている。
つまりこれは、「規格に適合したICのワーストケースでL出力が0.4Vであっても、受ける方のVILが1.5Vなので、
1.5V-0.4V =1.1Vのノイズが入っても大丈夫」 ということ。
VILを超えたら、どこでHと認識されるか、わからないからそれ以上はマージンに含まれない、という意味でもあるよ。 不感帯 シュミットトリガ
でGoogle検索。多くはヒットしないけど、使われている例もあるね
>>72
不感帯で検索したら M-System、機械工学辞典、横河電機、オムロン制御機器、宮崎技術研究所、PID制御論文。。。個人プログはヒットしねぇーw
業界用語みたいね、プロ? 100BASE-T と 同軸ケーブルをブリッジする製品は見つかったけれど、IC単品で売ってるのかな。
普通の1000BASE-Tでも 100m までいけるんだね。
既設の同軸が使えるのでもなければ、LANケーブルの方がとりまわしはしやすそう。
不感帯は英語だとdead band だったはず。
少なくとも、
>>58のリンク先の図の Receiver Threshold Band は 不感帯 ではないね。
VIH、VILの値は、直接はヒステリシスやしきい値を表すわけじゃないことは分かったのかな。
>見ててごらん、「ごめんなさい」と言わずにしれっと消えるからさ
こんなふうに書いた人は、間違ったときは「ごめんなさい」というべきだ、という規範を持ってるんだと思う。
でも消えたのが本人というオチなんだろうか。それは悲しい。 >>76
「G.hn」でDigiKeyを検索すると1社見つかるところまでは見た。専用ICだった。
Gはギガの略で、hnはHomeNetworkの略、ラスト1マイル接続用らしい。ケーブルTVの同軸にギガを載せるもの。
光が普及した日本ではホーム用には出番無さそうだが、監視カメラの既存配線を使う用途では行けるんかな。
より対線のRS-485でデジタル映像伝送は、流石に無理なのか? >>80
そのページは見たことある。
距離と転送レートのグラフもあるね。
10Mbpsだと300ftちょい、100mでRS-485を選択する理由がね。 1ペアだからコリジョンを考慮しなくても良いのか。
イーサネット系はそろそろコリジョンって仕様をなくしても良いと思うんだけどな。
>>83
1ペアだからコリジョンはあり得るよ、ハーフデュプレックスだから。
イーサでもフルデュプレックスでスイッチングハブならコリジョンは発生しないよ。 >>84
ボケてた。
コリジョン有ったら距離伸ばせないはずだが。IPG延ばしてるのかな? イーサネットは10BASEと100BASEと1000BASEのそれぞれの系でプロトコルが物理層からして違うし、ハブやルータで吸収してるだけ
10BASE系はプリアンブルとジャム信号、待ち時間の整合でコリジョン問題を解決している
だから端末同士の通信だと片方が全二重だから大丈夫というわけでもなくて全二重と半二重の通信だとそのままコリジョンで死ぬ事もあり得る
そのため1000BASE系からは全部オートネゴシエーションになった
>>86
> 10BASE系はプリアンブルとジャム信号、待ち時間の整合でコリジョン問題を解決
IEEE802.3a/iと、802.3cgは同じなのか? >>87
> 片方が全二重だから大丈夫
誰もそんなことは言ってないけど大丈夫? イーサネットの規格は乱立しまくったのもあって弊害も多いけど、それ自体のプロトコルはよく考えられててコリジョン検知一つ取っても学べる所が多い
他の通信規格より複雑なプロトコルが早くからパッケージ化されていて触れる事なく使えるようになってるけど
この板でそんなチンケな一般論を開陳したくなっちゃったのかw
フリーなロジアナは見つかるが、フリーなI2Cアナライザが見つからない。
俺の探し方が悪いだけか?
>>93
よくわからんが、Amazonで1000円位か4000円位のロジアナ+PluseView(sigrok)あたりじゃ駄目ですか? おぅ、sigrokに Protocol decoderがあるのか!
上の方でアドバイスをもらった者だけど、いろいろ試してみた。
・クランプダイオード追加
(これに伴って、モジュールには5Vではなく、3.3Vをnucleoボードから供給するように変更)
→エラー(NAK受信)はなくなったが、波形が汚いのは相変わらず
・さらに、SCLだけ信号線とGNDをツイストペア化
→あまり変わってなさそうだけど詳細を見ると立下りのリンギングが気になる
概観:
詳細:
青がSCLで、立下り時のリンギングが気になる
とりあえずこれで3時間くらい、何らかのエラーが発生したら落ちるようにして
ポーリングでひたすらデータを読んでるけど動作しているので
・クランプダイオード有
・ツイストペア無
・電源3.3V
でいこうとおもう。 >>100
もしかしてBMX055上のLDOが発振してたとか。
波形的にはそうは見えなかったけど。 >>100
あと立ち上がりが遅い。プルアップを小さくしようよ >>100
最近自分作った矩形波シグナルジェネレーターでリンキングしてたので
出力にAをGNDにKのVfの低いダイオード入れたら止まったよ
もうやってるならスマソ >>100
FXMA2102を外せばすべて解決する気がする I2Cでスレーブ側でSDAがLowに固定で固まる症状でるひといる?(´・ω・`)
I2C_LCDがこういう特定の症状だすから個別に SCLのワンパルス送って復帰させてるんだけど
標準でコリジョン起きた時SCLにワンパルス送っておいたほうがいいのかな?(´・ω・`)
♪前から来る奴ぁワンパルス、後ろから来る奴ぁ背負い投げ
ルネサスのI2Cトラブル相談でもSCLからワンパルス送る的なこと書いてあったってことは
コリジョン時にSCLからワンパルス送るのを標準仕様にしておいたほうが無難ってことだよね?(´・ω・`)
どうおもう?(´・ω・`)
>>10
フェライトビーズがコイル成分になって I2Cラインの静電容量と共振してコリジョンが多発してるんじゃない?(´・ω・`) フェイライトビーズで発振実験してる人なんかもいなかったっけ?(´・ω・`)
全回路配線し終えて8個のBMX055と通信できるようになったよ
今ぶん回して通信異常が起こらないか確認中
>>103
その意味でクランプダイオードって言ったんだけど用語の使い方間違ってた?
>>105
FXMA2102は端子がボディに隠れてるんでうちの装備では簡単に取れなさそう
取れればパターンを追いかけてジャンパ飛ばせると思うけど
>>109
うーん、フェライトビーズってR高いから多分Qが低い
なので、発振はそうそうしないんじゃないかな >>111
Qが低くても 静電容量と減衰振動するでしょ?(´・ω・`) フェイライトビーズはトロイダルコアにくらべてノイズが抵抗成分をすり抜けやすい気がする(´・ω・`)
フェイライトビーズをFM波の出力増幅に利用したりして電子工作してるひとのwebなんかもあるきがする(´・ω・`)
>>112
そのほうがプロジェクトがおおきくなったときトラブル少ないよね(´・ω・`) >>108
この一行だけでトラブルや故障の相談の件数が減って 費用対効果抜群じゃないか?(´・ω・`) 仮にコリジョンでI2Cがとまっても復帰できれば永遠に通信できる(´・ω・`)
error復帰もふくめて通信テストを一日中やって error対処がうまく出来てるかテストしてる(´・ω・`)
1000万回くらいやってもフリーズすること無くI2C通信できてる(´・ω・`)
ノイズによるコリジョンからの復帰をちゃんと組んでないとすぐに故障判定とかして
補修費用コストがかさむ(´・ω・`)
>>120
このちゃんとってのが曲者で毎回担当者違いますみたいなのだと、いつか問題が発生するのよね
プログラマは電気の事分からんから
電気エンジニアですらI2Cあんま知らんの多いし >>121
デバイスごとにeepromなんかにコリジョン回数を記録しておいたほうがいいかも(´・ω・`)
このデバイスはコリジョン回数 単位時間あたり 何回以上で交換とか基準も考えておいたほうがいいかもね(´・ω・`) eepromなんかにコリジョン回数記録とかまではめんどっちいかな?(´・ω・`)
ただユーザーがどんなerrorが起きてるかぐらいは把握できるようにしときたい(´・ω・`)
けっこうこうやって掲示板に気軽に書き込んでると
あっそういえばここ組んでなかったみたいなの思い出す(´・ω・`)
>>106
理解出来て無くて悪いけど「スレーブ側のSDAがLowで固まる症状」がコリジョンであると断定した理由はなに?
コリジョンと聞くとマルチマスターでマスターからのアクセスの衝突を思い浮かべるんだけど >>125
コリジョンフラグが立つからだけど?(´・ω・`) > コリジョンフラグが立つから
フラグが立つだけでマルチマスターでは無いのね。
で、原因は
>>120
> ノイズによるコリジョンからの復帰
ノイズって事かぁー >>127
スレーブ側のSDAがLowで固まる症状 とかで検索するとでてくるから特定デバイスのバグではあると思う(´・ω・`)
ただその特定デバイスも使いたいし ネット検索で類似例がこれだけあるってことは
標準で組んでおこうかなって話(´・ω・`) 特定デバイスの I2C論理回路の中身に固まるようなハードウエア論理回路があるものが多数あるってことだから
その対策を考えておいたほうがいいでしょ?(´・ω・`)
組み込まれた論理回路のメタステーブルを解決するにはソフトめんでの柔軟性
を活かす以外ない(´・ω・`)
>>132
他にも色々あるでしょ?(´・ω・`)
これだけ多いってことは それなりに対処したほうがよくない?(´・ω・`) >>124
仕様書とかコードを人に説明してるとあっ!って思うことまれによくあるよねw >>133
FAQ 107454、FAQ 107068、FAQ 2000051がヒットするけど内容は同じっぽい。
あとはSH7286とAVRでマルチマスター時のバスロックが1件の、計2件しか無いけど?
ルネ固有問題?ってな印象 お前らほんとなんも知らないんだな
産業用の小さい世界じゃなくて外出たら?
0603のはんだ付け、オシロで評価、I2Cの知識、
これだけ出来るってだけでも引く手あまただから
無理すぎる
> その対策を考えておいたほうがいいでしょ?(´・ω・`)
って思うなら対策すればいいじゃん
まずそんなことが起きないようにノイズ対策すべきだとは思うけどケースバイケースだしね
>>137
組み込まれた論理回路のメタステーブルの問題はメーカー問わずどこでもあるんじゃないか?(´・ω・`)
>>141
ノイズっていっても論理レベルを超えるような大きいノイズは無いんだけどなぁ(´・ω・`) >>142
> 組み込まれた論理回路のメタステーブルの問題はメーカー問わずどこでもあるんじゃないか?(´・ω・`)
I2Cでノイズや不具合なきゃメタステーブルなんてならないでしょ
> ノイズっていっても論理レベルを超えるような大きいノイズは無いんだけどなぁ(´・ω・`)
測定して言ってるんだよね?
そもそも発生頻度も書いてない時点でなんとも言えんが >>145
I2CのレジスタにI2Cクロックとシステムのクロック分周が同一のときの注意文読んだこと無いの?(´・ω・`)
多分低消費電力思考でそのへん攻めてると通常稼働でメタステーブルでる(´・ω・`) >>148
> I2CのレジスタにI2Cクロックとシステムのクロック分周が同一のときの注意文読んだこと無いの?(´・ω・`)
ソース出してくれ ドヤ顔おじさんスレ名物ちょっとネガティブなこと書かれると自分への攻撃だと思って過剰反応しすぎ問題
そんな夜中に書き込みって無職かジジイの早朝覚醒?w
というかいつまでスレ違いのアース談義してんだよw
頭蓋骨アースした方がいいんじゃねーの?外来ノイズで狂い過ぎぃwww
>>149
メタステーブル とか バスクロック分周とかで検索してみ(´・ω・`) >>150
技術にとってお前みたいのは害悪なんだ(´・ω・`)
去ね(´・ω・`) >>151
出せないなら別にいいよ、妄言に付き合う気はないから >>153
eratta I2C で検索かければタイミング関係いっぱいでてくるよ?(´・ω・`) >>155
煽るだけ煽ってコメントなしか・・・・?(´・ω・`) I2C方位計測のテストしてみたら 三次元データ出てきた(´・ω・`)
atan2 で単純な方位 と 地平面に対しての平面x成分の傾き と 平面y成分の傾きデータ取れた(´・ω・`)
3Dシミュレータで視野なんかこれで変えられるね(´・ω・`)
>>156
だからその注意文とやらのソース出せよ
> I2CのレジスタにI2Cクロックとシステムのクロック分周が同一のときの注意文読んだこと無いの?(´・ω・`)
ソースもない妄言に何をコメントしろって言ってるんだ?w >>158
マイコンのI2Cのpdf資料に記載されてるだろ(´・ω・`) >>159
まあそういわずに、具体的なPDFのURLとページ番号を書けば。 20年近く前の話だけど、I2Cの通信でコマンドを2回連続で打つ仕様の製品に携わったことがある。
ひょっとしてメタステーブル対策だったのかな?
1回発目のコマンドだと応答しないデバイスがいるらしく、とりあえず2回打てば問題ない。という理由だったような気がする。
2発目のコマンドでエラーが起きないのが不思議だったけど、あれはなんだったんだろう?
>>161
restartとかじゃなくて?(´・ω・`) ごめん間違えた (´・ω・`)
Repeated Start じゃなくて?(´・ω・`)
>>164
通信速度は最大20kbpsってけっこう低速だね(´・ω・`)
一線信号を反転して二線化とかすれば相当ノイズに強くなって速度増すのに・・・・(´・ω・`)
EMPについてあんま考えてないのかな?(´・ω・`) UART信号のPWM化とかの利点と 一線信号を反転して二線化 を比較すると
後者に軍配があがりそうだけど・・・・(´・ω・`)
BtoBの囲い込み目当ての規格なのかな?(´・ω・`)
電気自動車とかになると大電力の車種なんかも出てくるからEMPとか電磁ノイズに関する
規格が優位になってくるだろうね(´・ω・`)
配線取り回し問題は実は スペースジェットなんかでも
いろいろ言われてたよね(´・ω・`)
でかくなってくると色々問題が発生してくるけど、エンジニアは飯の種だから秘匿しがち
俺もノウハウ全開示なんてしない
トラブルシューティングなら想定外のヒゲ状のノイズ、不安定な電圧、エッジの様子を見たくなる。
ある程度のサンプリングレートでアナログ波形は必要でしょね。
いまどきは廉価版オシロでも、I2C、UART、SPIのデコード機能は付いてるものが多い。
既存品の解析ならともかく、自分のマイコンで、動作のわかっているデバイスを制御するならデコードの出番は少ない。
>>166
CXPIやLINの上位にはCANがあり、それはCANで実現しているからね。
遅くてもいいからCANより低コストでないとメリットが無いという経済的事情。
CXPIをDigiKeyで検索するとロームとかサイプレスだけとか。しかもLINよりトランシーバーが3倍位高い。
欧米では相手にされていない雰囲気。 >>172
CANのほうがトランシーバチップが安いのならコストの低価格化っていう根底からして
いらない規格になっちゃうね(´・ω・`) さらにCANは RS485のIPなんかを利用してたりもするんかぁ(´・ω・`)
RS485のほうが性能高くて低コストってことかな?(´・ω・`)
RS485の物理層だと、送信側がコリジョンを発見できるとは限らんし。
>>175
CANのコリジョン判定にはどんなものがあるの?(´・ω・`) >>173
うぉ!確かにLINよりCANのトランシーバーが安い!
RS-485よりも安い!
まさかこんな事になっているとは知らんかったorz >>177
そもそも通信関係のネックは 問題発生時の人件費じゃない?(´・ω・`) >>176
CANはドミナントとリセッシブがぶつかったらドミナントが勝つけれど、
RS485は、1 と 0 がぶつかったときにどっちが勝つか保証できないし。
プロトコルでの検出は自分で調べて。 RS485
USBもI2CもSPIも電灯線で20mは無理だしw
秋月でトランシーバICが\50円だし
RS485でコリジョンはどうするの?
プロトコルでカバー?
>>181
Arbiter Taskで監視。 リプライエラーでタイマーインターバル可変させて、リトライ。
PIC16Fでだけど。 そもそもRS485は所謂物理層までしか規定してないから衝突みたいな概念はケアしない
4相(全二重)なり2相(半二重)で問題の違いはあるけど、
一番問題になるのが、みんなModbusなりちゃんとしたプロトコルを使えば良いのだけど、特にスレーブ側が気にせず(ユニットメーカーが考えなしに)独自仕様のプロトコルで動かして、解析に時間のかかるバグを発生させやすい
マスタースレーブ通信だからマスター側で衝突しない様に管理できるはずなのにプロトコルが合わないから衝突が発生してしまうのは悲劇でしかない
まぁねぇ。 ベルコン作業でリプライ時間がまちまちなM-S通信では衝突対策は必須だね。
Arbiterの待ち行列やタイムアウト時間を各々変化させてやると9600ボーで6人分ぐらいはなんとかなる。
PLC+Modbusではできない仕様だ。
産業装置なんかでも 電源投入時のタイミングとかコリジョンからの自動復帰の
プログラムがきっちり組まれて無くて
電源投入時に手動でerror処理しないといけないとかある(´・ω・`)
簡単な通信をきっちりやるだけで使い勝手が雲泥の差なのに(´・ω・`)
上の方でBMX055とうまく通信できないと言ってた者だけどやっと安定して動くようになった。
あれから何をやったかというと、
・余計なものを取っ払ってシンプルにするため、FXMA2102を外して、信号線をジャンパで飛ばす
・リンギングを抑えるため、ダンピング抵抗100Ohmを入れる
これで波形を見る限りI2Cの規格を満足するようになったが、かなりの確率でNAKが返ってくる。
よく観察すると、最初の通信を乗り切ると何時間でも通信し続けるため、信号の品質ではなく、
BMX055が起動時に何かあるのではとマニュアルを見て分かったのが、デフォルトのスリープモードが
最初の通信でノーマルモードに切り替わるということから、わざと1発目に意味のない信号を出して、
ノーマルモードに移行するようにした。
これをすると、数回に1度しか起動しなかったのが、10回程度繰り返して毎回起動しているのでこれが正解だと思う。
こんなことネットで探してもどこにも書いてないし、なんでうちだけこんな問題が起きたのか分からんのだが、
ネットの記事ではArduinoみたいなそんなに速度の出ないマイコンを使ってるのに対して、俺が使ってるSTM32F446は
かなり高速なのでそこらへんが関係しているのかもしれない。
波形についていうと、今回はFXMA2102を引っぺがしてダンピング抵抗をつけたが、
つけたままでもダンピング抵抗の値を変えても行けると思う。
心が疲れたのでちょうどいい値を探さずに引っぺがしたけど。
>>188
そういやあのFXMA2102にバスコンが付いて無いんだよな。 >>190
反応無いね。
CAN FDってプロトコルを替えるから、全てのデパイスをFD対応にしないといけないんでしょ?
一瞬検討対象になったけど、それがネックになってボツになった。 >>191
thx
CAN FDやってみたは。
帰って来るメッセージ判断できるんで両刀使いできるよ。
if ((_gMsg.field.formatType == CAN_2_0_FORMAT) && (_gMsg.field.idType == CAN_FRAME_EXT))
{...}
64バイトは応用が広がるな。
CANからCAN FDに全作品変更予定。 30数点のアナデジ基板があるんでKiCAD修正とファームウェア修正せねば。 Microwire…
単語は知ってたがSPIの亜種かと思ってたわ(今日知った)
LINのウェイクアップについて質問です。
現在LINについて勉強中です。
LINではマスタノードからのヘッダ送信で通信が開始する認識です。
スリープフレームはマスタノードからスレーブノードに送信するという説明を見ました。
一方ウェイクアップフレームはスレーブノードからも送信出来るとありました。
この場合、スレーブノードは何をトリガーにウェイクアップフレームを送信するのでしょうか。
マスタノードはスリープ状態なのでヘッダ送信も出来ないのではないかと思い、スレーブノードからのウェイクアップフレームはどういう風に送信されるのかがイメージ出来ません。
どなかご教授頂けないでしょうか。
ウェイクアップは通常時みたいにヘッダ→レスポンスの一連の通信ではなく、
ただ一定期間Loにするだけなんですね。
ありがとうございます。
SPIの配線について皆さんにお伺いしたいです。
今いじっている基板でSPIのスレーブを9個つなげてるのですが、インピーダンスマッチングができていないのか、マイコンの出力が足りないのか、なかなかクロックを上げられません。
4MHzまではなんとかいけるのですが、8MHzにするとCLKの立ち上がりが鈍ってしまうのと、MOSIとMISO波形のダンピングがひどいです。
一応配線は1筆書きにして線幅は0.15mmにしているのですが、これだと一番遠位では整合できてるけど、マイコンに近いほうでは歪むような気がして、正しいのかわからなくなりました。
クロックの同期とかなら、ファンアウトバッファを介して分配配線すればいいように思えるのですが、SPIではどうすればいいのでしょうか。
皆さんは、複数のスレーブをつなげる際はどうなさっていますか?
>>197
SPIで9台とかは経験ないけど、全体での配線距離はどのぐらいなの?
バッファとかで出力を上げるんじゃなくてダンピング抵抗入れて信号の立ち上がりを遅くした方が良いのでは?
(現状の波形・推測)
(ダンピング抵抗1)
(ダンピング抵抗2) >>197
> 皆さんは、複数のスレーブをつなげる際はどうなさっていますか?
高速グループと低速グループに分け、間にバッファ入れて分離する。
> SPIではどうすればいいのでしょうか。
9個もデバイス繋いだら配線容量にピン容量に配線インダクタンスで目茶苦茶になる。だから途中にバッファを入れる。
全てのデバイスを高速動作させたいならバッファでツリー構成にする(今はデイジーチェーンっしょ?)
余談:
その昔のISA-Busは8MHzでいいとこ8スロット。でもフルに使うと動かなくて困った。
9個もあるなら発想変更が必要かな まあ、ISAはクロック同期式でもなくて、タイミング規定もグダグダだしな。
余談
>>200
それはATバスの話。
ISAバスはEISAバスのサブ規格だから互換性が取れる様にタイミングも新たに定義された。
とは言ってもATバスのグダグダを駆逐出来た訳では無いのはご指摘の通り(笑)
閑話休題
SPIバスに9デバイスかぁ〜、割と無茶だと思う。
SPIはモトローラが作ったらしいが規格書はあるんかいな?見た事が無い。
それとも、いまやSDカードのSPIモードが標準規格になるんかいな。誰か知ってる?
それで今やSPIもI2CもNXPが作った事になるんか。変なの そもそもSDカードのSPIモードがなくなろうとしているのに。
質問教えてください。
PICを使ってCANの勉強をしていますが、よくわかりません。
IDというのは、29bitと11bitがあります。またフィルタも29と11があります。
1. なぜ長さが2種類あるのですか? どのように使い分けるのでしょうか?
2. アクセプタンスフィルタがありますが、受け入れフィルタのことだと思います。
要は、自分の欲しいIDのメッセージだけを取り込むために、フィルタで and をとって
振り分けている、という考えであっていますか?
3. 受信中にもかかわらず受信側がACKというbitを返すようですが、
例えば5つのノードで聞いている中で、どのノードがACKを返すのでしょうか?
全員か返すのでしょうか? それとも返す人が決まっているのでしょうか?
4. また、ACKを返すのは、フィルタ合格して自分の欲しいデータが届いた時だけ返すのでしょうか?
それとも、自分の受信希望でないIDに対しても、
「送信者さん、ちゃんと送信できてますよ、安心してくださいね」と、
返すのでしょうか? そうすると全員がACKを返すようにも思いますが。
よろしくお願いします。
>>203
ここはハードのスレだからね(>>1)、ソフトの質問にはレス付かないかも (((((^-^; stackoverflowとかで聞いた方がよさそう。
これ答えられる奴は日本の質問掲示板なんか見てないっしょ
>>203
>1. なぜ長さが2種類あるのですか
ackは全員が返すから、誰か受け取れなかったやつがいてもわからない。 >>203
>1. なぜ長さが2種類あるのですか
長さが足りなくなったから
>要は、自分の欲しいIDのメッセージだけを取り込むために、
そんなもん。
ackは該当するやつが返す。
複数同じアドレスな奴がいれば、受け取れない奴がいてもわからない。 ACKっしょん! ・・・うー。だれぞ 噂しやがったなバーローちくしょーい!!
>>202
SPIモードで 数十Gbyte読み取ったら数十時間かかったw(´・ω・`) 基本的な質問すいません
232cってTx、Rx、SGの3本で全二重通信とあるんですが、
SG共通なのになぜ双方向に同時通信できるんでしょうか。
SGで帰りの電流がぶつかるように思うんですが。
>>212
SGは全てを受け止める大地のような存在だから 電流には着目せず、電圧で送信・読み取りしてるからじゃね?しらんけど
マルチマスターの衝突防止を自分で実装すると結構奥が深いね。
2wireでいい方法ある?
>>215
そら無理レベル。お互いに衝突して無い事を同時に確認しても、次のフェーズでは衝突するし。
さらに同時にリカバリしようとしてまた衝突。ヘタすると永久ループ入り。
優先度をラウンドロビンで回すしか手が無いと思うな >>217
良いアイデア!!
それなら出来そうだわ。
マイコンがもう一ついるけどね。
>>216
同時に送信ってあり得るからね。
何か通信の開始をずらせる方法があればいいんだけど。 >>218
CSMA/CA方式っていうのがあるんだね。
ネットにはあまり情報がないけど。 >>220
CSMA/CDなら10BASEでさんざんやってたろ。 CSMA-CDってゼロックスが技術情報無料で公開してなかったっけ?
>>225
さすがに >>216 はバカ過ぎると思わないの?
CSMA/CD はバックオフしてるだろ。 2台のマスターが同時進行したとき
(9600bps/8Byte送信時間7ms/UARTの受信バッファ1Byte単位)
1.データを8Byte単位のパケットに分解
2.10msの間ループし、その間Rxバッファにデータの着信があれば2.へ
3.データ送信
でもこれだと1nsも違わずに同時送信した場合衝突するね。
間違えました。UARTのバッファが1byteで、バッファを確認できるのが、1byte単位なので、1byteの送信時間である8/9600秒、つまり約1msは空白時間(他のマスターの送信を検知できない時間)。その間はどのマスターも同時に送信の権利を取得できる事になるね。
>>229
それ、無い物ねだり。
元ネタは>>215氏だが、この2wireとは通常I2Cの事。そしてI2Cのマルチマスターをサポートしているならコリジョン検出機能も当然サポートしている。
それなら話はハイお仕舞いだが、通常のシングルマスターはそんなコリジョン検出なんてない。通常使用なら不要な機能だからね。
そんなシングルマスターでマルチマスターをしたい。どうコリジョン検出してリカバリするか?
が議論の焦点なんだが、ここにコリジョンを唱えても明後日の話 半二重のRS-485上に複数機器をつなげたModbusがヒントになるかと思い、調べてみたのですが、仕組みはシングルマスターなんですね。
衝突を回避するロジックが欲しい。。。
やはりランダム時間待ちがいいのかな。
データを送信する前に、「今から送信するよ」(予備送信)を数回送る。その間、受信バッファに何もデータが入ってこなければ送信の権利を獲得出来る。
どのマスターかが権利を獲得したら他のマスターは一定時間送信を行わない。
っていうの思いつきました!
ダメ出し添削して下さい!!
ここでいいのかわかりませんが質問させてください。
CANの質問があります。
CANの2本の線を基板の上で終端します。普通は120Ωのようです。
I/F ICのデータシートを見ると、終端方法には、
・120Ω抵抗のみの場合と、
・60Ω+60Ωで中間からコンデンサでGDに落とす場合
が書いてあります。
質問ですが、
・後者の方法は、何のために行うのでしょうか。何か性能がUPするのでしょうか。
・前者の方法と後者の方法は、どのようにして使い分けるのでしょうか?
よろしくお願いします。
>>237
片方が断線しても通信出来る様にするため、たぶん。
(CANには強くないけど)抵抗の中点からコンデンサ経由にすると、AC的にシングルエンド終端2本になる。
CANは一方に障害が発生しても通信継続する仕様で、シングルエンドなら継続出来るし。 >>238
ありがとうございます。
なるほど、頭いいですね。Cで接地されるとてうことですね。
片線で通信できるようにするには、SPLIT端子の付いたICを使うと思っていました。
終端の中点(1/2抵抗値)からGNDにCなので、
コモンモードの強化(Yコンのように)かなぁ、とも考えていました。
回線の小目電圧を除去して、ICの入力電圧範囲に入れるとか。 >>240
大変ありがとうございました。
このように説明された文章を探しきれずにいました。
どうもありがとうございました。
2回読みましたが、
「分割終端により、CANHとCANLの両方のラインにローパスフィルターが作られ、
トランシーバーからバスに出る高周波ノイズの多くが低減されます。」
この部分の説明がよくわかりませんね。
LPFを構成する CxR のCはスプリットのCだと思いますが、Rがどれなのか。
「トランシーバーからバスに出る高周波ノイズ」は、
バス線からICに入ってくる方向なのではないでしょうか、と疑問に思うのでした。
どうもありがとうございます。 ブースター接種 ⇒ 超過死亡 ⇒ 芸能人体調不良
://2chb.net/r/covid19/1651729211/l50
なぁ、I2Cに同じデバイス(=同じアドレス)をピン容量が許す限り目一杯ぶら下げたい場合はどうする?
簡単な手としてI2Cスイッチがあるけど、あれって4系統しかぶら下げられない…
FETスイッチなら安価に並べられるけど、I2CってSDA共通でSCLだけスイッチでもいいのか?
>>245
秋月がヒットしたが、これか↓?イメージ涌かない
スレッショルド可変型ドライバ TD62602P
[TD62602P]
通販コード I-06266
発売日 2013/05/21
メーカーカテゴリ 株式会社東芝セミコンダクター社(TOSHIBA)
TD62602Pは6回路入りのスレッショルドフリードライバで反転型・オープンコレクタとなっております。電源、GND、入出力端子はCMOSの4049、4050と同じです。基準電圧端子(Vref)は内部で1/2VCCになるように設定されていますが、外付抵抗により可変することができます。 I2Cに同じデバイス(=同じアドレス)を目一杯ぶら下げる方法、頭の中で思考実験して安価な方法を閃いたわ。
制御側をどうすっかな……
しかしなんだな、I2Cはシリアル信号を一筆書きに配線出来るのがメリットなのに、アドレスが衝突するとアドレス変換とか、制御信号が複数必要になるのがなんだかなぁ~。SPIでも同じだけどさ。
I2Cでも最新はアドレスが被ったら自動で振り直してくれるけど、あんまり普及してないし。
その点、JTAGってスゴくない?シリアル、割と高速、数珠繋ぎ可、でもデバイスの特定可。その上に本来のバウンダリスキャンで基板の検査可!
I2CやSPIはJTAGに置き換わったほうが、世の中幸せになれるかもと今思った
割と高速といっても、クロック応答の一番遅いものに制限されるんじゃなかったか。
長い歴史があるにも関わらず採用数が低いものにはそれなりの理由があるわけだし、その理由を考える方がいいと思う。
SCLだけの選択でもいけそうな気がするけれど、>>243でも言及されている容量が問題になりそう。
クロックストレッチングを考慮しなくていいなら74xx138でもいいかな。
アナログマルチプレクサを使ってるのは見たことがある。 >>252
> クロックストレッチングを考慮しなくていいなら74xx138でもいいかな。
クロックストレッチ! SDA側をイジる理由はそれだったのか、なるほどね。
あと138、イネーブルピンを操作してクロックにするのか。なるほどね。
ただ8本では足りないや、最大16デバイスを切り替えたいので。
ヒントありがと ラズパイにBME280をI2Cで繋げて温湿度と気圧を測りたいんだけど、ラズパイとBME280を6mほど離したいのよ。
ちょっと離れすぎているのでバッファーを入れたほうが良いかなと思うんだけど、PCA9515を使ったら良いかな?
しくみをI2Cのままにして、バッファを入れて強化する、ということだと、
・両側にバッファを設ける
・プルアップ抵抗を小さくして耐ノイズ性を上げる
ということになると思う。
I2C バッファ で検索したらPCA9600もヒットした。
プルアップ100Ωのオープンドレインでの通信でも10mぐらいはやったころがある。
意図的にノイズを印加したらデータも壊れるけれど、どれぐらいまでOKかは用途次第だし。
コストと消費電流の問題がクリアできるなら良いのでは。
スピードを落として電線を工夫したら(線間容量を減らすとか)、生のI2Cのままでもそこそこ
行ける気もするけど。
プルアップ抵抗下げても限界あるよね。
ノイズでデータの長期的な信頼性は低そう。
限界があるといっても、どんなものにだって限界があるし、信頼線の高い低いもイチゼロではない。
プルアップ抵抗を下げることは、ぶら下げるコンデンサの容量も大きくていいこととセットだし、
より大きいノイズ耐性を持つことには違いない。
イチゼロ思考ってものごとを整理しやすい。陥りやすい罠ですね。
I2C 延長 で検索したら、ほかの物理線に変換するものも見つかる。
(それとて、どこかには限界があることには違いはない)
>>254
そうだね、PCA9515を使うのがいいと思う。
ただ、6mって邪魔じゃない?無線化は考えないの?Bluetooth温湿度計とか立派な奴が2000円、スイッチサイエンスとかで探せばいいやつがありそう。 I2cで長距離ケーブルで引っ張って
痛い目にあったから絶対やらない。
連続動作で変なデータが入る。
バッファ入れたりノイズ対策やったけどゼロにはならなかった。
ちょっと自信が無くて有識者の意見が聞きたいのだけど
速度を20kbps以下にして以下の様な回路にすれば安価に対応できるではないだろうか?
たぶん\(^o^)/
20kbpsで厳しい場合は速度を下げて1か2か1,2両方の方法で対応
1.コンデンサの容量を上げる
2.各種抵抗値を上げる
逆に下手にバッファー使ったら信号の上下速度が上がって結果的に
リンギングやストレキャパシタンス(配線間の寄生容量)の影響で不具合の原因になるのでは? >>263
同じように外部のI2Cのセンサーをケーブルで引っ張って計測したことある。
連続動作してるとたまにマイコンがフリーズしたりする。
外乱ノイズの影響だと思って
フィルター入れたり絶縁したり色々やったけどだめ。
センサー外したら大丈夫だった。
I2cは基板内で使うもんだと思う。 254です。
皆さまご助言ありがとうございました。
結局、自分が当初考えた通り、PCA9515で様子を見ることにしました。
約1ヶ月ほど運用してみましたがBME280がお釈迦になった以外、トラブルは特に無し。
BME280がお釈迦になった件ですが、突然気圧の計測値がおかしくなり(温度と湿度の値は正常)結局新品と交換して解決しました。
半年ぐらい前にも同じ現象が起き、そのときも新品に交換で対処しました。
厳密に計った訳ではないのですが、屋外で大体半年ぐらい使うと気圧が変な値になります。
尼のB014VVPZT4買った人いる?
CH340といえど安いから偽物チップかしら
>>266
「約1ヶ月ほど運用 ~ トラブルは特に無し」なら心配したノイズの影響は無さそうね。
自分語りだが、居室のWiFiの電波の入りが良くないからエレコムの5m USB延長ケーブル買った。太めで電圧降下にも配慮している様で好印象。
WiFiアダプタも問題動作し、通信環境も劇的に改善。
てな訳で、>254もUSB延長ケーブル + USB-I2Cアダプタって手もあったなぁ~と、今思った >>267
CH340ならこんなものAliとかなら前は同じものが100円以下で買えたし
ただこのタイプは結構前からあるやつでDTRが出てないからArduinoで使うにはちょっと工夫が必要
また3.3Vで使うときに電圧が結構いい加減、回路図はツェナーになってるけどおそらくダイオード2本のドロップじゃないかな
自分は5V専用にして余ったピンにDTRを引っ張ってくる改造してArduinoで使ってる >また3.3Vで使うときに電圧が結構いい加減、回路図はツェナーになってるけどおそらくダイオード2本のドロップじゃないかな
おおぉ。裏の写真を見ても回路図にはあるドロップ用の抵抗220Ωがなさそうですね。
外部で3.3Vを使われたらすぐに電圧落ちすぎになりそう。
ダイオード2個直列の方が、まだマシだったのかも。
それにしても、コストに厳しい設計だな。レギュレータってそんなに高価でもないはずなんだけど。