【I2C, 1-Wire】シリアル通信 Part.2【SPI, LIN, 4-20mA】
どちくしょうが!、シリアル通信なめんなよゴルァ
線繋がってたら動くとでも思ってんのか!!
規格、伝送方式、符号化、基板設計、
静電対策、伝送線、XT、EMC対策
考える事ぁあ山ほどあんだよ!!!と、合コンでブチ切れたい
尚、「センサーはI2Cだ!」とのたまう奴は来なくていいからw
※前スレ
【古い】シリアル通信【最新】
https://rio2016.5ch.net/test/read.cgi/denki/1112199189/ >>286
> TOSリンクは東芝が作った光接続の仕様
ちょっと違う。
確かに東芝が作ったが、TOSリンクは仕様ではなく登録商標でしかない。
実際、TOSリンクの中には光ファイバーを使わず、空間伝送するデバイスもある(あった)。
なのに光デジタルケーブル = TOSリンクの様に言われると違和感ありまくり……… まぁ、呼び方を議論しても不毛かw
Ethernetの遅い規格から光ファイバーは絶滅しているし、S/PDIF規格としては1.5Mbps、実験的には15Mbpsでギリ伝送出来るらしい。
お手軽な光ファイバーとしてもっと使われてもいいかもだけど、コスト的にRS485に勝てないんだろうな ちょっと裏の畑まで?00mという訳にはいかないかw>光 >>289
光回線に使われている壁の「光コンセントSC」ってあるやん。
これだけ普及したんならこれ用の光モジュールなら安いんじゃね?と思って検索するも、出てくるのはSFPモジュールばかり。
家庭用に高価なSFPモジュールを使っているとは思えないし、どうなっているんだろ? ↓この話の1wireって、Maxim社の1-Wire規格の事?それともクロックを載せてシリアル信号化したいって事?
そうだね、ルネサスのGreenPAKなら出来そうな気がする
356 774ワット発電中さん sage 2023/06/16(金) 21:10:00.78 ID:2VwAzPcm
SPIをマンチェスター符号に変換して1wireで送りたいのです。
レートが結構早くて10Mbps必要。
秋月で手に入るフリップフロップやXORゲート等で組んでみたんですが、まともに信号出てきません。
AHCシリーズとかで組めば行けるのでしょうか? >>292
GreenPAKにアプリノートはあったけど、波形を見る限りは低速だなぁ〜
www.renesas.com/us/en/document/apn/cm-264-serial-line-coding-converters >Maxim社の1-Wire規格の事?
その解釈はありえないのでは。10Mbpsなんだし。 >>294
そうなのよ。「SPIをマンチェスター符号に変換してシリアル信号で」ならすっと落ちたんだけどね。
マンチェスター符号して1-Wireに載せたいと読むと1-Wireはクロック載せて伝送するから何をムダな事をだし、ご指摘どおり1-Wireに10Mbpsは厳しいし。
まぁ、きっと、1-Wire規格があるのを知らなかったんだろう。
それにしてもSPIをシリアル化するチップはあると思うんだが、なぜ自作したいんだろう? あっちの356です。1-wire規格ではなくて、電線1本or差動1組⇒パルストランスもどきの
対向するコイル(自作)を介して送りたいのです。
「SPIをシリアル化するチップ」 あるんですか?!
買って済むならそうしたいです。 spi to uart converter でググったらいろいろ出てきたので見てみます >>297
ここ↓ら辺かな。速度がチト足りないが
L9963T: www.st.com/en/automotive-analog-and-power/l9963t.html
LTC6820: www.analog.com/jp/products/ltc6820.html
LTC4332: www.analog.com/jp/products/ltc4332.html
SN65C1167: www.ti.com/product/ja-jp/SN65C1167 確かに速度が足りないですね
今、使っているCPUから出せる限界の3MbpsのUARTで30MHz程度のキャリアを
ON/OFFしたものを包絡線検波してUARTに戻すという方法をやっています。
ただ遅いのでなんとかならないかと。
SPIは16Mbpsとか出るのですが。
FPGAはいろいろハードル高い。 3140 よさげですね。
伝送距離は100mm未満、絶縁は要るというか、空芯コイル対向トランス(NFCもどき)、
NRZを通せないのでマンチェスタ符号化
データはマスタからスレーブへの垂れ流し、ストリーミング的用途なので、
たまに取りこぼしやデータ化けも可。
コイルの仕様も手探り、10Mbps通すには何回巻けばいいのか不明
試しにΦ10で10回くらい巻いたコイルだと30MHzの正弦波は十分通りましたが
3MbpsのUARTを485ドライバでつないだらET積足らな過ぎてまったくだめ。 >>302
ほう、使えそうで良かった。
絶縁は居るのね。ならコイルクラフトにRS-422/485用の絶縁トランス売ってるよ。
www.gec-tokyo.co.jp/components/coilcraft/isolation-transformers-for-data-communication
趣味で手巻きしたいなら止めはしないけど(^^;
マンチェスター符号化はデータが倍になるからなぁ〜
3B/4B符号化や4B/5B符号化も考えてみたら? CPU内演算で済むしデータ量は1.33倍と1.25倍で済むし。
(8B/10Bだぁとドヤ顔もいいけど、4B/5Bと同じ1.25倍だからなぁ〜)
演算も配列用意して、テーブル引くだけの演算で済むからコードも簡単 >>303
コイルは1次と2の間で分割して移動するので、たぶん作るしかありません。
で、Lの値見ると作ったやつの2桁くらいデカい感じですね。。。
やっぱり周波数高いキャリア使うしかないかも。
それだとNRZでいいのでマンチェスタの必要はないわけですが。 >>304
トランスは電気的に一次と二次が絶縁されているもんだが、「分割して移動」の意味がわからん STの最新STM32H5のマニュアル見たらI3C搭載ってある。I2Cの上位互換らしいが
俺が知らないだけで、もう周知の規格なのか。
現行のSTM32H7にはI2Cしかないので、機能アップしたのか。 >>305
別の物体として離れ離れになるのです。
普通ならコネクタで接触させるところを非接触にする必要があり。 そうです だからNFCとかワイアレス給電モドキです >>306
俺も初めて知った。2017年に出来た規格みたいね(^-^;
MIPIが作ったらしいけど、規格はオープンにして欲しいな
--
I2Cは標準400kHz(高速で1MHz)程度ですが、I3Cは低速でも通信できるし、12.5MHzでも通信が可能です。 I3CはI2Cの2線の手軽さとSPIの高速性の両方を兼ね揃えた通信規格ですが、MIPIアライアンスでライセンス管理されており、加盟企業でないと詳細な規格書を入手できません。 >>309
ふ~ん。非接触で10Mbps、出来る気がしないけど。
そもそも絶縁ってサージとかが印加される場所に使うけど10cmなら該当しないと思う。
非接触にしたいだけなんだよね?
LED+フォトダイオードなら飛びそうだけど… そうです、非接触にしたいだけ。
とある事情で光通信は不可なのです。
10Mbpsは厳しいかな >>312
非接触ICカードを検索したらこんな↓感じ。あと参考になりそうなの、なんかあったっけ?
リーダー/ライターとカードの間の通信は、リーダー/ライター から発信される電磁波によって行われます。 通信は、13.56 MHzの周波数帯を利用し、212 kbps / 424 kbpsの速度で行われます。
https://www.sony.co.jp › scheme
非接触ICカード技術 FeliCa - SONY >>312
HDDの磁気ヘッドは10MByte/secらしい。8倍早いけど… >>312
NFCは最大847kbpsらしい
足りんね + ネタが尽きた、寝る >>313
実は最初WiFiで飛ばしてたのを事情により改造中。。。 >>306
マイナビでI3Cのお勉強
news.mynavi.jp/techplus/article/20170112-i3c/
・信号は2線式、つまりマジI2C上位互換規格なのね
・なのに割込みサポート。SMBALERTを取込んだ感じで表明したらそれが割込みとなると。どのデバイスか?はSMBALERTと同じ
・速度は単純にクロックアップの12.5MHzで10.6Mbps(SDR)
・それをDDRにして21.2Mbps?(記事中では25Mbps表記)(オーバヘッドで25Mbpsは無理じゃね?)
・面白いのはHDRモードで、SCLとSDA同時操作で3値を送信。これで3倍の33.3Mbps
・他、エラーリカバリ追加
昔のPCIバスが33MHzだったし、SPIやJTAGで10MHz超えも珍しく無いし、基板設計は普通のロジック信号扱いでよさげ。
速度はSPIと同等になるし、線2本で様々なデバイスが繋げ、フルI3C化すれば配線がスッキリしそう(笑)
規格書もメアド・名前・会社名でダウンロード出来そうな…。月曜に会社でやってみよ
I2Cの正常進化系って感じで、なんか気に入った I3CがI2Cの上位互換なら、とりあえず搭載しておけば、誰かが使い始めるだろう。
中国のセットメーカは貪欲に新製品を試行錯誤しており、I3Cの有用性は明らかだから
中国でシェアの大きいSTが先駆けて搭載したのは、そりゃそうだと思う。 >>319
上位互換と言っても10bitアドレスは無いし、ダイナミックアドレスだし。
固定アドレスのレガシーデバイスがあるとどうなるんだろうね。避けてアドレス割り振るのかな >>320
そうだと思う。初期設定でレガシーデバイスのアドレスをあらかじめ登録して、それを
避けてアドレスを割り振るのでは。いまの時代MPUの初期設定コードはIDEが自動生成
するから、ユーザの手間はそれほどでもない(?)。
それよりデータの高速転送で、従来I2Cデバイスが誤動作しないものなのかね。フィルタを
追加して、I3Cデバイスと同一バス上に混在できるらしいが、大丈夫なのか。 >>321
避けて割当てられれば楽でいいね。おそらくマスタが割り振るだろうし。
マイナビの記事を見る限り、高速転送時はレガシーが反応出来ない10MHz以上でやるから大丈夫!的に読めるw
あっ、規格書のDL試さないと I2Cの通信途中にマスターだけ落ちた場合のバスの復旧方法って皆さん想定してます?
これ想定してないとバスが死んだままになって割ととんでもないことになるよね
マスター落ちたらバスにぶら下がってるやつも全部落ちる仕様なら別だけど >>325
定期的にポーリングして、通信なかったら復旧 3つ以上の複数のch552e間でどれか1つをマスターにして半二重でもいいので双方向通信させたいんですけど、
このマイコンにはSPIやUARTはあってもI2Cがありませんでした。
ch552eでフリーなピンはUSBを除くと4ピンしかないので、なるべく少ない本数で処理したいです。
速度的には100kbpsも出れば十分なので、ソフトによるI2Cでできないかなと考えましたが、
I2Cのソフト実装はマスター側はともかくスレーブ側は大変ですよね。
今のところバスにはch552eしか繋ぐ予定はないので簡易的なもので何かあればお知恵を拝借できないかと思っております。 >>327
そうだねぇ~
1. UARTをRS485に変換し、バス接続する
2. UARTをLINに変換(ry
3. UARTで、マイコンAのTXをBのRXへ、BのTXをCの…とリング構成にする
4. UARTで、AのTXを他のマイコン全てのRXへ。他のマイコンのTXは直列に保護抵抗入れてから束ねてAのRXへ
5. TXに保護抵抗を入れ自身のRXに繋ぎ1本に。かつそれを全マイコンと共有する。
こんなとこかな >>328
補足
4番と5番は衝突上等! なやり方だけど、NチャンFET 1個でオープンドレイン化してプルアップ抵抗と共に接続すれば衝突を避けられる。
5番だと線1本で全てのUARTを共有出来て、基板上の通信としては最も簡易的 >>328-329
ありがとうございます。
8月中を目標に色々試してみたいと思います。 >>330
楽しんで!
それにしてもCH552Eって面白いマイコンだね。100円なのによくもまぁこれだけの機能を……
タイマーあるから昔のボール式マウスとか、ADCで昔の抵抗膜方式のタッチパネルとか、それに静電膜のタッチパネルもokとか…すごいね。
100円でUSB-SPIとか、USB-UARTとか利用出来るのか。FTDI替わりに使えそうだし、USB搭載でこの値段は有名メーカーには無い気がする。
UARTで数珠繋ぎして、各2ポートにI/Oを繋ぐ計画?
FT8U100AXとかの7ポートUSBハブ使ってGPIO 4ポート使う手もあるね すみません緊急なんですが質問いいですか
SPIのssってシングルデバイスの時はデバイス側でグランドに落としといてもいいんですじゃ? >>332
SSってCS(チップセレクト)の事?それなら、
・CS>>信号<<をグランドに落としたらNG
・デバイスのCS>>ピン<<ならグランドに落としてOK >>332
デバイスによっては、セレクト信号の立下り、立ち上りになんらかの機能を割り当てていることもある。
A/Dコンバータの変換スタートや、シフトインしたデータの決定とか。
デバイスのデータシートを確認して。 Microwireのアドレス部って製品依存でビット数が変わるんだな。知らんかった。