ESP8266 と Mega328P

ESP8266 はやっぱりHWタイマ(カウンタ)は無いらしい。。。PWMってどうやって実現しているんだろう。

 

41.1kHz の周期で DAC にデータを送るためにHWタイマが必要。そのためにMega328P を使おうと思う。

ESP8266とMega328P との通信方法 

ESP8266とMega328P との通信方法はいくつか考えられる。

  • UART
  • I2C
  • SPI

仕様上の最大通信速度は

 

I2C <  UART < SPI

 

らしい。

【ZUGYUUUN! 】I2C通信に対応開始! | 株式会社バニーホップ

必要は通信速度は、41.1kHz 周期で 12bit を送れればよい。

41.1k x 12bit =  493.2k bit /sec = 493.2k bps

I2C 

一番遅いI2Cの速度仕様は以下のとおり。

I2C - Wikipedia

standard mode: 100k bit/s

fast mode: 400k bit/s

High speed mode : 3.4M bit/s

UART

UART - Wikipedia

通信速度は当然クロックに依存するが、

基準発振周波数1.8432MHzな最大通信速度115.2kbpsが標準

だし、

拡張機能を使わず基準発振周波数のみ最大周波数を供給する事で、16550Aに8MHzで0.5Mbps、16550AFに24MHzで1.5Mbps、OX16C950Bに60MHzで3.75Mbpsなどと、ソフトウェア制御設定を変えずに高速化できる。

だそうな。

SPI

シリアル・ペリフェラル・インタフェース - Wikipedia

なぜか記述が少ない。

Mega328Pの通信仕様

Mega328Pの最大クロックは 20MHz。その範囲でUARTの最高速度を調べる。

f:id:kzono:20151119003203p:plain

UARTの場合、エラー発生率が低くなる速度を選ぶ必要がある。

その点からすると、20MHzより16MHzのほうが適していることがわかった。