たれぱんのびぼーろく

わたしの備忘録、生物学とプログラミングが多いかも

esp32でマイコンの勉強

マイコン初心者がesp32をモデルに勉強

ESP32とは

中Espressif Systems社が設計、台TSMCが製造するマイクロコントローラー.
Wi-fiとBLEを備えながら非常に安価(¥700)なことで有名.

cpu

米Tensilica(製)、240 MHz駆動のプロセッサコアを2つ搭載.

240 MHz dual core Tensilica
espressif.com

Tensilica(テンシリカ)は、シリコンバレーを本拠地とする半導体IPコア分野の企業である。

組み込みWi-FiチップであるESP8266とESP32は、XtensaをメインのCPUコアとして使用している。
Tensilica - Wikipedia

メモリ

揮発性メモリ: Integrated 520 KB SRAM ESP32 Overview | Espressif Systems
不揮発性メモリ: 16 MByte flash

I/O

無線

マイコンとOS

私がよくわかってないところ。
The Internet of Things with ESP32
qiita.com

Once you’ve compiled your project, the “build” directory will contain a binary file with a name like “my_app.bin”. This is an ESP32 image binary that can be loaded by the bootloader.
github.com

The ESP32 module comes preloaded with a ROM image with an AT command set, just like the ESP8266 did. If you want to waste 95% of this chip’s potential by using it as a glorified serial-to-WiFi modem, you’re all set! But you all want to dig in, right? Right!
hackaday.com

ESP-IDFはfreeRTOSベース.
www.esp32.com

ESP-IDFでの起動からプログラム実行までの詳細な流れ、これは必読ぽい.
General Notes About ESP-IDF Programming — ESP-IDF Programming Guide v2.0-rc1-379-g7522b53 documentation

リセット後、まずリセットベクタコードが実行.

After SoC reset, PRO CPU will start running immediately, executing reset vector code

リセットベクタコードはESP32チップ maskROMのアドレス0x40000400にある。編集不可.

Reset vector code is located at address 0x40000400 in the mask ROM of the ESP32 chip and can not be modified.
General Notes About ESP-IDF Programming — ESP-IDF Programming Guide v2.0-rc1-379-g7522b53 documentation

リセットベクタからStartup codeを呼び出し、ブートモードを決定する.

Startup code called from the reset vector determines the boot mode

普通のresetの場合、

configure SPI flash based on EFUSE values, and attempt to load the code from flash.

SPI flashについて
要は、内部のflashEOMを指してる.
qiita.com

ESP-IDFでは、フラッシュROMアドレス0x1000以降に2nd stage bootloaderのバイナリイメージがある.

In ESP-IDF, the binary image which resides at offset 0x1000 in flash is the second stage bootloader.

2nd stage bootloaderのコードはcomponents/bootloader

econd stage bootloader is used in ESP-IDF to add flexibility to flash layout (using partition tables), and allow for various flows associated with flash encryption, secure boot, and over-the-air updates (OTA) to take place.

ドライバー、マイコンのソフトウェア階層

なんてわかりやすい資料だ、感動
ednjapan.com

A/D converter

SAR式ADCを2つ搭載。18個のピンを入力候補として持てる.

ESP32 integrates two 12-bit SAR ADCs and supports measurements on 18 channels (analog enabled pins).
http://esp-idf.readthedocs.io/en/latest/api/peripherals/adc.html

ULP-coprocessor (Ultra low power? 超低消費電力 副処理装置)を利用可能.
スリープモードでADCを監視し、閾値でCPUを起こすような動作が可能.

4.2 Analog-to-Digital Converter (ADC)
ESP32 integrates 12-bit SAR ADCs and supports measurements on 18 channels (analog enabled pins). Some of these pins can be used to build a programmable gain amplifier which is used for the measurement of small analog signals. The ULP-coprocessor in ESP32 is also designed to measure the voltages while operating in the sleep mode, to enable low power consumption; the CPU can be woken up by a threshold setting and/or via other triggers. With the appropriate setting, the ADCs and the amplifier can be configured to measure voltages for a maximum of 18 pins.
https://www.espressif.com/sites/default/files/documentation/esp32_datasheet_en.pdf#page30

A/Dコンバーター値の読み取り

ワンショットしか取れないが、どうするんだろ…?

int adc1_get_voltage(adc1_channel_t channel)