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の速度仕様は以下のとおり。
standard mode: 100k bit/s
fast mode: 400k bit/s
High speed mode : 3.4M bit/s
UART
通信速度は当然クロックに依存するが、
基準発振周波数1.8432MHzな最大通信速度115.2kbpsが標準
だし、
拡張機能を使わず基準発振周波数のみ最大周波数を供給する事で、16550Aに8MHzで0.5Mbps、16550AFに24MHzで1.5Mbps、OX16C950Bに60MHzで3.75Mbpsなどと、ソフトウェア制御設定を変えずに高速化できる。
だそうな。
SPI
シリアル・ペリフェラル・インタフェース - Wikipedia
なぜか記述が少ない。
Mega328Pの通信仕様
Mega328Pの最大クロックは 20MHz。その範囲でUARTの最高速度を調べる。
UARTの場合、エラー発生率が低くなる速度を選ぶ必要がある。
その点からすると、20MHzより16MHzのほうが適していることがわかった。