シリアル通信
https://youtu.be/IyGwvGzrqp8
少ない接続でデータをやり取りする方法
さまざまなプロトコルが存在する
基本的なコントローラ(PeakやArduino)を使う場合、よく使われているプロトコルがある どんなプロトコルか、どういう時にどれを使うのか?を説明する
toy probrem: 10進数で198というデータを送りたい
電線の電圧で表現するので2進数で送ろう。11000110の8bitのデータになる。
パラレル通信(pararell communication)
8本の接続とGND(全部で9本)があれば一気に送ることができる
しかし、pararell communicationにはハードウェアがデカくて高くなる問題がある
8bitなら9本、16bitなら17本のwireが必要。電線の数が多くなってコストが高くなる
1本で送ることを考える。1つづつ送ってやればよいだろう
pararellより遅くなるがしょうがない
1クロックに1個データを送れるとすると、16bitのデータを送るには16クロックかかる。パラレル通信では1クロックで16bit送れるのだから、16倍遅くなる。
これがシリアル通信である
基素.icon 実際には1本ではないものもたくさんある。データの数と線形にwireが増加しないものをざっくりとシリアル通信と呼んでいるようだ
シリアル通信のプロトコルはたくさんある。例エバ
https://gyazo.com/e0eb0b2f0651d19fbf87db22c716c664
Clock
あり:同期通信
クロックパルスによってデータを指定の速度と時間で送れる
なし:非同期通信
非同期通信で起こる問題
最後のbitはどこ?
RS-232
DTR(CTSもあるかも) データの終了が準備できたことを通知する。receiverが値をクリアしても良いことがわかり、flow probremが起きない
aknowledge pinというやつ?
flow probremとは?
BODY TX/RX
Serial Peripheral Interface
5wires:
SCLK Clock
MOSI Master Output Slave Input
MISO Master Input Slace Output
SS chip select
GND
MISOをつかってSlaveからMasterにデータを投げれる
複数のslaveがあるときに、データを送るchipを選択できる(chip select)。I2Cのようなアドレスは不要 master/slaveが同時に送受信ができる
I2Cより早い
省電力