ArduinoとNucleoでPCとのSerial(UART)通信の最高速度を調べてみる。音源とオーディオの電子工作(予定)ソフト屋がハードにはまっていく軌跡2016年6月16日木曜日ArduinoとNucleoでPCとのSerial(UART)通信の最高速度を調べてみる。SPIやI2Cの通信状態を解析しようと思うと補足した信号をPCに送ってから見やすいように整形・グラフ化するのが良さそうだ。Arduinoでは、I2Cはデフォルトで100kbps、SPIはよく覚えていないが数Mhzぐらいだった気がする。ArduinoのSerialはデフォルトが9600bps(9.6kbps)なので、I2Cと比べても明らかに遅い。HIDも使えそうなのでWebで調べてみたがUARTより特に速い感じでもない。SDカードに一回保存して...とか、TCP-IP/Wi-fiを使ってみるとか一瞬思ったがかなりめんどくさそう。Uno/NucleoとのSerial通信をどれぐらいの速度でできるか調べてみた。Uno最高1Mbpsで送信できたが、PC(putty)で受信すると取りこぼしが結構ある。Serial.print(strBuffer);}1Mbpsを指定した場合はおおよそ1Mbpsで出力できた。指定した0x55なので、ビットにすると0b01010101になる。したがってオシロの表示値の499.3KHzの倍の998.6kHzが送信レートになる。puttyの受信のようす’U'がいっぱい並んでいるが、0x55をASCIIコードで文字にすると'U'になる。ボーレートが1Mbpsで実際送信できたのは800kbps弱。時々読みこぼしてしまうようだ。}}表示値が1MHzなので、同じく倍にして2Mbps。Arduino互換のD0、D1には信号が出ていなくて、分割できるようになっている通信用(?)の基板のRX、TXと書いてあるところでUART信号を捕捉できた。F401REをmbedで使うと2Mbpsが最大のようだ。F401REは最大84MHz駆動となっているが、ほんとにそのクロックで動作してるのだろうか?mbedだとクロックの計測方法がわからない。Nucleoのボード上ではX3と書いてあるところにクリスタルを刺すような表示になっているが、実装されていない。clockだと921,600bpsまでしか指定できない。F401REで2Mbps。←データの取りこぼしがあるかどうかは要確認。Analyzerはなんとか出来そうもするがPC側のプログラムを作るのもしんどそうだなあ(^q^;フルスピードのUSBを使うにはどうすればいいんじゃろ。KitでEEPROMを使ってみる。mbedでMCP4922にエンベロープ波形を送るクラスを作る。808をシミュレーションしてみる。Nucleo(mbed)のPwmOutで波形を出力してみる。DCFシールドの動作確認ArduinoとNucleoでPCとのSerial(UART)通信の最高速度を調べてみる。MCP4922とNJM13700でSPI制御のDCA(Nucleo編)MCP4922とNJM13700でSPI制御のDCAを作ってみる。