ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

SPIの通信インターフェースを持つIC(デジタルポテンショメーター)一つに、PCのシリアルポートから抵抗値の8ビットデータを送信、設定することは可能でしょうか?具体的には、シリアルポート側のdtrおよびrts信号でSPIのクロックとデータを送信し、IC側のCSは常時オンに保つ、という結線です。PCのソフトウェアはC言語などで数十ミリ秒の間隔でdtr やrtsでset/clrする方針です。ICの駆動電源や信号の電圧レベルとシリアルポートの出力電位の違いはフォトカプラーなどで対処します。その他、よいアイデアがあればご教授ください。宜しくお願いします。

A 回答 (3件)

> このクロックに載せて送るシリアルデータのタイミングをどのように同期するか


ちょっとどこに問題を感じているのか分かりませんが…
説明不足でしたかね。1バイトにつき1クロックとして、1バイト送信ごとにDTR/RTSを操作することを考えています。
「1つのSPIデバイスへのpcのシリアルポ」の回答画像3
    • good
    • 0
この回答へのお礼

SortaNerd様
丁寧に図を添付いただいて、どうもありがとうございます。
なるほど、CLK=TXDとして、送信データを0x0Fにして8回送れば、立下りの信号が生成できるわけですね。これなら、電子部品の追加なしでSPI通信が可能ですね。

CS=DTR、DATA=RTSとして、
まずDTRをLに、ちょっと待ってからRTSに送りたいDATA信号の最初のビット(H or L)をセットし、
ちょっと待ってからTXDに0x0Fを送り、終わったらRTSに次のビットをセット、これを8回繰り返して、DTRをHにする。

今問題にしているSPI通信の送信相手は、CLKの立ち上がりでDATAを拾う仕様ですので、おそらく、CLK=TXDには0xF0か0x00か、を送るようにすることになりそうです。

ともあれ、目から鱗が落ちるようなコメントをどうもありがとうございました。

お礼日時:2020/02/27 11:35

クロックをTXにして他2本でデータとCSですかねえ。



ただ、昔PICマイコン書き込み機のRCDライターというものでシリアルポートの制御線を使った通信が使われていたんですが、これが64bitのWindowsで使えなくなりました。
最近のWindowsでは何か仕組みが変わって制御線を自由に使えなくなっている可能性があります。

あとシリアルポートは100kΩくらい挟んで電流を落とせばICに直結できたりします。
参考: http://elm-chan.org/docs/rs232c.html
    • good
    • 0
この回答へのお礼

情報をいただき、ありがとうございます。
クロックをTXにすることも考えられますし、そのほうが素直ですね。ただ、
その場合、このクロックに載せて送るシリアルデータのタイミングをどのように同期するか、が問題になる気がします。

”必要最低限の電子部品の追加(マイコン以外)”で、PCのrs232cからSPI通信でデバイスの制御を行う

というのが今回の主題でして、いろいろ考えていくと、結局、”それ用のIC”を使ったほうが良いのかな(1こ2000円弱)、と感じております。

お礼日時:2020/02/25 10:20

>数十ミリ秒の間隔でdtr やrtsでset/clrする


10−100bpsでの超低速の通信ですね。

数Mbpsの通信が可能なSPI通信ですが、 
SPI通信では完全にマスタ主導で通信が行われるので、
やったことありませんが、可能だと思います。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
その後、このデジタルポテンショメータ(AD5290)のデータシートを確認したら、
CS信号の立ち上がりで8ビットシリアルデータがAD5290にロードされる仕様であることが判りました。
ということは、このCS信号は何らかの方法で生成しないといけないことになります。。。
dtr,rts信号のほかに、PCから送信できる信号線はtxしかなくて、その立ち上がり、立下りのタイミングをきちんと制御するには、何らかのロジックIC(フリップフロップ)を追加しないといけないです(よね?)。

お礼日時:2020/02/20 12:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!