マイコン初心者がesp32をモデルに勉強
ESP32とは
中Espressif Systems社が設計、台TSMCが製造するマイクロコントローラー.
Wi-fiとBLEを備えながら非常に安価(¥700)なことで有名.
cpu
米Tensilica(製)、240 MHz駆動のプロセッサコアを2つ搭載.
240 MHz dual core Tensilica
espressif.comTensilica(テンシリカ)は、シリコンバレーを本拠地とする半導体IPコア分野の企業である。
…
組み込みWi-FiチップであるESP8266とESP32は、XtensaをメインのCPUコアとして使用している。
Tensilica - Wikipedia
メモリ
揮発性メモリ: Integrated 520 KB SRAM ESP32 Overview | Espressif Systems
不揮発性メモリ: 16 MByte flash
I/O
無線
- Wi-fi
- BLE
マイコンと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.comThe 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)