「ちょっとだけ使い込む」って変な日本語だけどまあいいか。
SSD1306接続しています。
[env:nucleo_f303k8]
platform = ststm32
framework = arduino
board = nucleo_f303k8
lib_deps = olikraus/U8g2@^2.33.2
I2C
デフォルトでは以下に接続するとArduino環境で使いやすいようです。
CN3 (Left Side)
Adruino STM32
D1 PA9
D0 PA10
RST NRST
GND GND
D2 PA12
D3 PB0
D4 PB7 <<-- SDA
D5 PB6 <<-- SCL
...
お世話になる SSD1306 w/u8g2 が
U8G2_SSD1306_128X64_NONAME_F_HW_I2C u8g2(U8G2_R0, /* reset=*/ U8X8_PIN_NONE);
であっさり使えました。
ADC
analogReadResolution(12);
a=analogRead(A0);
であっさり A0=PA0 のAD値が12ビットで読めます。互換性を重視しているのか,analogReadResolution(12)
を指定しないと10ビットでした。
DAC
これも簡単に
dac_write_value(PA_4, a, 1);
で PA_4 = A3 に出力されました。指定値は12ビットです。線形性もいいようです。表示機がアレなので際のところはよくわかりませんが。バッファードとして使えるピンですが,実際にバッファードかどうかは検証していません。
おしまい
あと OPAMP と PWM と RTC でもテストできれば,かなり使いこなせたことになるかな...
(宣伝)
安価で,非常に使いやすいシンプルなマイコンですね。Arduino環境を併用することでだいぶ楽になります。STM32CubeIDEを使うことでフル機能を使いこなせますが,手軽に使うならPIO+Arduinoもかなり良いと思いました。
DAC/OPAMPも内蔵してるのは珍しいです。アナログ屋さんにはありがたいです。
NUCLEOならSTLINK内蔵で,スケッチのアップロードやシリアルモニターを使うのに不都合なくて快適です。ピンが上にも出ているので,ちょっとした実験も簡単です。
おまけ コピペ用
CN3 (Left Side)
Adruino STM32 Function
D1 PA9 USART1 TX
D0 PA10 USART1 RX
RST NRST
GND GND
D2 PA12
D3 PB0 TIM3_CH3
D4 PB7
D5 PB6 TIM16_CH1N
D6 PB1 TIM3_CH4
D7 PF0
D8 PF1
D9 PA8 TIM1_CH1
D10 PA11 SPI_CS || TIM1_CH4
D11 PB5 SPI1_MOSI || TIM17_CH1
D12 PB4 SPI1_MISO
CN4 (Right Side)
Adruino STM32 Function
VIN VIN Power Input
GND GND
RST NRST
+5V +5V
A7 PA2 ADC1_IN3 connected to VCP_TX
A6 PA7 ADC2_IN4
A5 PA6 ADC2_IN3 || I2C1_SCL -SB16- PB6
A4 PA5 ADC2_IN2 || I2C1_SDA -SB18- PB7
A3 PA4 ADC2_IN1
A2 PA3 ADC1_IN4
A1 PA1 ADC1_IN2
A0 PA0 ADC1_IN1
AREF AVDD
+3V3 +3V3
D13 PB3 SPI1_SCK connected to LD3, H=ON