X



トップページ電気・電子
338コメント151KB
【I2C, 1-Wire】シリアル通信 Part.2【SPI, LIN, 4-20mA】
0001774ワット発電中さん
垢版 |
2021/04/17(土) 16:56:07.57ID:oG0Sw79D
どちくしょうが!、シリアル通信なめんなよゴルァ
線繋がってたら動くとでも思ってんのか!!
規格、伝送方式、符号化、基板設計、
静電対策、伝送線、XT、EMC対策
考える事ぁあ山ほどあんだよ!!!と、合コンでブチ切れたい

尚、「センサーはI2Cだ!」とのたまう奴は来なくていいからw

※前スレ
【古い】シリアル通信【最新】
https://rio2016.5ch.net/test/read.cgi/denki/1112199189/
0186774ワット発電中さん
垢版 |
2021/05/12(水) 06:13:36.05ID:1iFL8FLL
産業装置なんかでも 電源投入時のタイミングとかコリジョンからの自動復帰の

プログラムがきっちり組まれて無くて

電源投入時に手動でerror処理しないといけないとかある(´・ω・`)

簡単な通信をきっちりやるだけで使い勝手が雲泥の差なのに(´・ω・`)
0188774ワット発電中さん
垢版 |
2021/05/13(木) 20:53:45.98ID:ij3QGV1J
上の方でBMX055とうまく通信できないと言ってた者だけどやっと安定して動くようになった。
あれから何をやったかというと、

・余計なものを取っ払ってシンプルにするため、FXMA2102を外して、信号線をジャンパで飛ばす
・リンギングを抑えるため、ダンピング抵抗100Ohmを入れる

これで波形を見る限りI2Cの規格を満足するようになったが、かなりの確率でNAKが返ってくる。
よく観察すると、最初の通信を乗り切ると何時間でも通信し続けるため、信号の品質ではなく、
BMX055が起動時に何かあるのではとマニュアルを見て分かったのが、デフォルトのスリープモードが
最初の通信でノーマルモードに切り替わるということから、わざと1発目に意味のない信号を出して、
ノーマルモードに移行するようにした。
これをすると、数回に1度しか起動しなかったのが、10回程度繰り返して毎回起動しているのでこれが正解だと思う。

こんなことネットで探してもどこにも書いてないし、なんでうちだけこんな問題が起きたのか分からんのだが、
ネットの記事ではArduinoみたいなそんなに速度の出ないマイコンを使ってるのに対して、俺が使ってるSTM32F446は
かなり高速なのでそこらへんが関係しているのかもしれない。

波形についていうと、今回はFXMA2102を引っぺがしてダンピング抵抗をつけたが、
つけたままでもダンピング抵抗の値を変えても行けると思う。
心が疲れたのでちょうどいい値を探さずに引っぺがしたけど。
0191774ワット発電中さん
垢版 |
2021/05/19(水) 18:08:58.74ID:Sd448gny
>>190
反応無いね。
CAN FDってプロトコルを替えるから、全てのデパイスをFD対応にしないといけないんでしょ?
一瞬検討対象になったけど、それがネックになってボツになった。
0192774ワット発電中さん
垢版 |
2021/05/21(金) 19:49:45.78ID:lHkKbVF8
>>191
thx
CAN FDやってみたは。
帰って来るメッセージ判断できるんで両刀使いできるよ。
if ((_gMsg.field.formatType == CAN_2_0_FORMAT) && (_gMsg.field.idType == CAN_FRAME_EXT))
{...}

64バイトは応用が広がるな。
CANからCAN FDに全作品変更予定。 30数点のアナデジ基板があるんでKiCAD修正とファームウェア修正せねば。
0193774ワット発電中さん
垢版 |
2021/06/01(火) 11:41:07.71ID:383dBzT5
Microwire…
単語は知ってたがSPIの亜種かと思ってたわ(今日知った)
0194774ワット発電中さん
垢版 |
2021/06/13(日) 03:39:07.50ID:Ic4p+uVJ
LINのウェイクアップについて質問です。
現在LINについて勉強中です。
LINではマスタノードからのヘッダ送信で通信が開始する認識です。
スリープフレームはマスタノードからスレーブノードに送信するという説明を見ました。
一方ウェイクアップフレームはスレーブノードからも送信出来るとありました。
この場合、スレーブノードは何をトリガーにウェイクアップフレームを送信するのでしょうか。
マスタノードはスリープ状態なのでヘッダ送信も出来ないのではないかと思い、スレーブノードからのウェイクアップフレームはどういう風に送信されるのかがイメージ出来ません。
どなかご教授頂けないでしょうか。
0195774ワット発電中さん
垢版 |
2021/06/13(日) 07:59:19.33ID:iK7XxW/W
>>194
詳しくないけど、

> スレーブノードは何をトリガーにウェイクアップフレームを
スレーブにイベントが発生した時。例えば雨を感知した、室温が上昇したとか。

> スレーブノードからのウェイクアップフレームはどういう風に送信されるのかがイメージ
単に信号を唐突にLにしているだけ。
https://image.itmedia.co.jp/mn/articles/1010/08/ay_lin02_15.gif

ここの説明が分かりやすい
https://monoist.atmarkit.co.jp/mn/spv/1010/08/news116_3.html
0196774ワット発電中さん
垢版 |
2021/06/14(月) 12:29:41.95ID:RNIevnsW
ウェイクアップは通常時みたいにヘッダ→レスポンスの一連の通信ではなく、
ただ一定期間Loにするだけなんですね。
ありがとうございます。
0197774ワット発電中さん
垢版 |
2021/11/02(火) 00:02:46.41ID:C5AWVpWR
SPIの配線について皆さんにお伺いしたいです。
今いじっている基板でSPIのスレーブを9個つなげてるのですが、インピーダンスマッチングができていないのか、マイコンの出力が足りないのか、なかなかクロックを上げられません。
4MHzまではなんとかいけるのですが、8MHzにするとCLKの立ち上がりが鈍ってしまうのと、MOSIとMISO波形のダンピングがひどいです。
一応配線は1筆書きにして線幅は0.15mmにしているのですが、これだと一番遠位では整合できてるけど、マイコンに近いほうでは歪むような気がして、正しいのかわからなくなりました。
クロックの同期とかなら、ファンアウトバッファを介して分配配線すればいいように思えるのですが、SPIではどうすればいいのでしょうか。
皆さんは、複数のスレーブをつなげる際はどうなさっていますか?
0198774ワット発電中さん
垢版 |
2021/11/02(火) 09:25:32.37ID:GLWtGpKq
>>197
SPIで9台とかは経験ないけど、全体での配線距離はどのぐらいなの?
バッファとかで出力を上げるんじゃなくてダンピング抵抗入れて信号の立ち上がりを遅くした方が良いのでは?
https://i.imgur.com/HIb9vki.png (現状の波形・推測)
https://i.imgur.com/dX79dr9.png (ダンピング抵抗1)
https://i.imgur.com/3BNJl05.png (ダンピング抵抗2)
0199774ワット発電中さん
垢版 |
2021/11/03(水) 07:44:50.74ID:wCty7tS+
>>197
> 皆さんは、複数のスレーブをつなげる際はどうなさっていますか?
高速グループと低速グループに分け、間にバッファ入れて分離する。

> SPIではどうすればいいのでしょうか。
9個もデバイス繋いだら配線容量にピン容量に配線インダクタンスで目茶苦茶になる。だから途中にバッファを入れる。
全てのデバイスを高速動作させたいならバッファでツリー構成にする(今はデイジーチェーンっしょ?)

余談:
その昔のISA-Busは8MHzでいいとこ8スロット。でもフルに使うと動かなくて困った。
9個もあるなら発想変更が必要かな
0200774ワット発電中さん
垢版 |
2021/11/03(水) 14:51:29.73ID:yxqVC9TY
まあ、ISAはクロック同期式でもなくて、タイミング規定もグダグダだしな。
0201774ワット発電中さん
垢版 |
2021/11/03(水) 23:19:29.41ID:wCty7tS+
余談
>>200
それはATバスの話。
ISAバスはEISAバスのサブ規格だから互換性が取れる様にタイミングも新たに定義された。
とは言ってもATバスのグダグダを駆逐出来た訳では無いのはご指摘の通り(笑)

閑話休題
SPIバスに9デバイスかぁ〜、割と無茶だと思う。
SPIはモトローラが作ったらしいが規格書はあるんかいな?見た事が無い。
それとも、いまやSDカードのSPIモードが標準規格になるんかいな。誰か知ってる?

それで今やSPIもI2CもNXPが作った事になるんか。変なの
0202774ワット発電中さん
垢版 |
2021/11/04(木) 08:46:16.72ID:stPG9W78
そもそもSDカードのSPIモードがなくなろうとしているのに。
0203774ワット発電中さん
垢版 |
2022/02/26(土) 19:14:50.67ID:xSRjRRo7
質問教えてください。
PICを使ってCANの勉強をしていますが、よくわかりません。
IDというのは、29bitと11bitがあります。またフィルタも29と11があります。
1. なぜ長さが2種類あるのですか? どのように使い分けるのでしょうか?
2. アクセプタンスフィルタがありますが、受け入れフィルタのことだと思います。
  要は、自分の欲しいIDのメッセージだけを取り込むために、フィルタで and をとって
  振り分けている、という考えであっていますか?
3. 受信中にもかかわらず受信側がACKというbitを返すようですが、
  例えば5つのノードで聞いている中で、どのノードがACKを返すのでしょうか?
  全員か返すのでしょうか? それとも返す人が決まっているのでしょうか?
4. また、ACKを返すのは、フィルタ合格して自分の欲しいデータが届いた時だけ返すのでしょうか?
  それとも、自分の受信希望でないIDに対しても、
  「送信者さん、ちゃんと送信できてますよ、安心してくださいね」と、
  返すのでしょうか? そうすると全員がACKを返すようにも思いますが。
よろしくお願いします。
0205774ワット発電中さん
垢版 |
2022/02/27(日) 07:22:09.66ID:va6xzqLU
stackoverflowとかで聞いた方がよさそう。
これ答えられる奴は日本の質問掲示板なんか見てないっしょ
0206774ワット発電中さん
垢版 |
2022/02/27(日) 11:19:56.61ID:EnAKkGuc
>>204 >>205
ありがとうございました。
他で聞いてみますね。
どうもありがとう。
0207774ワット発電中さん
垢版 |
2022/02/28(月) 13:33:54.51ID:sQv3vdrt
>>203
>1. なぜ長さが2種類あるのですか

ackは全員が返すから、誰か受け取れなかったやつがいてもわからない。
0208774ワット発電中さん
垢版 |
2022/02/28(月) 13:38:48.44ID:sQv3vdrt
>>203
>1. なぜ長さが2種類あるのですか
長さが足りなくなったから

>要は、自分の欲しいIDのメッセージだけを取り込むために、
そんなもん。

ackは該当するやつが返す。
複数同じアドレスな奴がいれば、受け取れない奴がいてもわからない。
0209774ワット発電中さん
垢版 |
2022/03/01(火) 16:50:30.63ID:3MXpgfSX
ACKっしょん! ・・・うー。だれぞ 噂しやがったなバーローちくしょーい!!
0210774ワット発電中さん
垢版 |
2022/04/25(月) 05:44:53.30ID:c0bqEsvh
>>202
SPIモードで 数十Gbyte読み取ったら数十時間かかったw(´・ω・`)
0212774ワット発電中さん
垢版 |
2022/04/28(木) 05:54:18.72ID:qY7le17c
基本的な質問すいません
232cってTx、Rx、SGの3本で全二重通信とあるんですが、
SG共通なのになぜ双方向に同時通信できるんでしょうか。
SGで帰りの電流がぶつかるように思うんですが。
0214774ワット発電中さん
垢版 |
2022/04/28(木) 09:00:16.63ID:mX7agLrH
電流には着目せず、電圧で送信・読み取りしてるからじゃね?しらんけど
0215774ワット発電中さん
垢版 |
2022/06/26(日) 09:42:23.02ID:qvtVKcOX
マルチマスターの衝突防止を自分で実装すると結構奥が深いね。
2wireでいい方法ある?
0216774ワット発電中さん
垢版 |
2022/06/26(日) 14:53:21.31ID:v3XvhMT0
>>215
そら無理レベル。お互いに衝突して無い事を同時に確認しても、次のフェーズでは衝突するし。
さらに同時にリカバリしようとしてまた衝突。ヘタすると永久ループ入り。
優先度をラウンドロビンで回すしか手が無いと思うな
0219774ワット発電中さん
垢版 |
2022/06/26(日) 20:03:44.82ID:lW9USo0E
>>217
良いアイデア!!
それなら出来そうだわ。
マイコンがもう一ついるけどね。
>>216
同時に送信ってあり得るからね。
何か通信の開始をずらせる方法があればいいんだけど。
0220774ワット発電中さん
垢版 |
2022/06/26(日) 21:05:11.34ID:lW9USo0E
>>218
CSMA/CA方式っていうのがあるんだね。
ネットにはあまり情報がないけど。
0224774ワット発電中さん
垢版 |
2022/06/27(月) 08:25:39.33ID:0RdO9zav
CSMA-CDってゼロックスが技術情報無料で公開してなかったっけ?
0227774ワット発電中さん
垢版 |
2022/06/27(月) 10:25:37.25ID:SrXIuQqo
2台のマスターが同時進行したとき
(9600bps/8Byte送信時間7ms/UARTの受信バッファ1Byte単位)
1.データを8Byte単位のパケットに分解
2.10msの間ループし、その間Rxバッファにデータの着信があれば2.へ
3.データ送信

でもこれだと1nsも違わずに同時送信した場合衝突するね。
0228774ワット発電中さん
垢版 |
2022/06/27(月) 10:54:50.90ID:SrXIuQqo
間違えました。UARTのバッファが1byteで、バッファを確認できるのが、1byte単位なので、1byteの送信時間である8/9600秒、つまり約1msは空白時間(他のマスターの送信を検知できない時間)。その間はどのマスターも同時に送信の権利を取得できる事になるね。
0230774ワット発電中さん
垢版 |
2022/06/27(月) 21:54:18.66ID:U3pADLmC
>>229
それ、無い物ねだり。
元ネタは>>215氏だが、この2wireとは通常I2Cの事。そしてI2Cのマルチマスターをサポートしているならコリジョン検出機能も当然サポートしている。

それなら話はハイお仕舞いだが、通常のシングルマスターはそんなコリジョン検出なんてない。通常使用なら不要な機能だからね。
そんなシングルマスターでマルチマスターをしたい。どうコリジョン検出してリカバリするか?

が議論の焦点なんだが、ここにコリジョンを唱えても明後日の話
0231774ワット発電中さん
垢版 |
2022/06/27(月) 22:50:42.37ID:SrXIuQqo
半二重のRS-485上に複数機器をつなげたModbusがヒントになるかと思い、調べてみたのですが、仕組みはシングルマスターなんですね。
衝突を回避するロジックが欲しい。。。
やはりランダム時間待ちがいいのかな。
0232774ワット発電中さん
垢版 |
2022/06/28(火) 12:10:10.96ID:rj79WJlK
データを送信する前に、「今から送信するよ」(予備送信)を数回送る。その間、受信バッファに何もデータが入ってこなければ送信の権利を獲得出来る。
どのマスターかが権利を獲得したら他のマスターは一定時間送信を行わない。
っていうの思いつきました!
ダメ出し添削して下さい!!
0234774ワット発電中さん
垢版 |
2022/06/29(水) 11:11:18.73ID:tIgNAd70
>>230
コリジョンフラグ監視してリカバリ
0235774ワット発電中さん
垢版 |
2022/06/29(水) 11:36:15.53ID:Z6lMDjPp
I2Cの上でTCP/UDPするスレはここですか
0237774ワット発電中さん
垢版 |
2022/08/13(土) 21:12:14.28ID:YvU66aBO
ここでいいのかわかりませんが質問させてください。
CANの質問があります。
CANの2本の線を基板の上で終端します。普通は120Ωのようです。
I/F ICのデータシートを見ると、終端方法には、
・120Ω抵抗のみの場合と、
・60Ω+60Ωで中間からコンデンサでGDに落とす場合
が書いてあります。
質問ですが、
・後者の方法は、何のために行うのでしょうか。何か性能がUPするのでしょうか。
・前者の方法と後者の方法は、どのようにして使い分けるのでしょうか?
よろしくお願いします。
0238774ワット発電中さん
垢版 |
2022/08/13(土) 21:48:41.14ID:sYjQlAON
>>237
片方が断線しても通信出来る様にするため、たぶん。

(CANには強くないけど)抵抗の中点からコンデンサ経由にすると、AC的にシングルエンド終端2本になる。
CANは一方に障害が発生しても通信継続する仕様で、シングルエンドなら継続出来るし。
0239774ワット発電中さん
垢版 |
2022/08/13(土) 22:09:18.91ID:YvU66aBO
>>238
ありがとうございます。
なるほど、頭いいですね。Cで接地されるとてうことですね。

片線で通信できるようにするには、SPLIT端子の付いたICを使うと思っていました。

終端の中点(1/2抵抗値)からGNDにCなので、
コモンモードの強化(Yコンのように)かなぁ、とも考えていました。
回線の小目電圧を除去して、ICの入力電圧範囲に入れるとか。
0241774ワット発電中さん
垢版 |
2022/08/14(日) 01:33:55.80ID:cB+W/4bt
>>240
大変ありがとうございました。
このように説明された文章を探しきれずにいました。
どうもありがとうございました。

2回読みましたが、
「分割終端により、CANHとCANLの両方のラインにローパスフィルターが作られ、
 トランシーバーからバスに出る高周波ノイズの多くが低減されます。」
この部分の説明がよくわかりませんね。
LPFを構成する CxR のCはスプリットのCだと思いますが、Rがどれなのか。
「トランシーバーからバスに出る高周波ノイズ」は、
バス線からICに入ってくる方向なのではないでしょうか、と疑問に思うのでした。

どうもありがとうございます。
0242774ワット発電中さん
垢版 |
2022/08/14(日) 08:34:06.54ID:nKDfZqD6
ブースター接種 ⇒ 超過死亡 ⇒ 芸能人体調不良
://krsw.5ch.net/test/read.cgi/covid19/1651729211/l50
0243774ワット発電中さん
垢版 |
2022/10/30(日) 23:07:16.42ID:Nm3wtfkk
なぁ、I2Cに同じデバイス(=同じアドレス)をピン容量が許す限り目一杯ぶら下げたい場合はどうする?
簡単な手としてI2Cスイッチがあるけど、あれって4系統しかぶら下げられない…

FETスイッチなら安価に並べられるけど、I2CってSDA共通でSCLだけスイッチでもいいのか?
0247774ワット発電中さん
垢版 |
2022/11/02(水) 22:15:53.84ID:+Jh16aDA
>>245
秋月がヒットしたが、これか↓?イメージ涌かない

スレッショルド可変型ドライバ TD62602P
[TD62602P]
通販コード I-06266
発売日 2013/05/21
メーカーカテゴリ 株式会社東芝セミコンダクター社(TOSHIBA)
TD62602Pは6回路入りのスレッショルドフリードライバで反転型・オープンコレクタとなっております。電源、GND、入出力端子はCMOSの4049、4050と同じです。基準電圧端子(Vref)は内部で1/2VCCになるように設定されていますが、外付抵抗により可変することができます。
0248774ワット発電中さん
垢版 |
2022/11/02(水) 22:26:31.81ID:+Jh16aDA
話のネタに、こんなのも見つけた

I2Cアドレス重複を抵抗とダイオードだけで解決する方法
https://picalittle.tech/solve_i2c_collision/

一見、おぉすげぇ~なんだが、ちょと間違えるとMCU→I2Cデバイスに向かって貫通電流が流れるやん。
却下したw
0249774ワット発電中さん
垢版 |
2022/11/13(日) 07:03:47.60ID:gtoQUMzc
I2Cに同じデバイス(=同じアドレス)を目一杯ぶら下げる方法、頭の中で思考実験して安価な方法を閃いたわ。
制御側をどうすっかな……
0250774ワット発電中さん
垢版 |
2022/11/13(日) 07:25:15.88ID:gtoQUMzc
しかしなんだな、I2Cはシリアル信号を一筆書きに配線出来るのがメリットなのに、アドレスが衝突するとアドレス変換とか、制御信号が複数必要になるのがなんだかなぁ~。SPIでも同じだけどさ。
I2Cでも最新はアドレスが被ったら自動で振り直してくれるけど、あんまり普及してないし。

その点、JTAGってスゴくない?シリアル、割と高速、数珠繋ぎ可、でもデバイスの特定可。その上に本来のバウンダリスキャンで基板の検査可!
I2CやSPIはJTAGに置き換わったほうが、世の中幸せになれるかもと今思った
0251774ワット発電中さん
垢版 |
2022/11/13(日) 09:53:03.07ID:714Qu1rs
割と高速といっても、クロック応答の一番遅いものに制限されるんじゃなかったか。

長い歴史があるにも関わらず採用数が低いものにはそれなりの理由があるわけだし、その理由を考える方がいいと思う。
0252774ワット発電中さん
垢版 |
2022/11/13(日) 10:02:46.97ID:714Qu1rs
SCLだけの選択でもいけそうな気がするけれど、>>243でも言及されている容量が問題になりそう。
クロックストレッチングを考慮しなくていいなら74xx138でもいいかな。
アナログマルチプレクサを使ってるのは見たことがある。
0253774ワット発電中さん
垢版 |
2022/11/13(日) 21:07:05.48ID:gtoQUMzc
>>252
> クロックストレッチングを考慮しなくていいなら74xx138でもいいかな。
クロックストレッチ! SDA側をイジる理由はそれだったのか、なるほどね。
あと138、イネーブルピンを操作してクロックにするのか。なるほどね。
ただ8本では足りないや、最大16デバイスを切り替えたいので。
ヒントありがと
0254774ワット発電中さん
垢版 |
2022/11/22(火) 00:35:36.24ID:0Ky2aNih
ラズパイにBME280をI2Cで繋げて温湿度と気圧を測りたいんだけど、ラズパイとBME280を6mほど離したいのよ。

ちょっと離れすぎているのでバッファーを入れたほうが良いかなと思うんだけど、PCA9515を使ったら良いかな?
0255774ワット発電中さん
垢版 |
2022/11/22(火) 07:49:28.24ID:1jTT42La
しくみをI2Cのままにして、バッファを入れて強化する、ということだと、
・両側にバッファを設ける
・プルアップ抵抗を小さくして耐ノイズ性を上げる
ということになると思う。
I2C バッファ で検索したらPCA9600もヒットした。

プルアップ100Ωのオープンドレインでの通信でも10mぐらいはやったころがある。
意図的にノイズを印加したらデータも壊れるけれど、どれぐらいまでOKかは用途次第だし。

コストと消費電流の問題がクリアできるなら良いのでは。

スピードを落として電線を工夫したら(線間容量を減らすとか)、生のI2Cのままでもそこそこ
行ける気もするけど。
0256774ワット発電中さん
垢版 |
2022/11/22(火) 08:01:33.20ID:Ckm4OxTG
プルアップ抵抗下げても限界あるよね。
ノイズでデータの長期的な信頼性は低そう。
0257774ワット発電中さん
垢版 |
2022/11/22(火) 08:34:39.35ID:1jTT42La
限界があるといっても、どんなものにだって限界があるし、信頼線の高い低いもイチゼロではない。
プルアップ抵抗を下げることは、ぶら下げるコンデンサの容量も大きくていいこととセットだし、
より大きいノイズ耐性を持つことには違いない。

イチゼロ思考ってものごとを整理しやすい。陥りやすい罠ですね。

I2C 延長 で検索したら、ほかの物理線に変換するものも見つかる。
(それとて、どこかには限界があることには違いはない)
0258774ワット発電中さん
垢版 |
2022/11/22(火) 08:57:29.15ID:67tL8nHy
>>254
そうだね、PCA9515を使うのがいいと思う。
ただ、6mって邪魔じゃない?無線化は考えないの?Bluetooth温湿度計とか立派な奴が2000円、スイッチサイエンスとかで探せばいいやつがありそう。
0260774ワット発電中さん
垢版 |
2022/11/22(火) 14:37:04.16ID:xCobUJjO
>>259
・ーーー・ ・ーー ・ー・
0261774ワット発電中さん
垢版 |
2022/11/22(火) 18:45:00.04ID:Ckm4OxTG
I2cで長距離ケーブルで引っ張って
痛い目にあったから絶対やらない。

連続動作で変なデータが入る。
バッファ入れたりノイズ対策やったけどゼロにはならなかった。
0263774ワット発電中さん
垢版 |
2022/11/23(水) 12:14:07.75ID:rLL0/KDM
ちょっと自信が無くて有識者の意見が聞きたいのだけど
速度を20kbps以下にして以下の様な回路にすれば安価に対応できるではないだろうか?
https://i.imgur.com/5uVgDZV.png
たぶん\(^o^)/

20kbpsで厳しい場合は速度を下げて1か2か1,2両方の方法で対応
1.コンデンサの容量を上げる
2.各種抵抗値を上げる

逆に下手にバッファー使ったら信号の上下速度が上がって結果的に
リンギングやストレキャパシタンス(配線間の寄生容量)の影響で不具合の原因になるのでは?
0264774ワット発電中さん
垢版 |
2022/11/23(水) 12:34:00.49ID:HXJpwizD
>>263
同じように外部のI2Cのセンサーをケーブルで引っ張って計測したことある。

連続動作してるとたまにマイコンがフリーズしたりする。

外乱ノイズの影響だと思って
フィルター入れたり絶縁したり色々やったけどだめ。

センサー外したら大丈夫だった。

I2cは基板内で使うもんだと思う。
0265774ワット発電中さん
垢版 |
2022/11/23(水) 16:56:16.24ID:yQEGwwCW
>>263
ノイズがねぇ〜。ほら、6mと言えば半波長で25MHzくらい。
ちょうどいいアンテナになって、周辺の電子機器のノイズを拾いまくると思うんだよね。

20kbpsでいいなら、
 P82B96: 2ビット双方向 2V〜15V、400kHz I2C/SMBus バッファ / ケーブル・エクステンダ
 https://www.ti.com/product/ja-jp/P82B96
これを強化したのが>>255氏が紹介しているPCA9600Dなんだけど、20kbpsなら P82B96+RS232ドライバがいいと思う。
速度を上げたいならRS422化する。

100m〜500m延ばすなら、
 I2C通信距離を延長するリファレンス・デザイン:I2Cと CANの組み合わせ
 https://www.ti.com/jp/lit/ug/jaju674/jaju674.pdf

さらに1200mでどうだ!ってとこ
 LTC4331 絶縁型I2C延長モジュール(2個セット)
 https://strawberry-linux.com/catalog/items?code=14331
0266774ワット発電中さん
垢版 |
2023/01/29(日) 11:17:28.63ID:VLRZR3nb
254です。
皆さまご助言ありがとうございました。
結局、自分が当初考えた通り、PCA9515で様子を見ることにしました。
約1ヶ月ほど運用してみましたがBME280がお釈迦になった以外、トラブルは特に無し。

BME280がお釈迦になった件ですが、突然気圧の計測値がおかしくなり(温度と湿度の値は正常)結局新品と交換して解決しました。
半年ぐらい前にも同じ現象が起き、そのときも新品に交換で対処しました。
厳密に計った訳ではないのですが、屋外で大体半年ぐらい使うと気圧が変な値になります。
0267774ワット発電中さん
垢版 |
2023/01/29(日) 11:38:30.02ID:3oN6J7c4
尼のB014VVPZT4買った人いる?
CH340といえど安いから偽物チップかしら
0268774ワット発電中さん
垢版 |
2023/01/29(日) 12:25:42.14ID:m65WW1+R
>>266
「約1ヶ月ほど運用 ~ トラブルは特に無し」なら心配したノイズの影響は無さそうね。

自分語りだが、居室のWiFiの電波の入りが良くないからエレコムの5m USB延長ケーブル買った。太めで電圧降下にも配慮している様で好印象。
WiFiアダプタも問題動作し、通信環境も劇的に改善。

てな訳で、>254もUSB延長ケーブル + USB-I2Cアダプタって手もあったなぁ~と、今思った
0269774ワット発電中さん
垢版 |
2023/01/29(日) 14:52:07.39ID:hGGNTxLK
>>267
CH340ならこんなものAliとかなら前は同じものが100円以下で買えたし
ただこのタイプは結構前からあるやつでDTRが出てないからArduinoで使うにはちょっと工夫が必要
また3.3Vで使うときに電圧が結構いい加減、回路図はツェナーになってるけどおそらくダイオード2本のドロップじゃないかな
自分は5V専用にして余ったピンにDTRを引っ張ってくる改造してArduinoで使ってる
0270774ワット発電中さん
垢版 |
2023/01/30(月) 09:40:52.74ID:VGIlBAN1
>また3.3Vで使うときに電圧が結構いい加減、回路図はツェナーになってるけどおそらくダイオード2本のドロップじゃないかな

おおぉ。裏の写真を見ても回路図にはあるドロップ用の抵抗220Ωがなさそうですね。
外部で3.3Vを使われたらすぐに電圧落ちすぎになりそう。
ダイオード2個直列の方が、まだマシだったのかも。
それにしても、コストに厳しい設計だな。レギュレータってそんなに高価でもないはずなんだけど。
0271774ワット発電中さん
垢版 |
2023/01/30(月) 20:16:37.83ID:2tYQRSdy
>高価でもないはずなんだけど
それでも削れそうなら迷わず削るのが中華製品

もし3.3Vでも使いたくて安さにもこだわるならこの辺りはどうかな?
3.3Vはレギュレータで作っている、3.3Vと5Vはジャンパピンでなくスイッチで切り替える、DTRが出ているのでArduinoでも使える、送料込みで200円程度
https://aliexpress.com/item/1005004824134193.html
0272774ワット発電中さん
垢版 |
2023/04/16(日) 21:06:18.46ID:XacvFj5i
おまえらセンサーをどう繋いでいる?センサーが多いとジカ線が増えて基板からハーネスだらけに…。

検索したら、自動車にはCXPIというジカ線を束ねる車載LAN規格があるとか。LINと違い応答性も良いとか。
いいなとコレと思い検索したら、UARTの先にぶら下げるPHYチップがCANより高いorz
しかもUARTだからデバイスにはマイコン必須。センサーを束ねたいだけだからちょっとね…

SPIでパラ接続ならCS信号がデバイスの数だけ必要になるし、ディジーチェーンならCS信号は不要だけど応答性に難あり。かつ1個が障害起こせば全体が止まる。

結果、I2C-GPIOチップなら割り込みピンで応答性も確保出来そうだし、マイコン要らないし、故障にもSPIよりマシに思えるし。

ただなぁ~、I2Cを基板の外に出すと外来ノイズに弱くなるのがね。途中にPCA9515を噛ますしかない?他に良い方法がある?
0273774ワット発電中さん
垢版 |
2023/04/19(水) 10:24:54.36ID:5giQVZDl
結局はツイストペアで差動伝送という、お決まりパターンになる。
0275774ワット発電中さん
垢版 |
2023/04/20(木) 01:04:19.33ID:nMvMM03U
>>273
そうなんだけど、なんか面白くないw
LINは高電圧の力任せ方式な一方、1-Wireが100m~500mも伝送距離を確保出来るのかよ~分からん。
ググると「Active Pull-upだから」と出てくるが、これってある単位時間ではただPush-Pullじゃね?

パルス幅で0と1が決まるある種の変調掛けているせいか?
0276774ワット発電中さん
垢版 |
2023/04/20(木) 15:37:03.72ID:IiXpia0n
>>274
それも面白くないなぁ~
伝送距離は短くなるが、RS485トランシーバーは価格がCANの倍。
産業用に細々続いているRS485より、車載でガンガン使われているCANが安いのはまぁ当たり前。

相互接続性が必要なくローカルで使うだけなら、物理層だけCANにするのもありじゃねと思うこの頃
0279774ワット発電中さん
垢版 |
2023/04/23(日) 10:18:43.93ID:yWQgxdJK
送信側は反転信号と共に3.3V CMOS出し。反転する分の遅延はあるけど無視出来る時間差だし、終端抵抗で100Ωでショートさせるし、まぁ大丈夫かな。
受信側はLM393だと遅そうだからTLV7256とかのコンパレータで。だが、TLV7256だとRS485トランシーバーと値段が変わらんorz

結局>>274氏の言うとおりなのか…orz
0281774ワット発電中さん
垢版 |
2023/04/23(日) 16:58:57.45ID:j2k+VI26
>>280
光デジタル用なら送受部品やケーブルも
簡単に手に入るじゃない
秋月でも普通に扱ってるぞ
0282774ワット発電中さん
垢版 |
2023/04/23(日) 22:58:53.48ID:yWQgxdJK
>>281
そだね。いわゆるS/PDIF(光デジタルケーブル)って奴ね。
96ksps. 6ch, 16bitとすれば、少なくとも9.6Mbpsのスピードかぁ
0284774ワット発電中さん
垢版 |
2023/04/24(月) 08:26:28.98ID:AepjkteV
>>283
つ「初期のトスリンクはそのままのPCMデータを伝送していたが、現在ではオーディオストリームの標準としてS/PDIFが広く採用されている。」
0285774ワット発電中さん
垢版 |
2023/04/24(月) 13:21:35.26ID:UspdIJDW
一般にSPDIFの光接続に使用される物理層がTOSリンクでSPDIF自体は光接続とは限らない
0286774ワット発電中さん
垢版 |
2023/04/24(月) 13:33:50.28ID:EGcum6jn
ちなみにTOSリンクは東芝が作った光接続の仕様で
時期的にたまたまSPDIFに採用されただけでオーディオデータ専用というわけではない
オーディオでもTOSリンクを使ったADATとか非sdpifの仕様もあったし
レスを投稿する