カーブトレーサ@Peter Balch の改造

<!-- markdown-mode-on --> # **概要** https://www.instructables.com/Transistor-Curve-Tracer/ このプロジェクトにはarduino pro mini atmega328を使っている。特性の描画に時間がかかる動画を見た。速くするため、esp32などへの変更は可能だろうか?。 条件は: * オリジナルの機能を完全維持する * 元スケッチをベースにしたい * 描画速度が遅いのは絶対に嫌 * UNO より高速な MCU が必要 * DAC は MCP4922 を使う * オリジナルは A0〜A3,6,7、D2,3,4,7 ピンを使用 * SPIとシリアルを使用 <a name="more"></a> --- ## MCUの選定 ### 落選MCU 1. **ESP32 Devkit V1** - ADC の有効レンジが 0.1〜3V 程度 - 微小電圧・微小電流が死ぬ → **カーブトレーサ用途では致命的に不適** 2. **RP2040 / RP2350‑Zero** - 自由に使える ADC は 3ch - オリジナルは A0,1,2,3,6,7 の 6ch 必須 → **物理的に機能維持不可能** --- ### ✅ じゃあ、何が残るのか - **ATmega328P 系(UNO/互換)+外付け DAC(MCP4922)+描画最適化** - ADC の素直さはまだマシ - ただし描画速度は限界がある - **STM32F3 / G4 / F103 クラス** - ADC チャンネル数:余裕で 6ch 以上 - ADC の線形性・レンジ:ESP32 より遥かにマシ - MCU 性能:十分高速、SPI も速い → **「オリジナル機能維持+微小領域もちゃんと測れる+描画も速い」を現実的に満たせる候補** 基準(**オリジナル機能=ADC6ch 必須、微小電圧・微小電流が正しく測れない MCU は即不採用**)に完全に合わせて、 **STM32F303K8 と STM32F401 を“カーブトレーサ用途”に限定して評価する。** 結論から言うと: **→ STM32F303K8(または F303/F3 系の上位) これが最適解。** - ADC の質が良い - ADC チャンネル数が十分 - 微小電圧も扱える - SPI も速い - FPU あり - DAC も内蔵(外付けでもOK) あなたの「機能維持」「微小領域の正確測定」「描画高速化」 この3つを全部満たせる MCU は、現実的に **F303 系** だけだ。 | MCU | ADC 質 | ADC 数 | 微小電圧 | カーブトレーサ適性 | |------|--------|---------|-----------|----------------------| | **STM32F303K8** | ◎(測定器寄り) | ◎(6ch以上) | ◎ | **最適** | | STM32F401 | △ | ○(数はあるが1基) | △ | **不適** | | RP2040‑Zero | △ | ×(3ch) | ○ | 不適 | | ESP32 Devkit V1 | ×(0.1〜3Vしか使えない) | ○ | × | 致命的に不適 | --- ### STM32F3系比較 | 型番 | パッケージ | ピン数 | フラッシュ | RAM | ADC | DAC | 備考 | |------|------------|--------|------------|------|------|------|------| | **STM32F303K6T6** | LQFP‑32 | 32 | **32 KB** | 16 KB | 最大 10ch(ADC1/2) | 2ch | 最小構成、ピン少ない | | **STM32F303K8T6** | LQFP‑32 | 32 | **64 KB** | 16 KB | 最大 10ch(ADC1/2) | 2ch | F303K6 の上位(Flash 2倍) | | **STM32F303R8T6** | LQFP‑64 | 64 | **64 KB** | 40 KB | 最大 16ch(ADC1/2/3/4) | 2ch | ピン数多い、ADC豊富 | | **STM32F303RBT6** | LQFP‑64 | 64 | **128 KB** | 40 KB | 最大 16ch | 2ch | R8 の上位(Flash 2倍) | | **STM32F303RCT6** | LQFP‑64 | 64 | **256 KB** | 40 KB | 最大 16ch | 2ch | R8/RB のさらに上位 | | **STM32F303RDT6** | LQFP‑64 | 64 | **384 KB** | 40 KB | 最大 16ch | 2ch | 大容量モデル | | **STM32F303RET6** | LQFP‑64 | 64 | **512 KB** | 40 KB | 最大 16ch | 2ch | 最大フラッシュ | | **STM32F303CBT6** | LQFP‑48 | 48 | **128 KB** | 40 KB | 最大 12ch(ADC1/2/3/4) | 2ch | ピン数中間、ADC多い | | **STM32F303CCT6** | LQFP‑48 | 48 | **256 KB** | 40 KB | 最大 12ch | 2ch | CB の上位 | --- #### 🔥 **型番の読み方(重要ポイントだけ)** - **K** → 32pin - **C** → 48pin - **R** → 64pin - **6 / 8 / B / C / D / E** → フラッシュ容量 - 6 → 32KB - 8 → 64KB - B → 128KB - C → 256KB - D → 384KB - E → 512KB --- #### 🔥 **カーブトレーサ用途での最適選択(あなたの要求基準で)** あなたの要求: - **ADC 6ch 必須(オリジナル機能維持)** - **微小電圧・微小電流を正確に測れること** - **描画高速化(SPI 速い MCU)** - **DAC 2ch(MCP4922 でも内蔵でも可)** これを満たすのは: --- #### 🥇 **最適:STM32F303CBT6(48pin / 128KB)** 理由: - ADC 最大 12ch → **6ch 必須を余裕で満たす** - ピン数 48 → LCD / DAC / タッチ / ボタン全部載る - FPU あり → 計算高速 - SPI 高速 → 描画速い - DAC 2ch 内蔵 → 外付け MCP4922 と併用も可 - フラッシュ 128KB → 元スケッチ+UI でも余裕 --- #### 🥈 **次点:STM32F303CCT6(48pin / 256KB)** - CB のフラッシュ増量版 - 余裕が欲しいならこちら --- #### 🔥 **最終結論** あなたの要求(機能維持・微小領域の正確測定・高速描画)を **すべて満たす最適 MCU は:** > **STM32F303CBT6(または CCT6)** - ADC:高精度・多チャンネル - DAC:内蔵 - SPI:高速 - FPU:あり - ピン数:十分 - サイズ:扱いやすい **F303K6/K8(32pin)はピン不足で不適。 F303R8/RB/RC/RD/RE(64pin)は過剰。** --- #### カーブトレーサ用途におけるピン要件 vs Nano / F303K8 / F303CBT6 | --比較項目--| 必要条件(カーブトレーサ) | Arduino Nano<br>(ATmega328P) | STM32F303K8(32pin) | STM32F303CBT6(48pin) | |------|----------------------------|----------------------------|----------------------|------------------------| | 総ピン数 | ― | 30 | 32 | 48 | | 実質 GPIO(電源/リセット等除く) | **21 本 必要** | **22 本 使用可** | **理論上 22 本(ADC/SPI 競合により実用 18〜20 本)** | **約 37 本 使用可** | | ADC チャンネル数 | **6ch 必須** | 8ch(A0〜A7)専用 | 6ch(PA0〜PA5) | 最大 12ch(ADC1/2/3/4) | | SPI ピン | SCK/MOSI/MISO 必須 | D10〜D13 に専用割当 | PA5/PA6/PA7(ADC と競合し同時使用不可) | SPI1/SPI2 を ADC と独立して割当可能 | | LCD 制御(CS/DC/RST/BL) | 4 本 | 割当可能(GPIO 余り 18 本) | **割当不可(残り GPIO が 4 本未満になる)** | 割当可能(GPIO 余り 30 本以上) | | DAC CS | 1 本 | 割当可能 | **割当不可(残り GPIO が 1 本未満になる構成が発生)** | 割当可能 | | タッチ(CS/IRQ) | 2 本 | 割当可能 | **割当不可(残り GPIO が 2 本未満)** | 割当可能 | | ボタン | 3 本 | 割当可能 | **割当不可(残り GPIO が 3 本未満)** | 割当可能 | | その他(DUT制御など) | 2 本 | 割当可能 | **割当不可(残り GPIO が 2 本未満)** | 割当可能 | | ADC と SPI のピン競合 | **競合しないことが望ましい** | **競合なし(ADC=A0〜A7、SPI=D10〜D13)** | **競合あり(PA5/PA6/PA7 が ADC/SPI で排他的)** | **競合なし(ADC と SPI を別ポートに配置可能)** | | 必要 21 本に対する実質 GPIO | **21 本 必須** | **22 本 → 要求を満たす** | **18〜20 本 → 要求を満たさない** | **約 37 本 → 要求を満たす** | | 結論 | ― | **カーブトレーサ構成:成立** | **カーブトレーサ構成:不成立(ピン数不足)** | **カーブトレーサ構成:成立(十分なピン数)** | --- ## STM32F3での基本設計 ### 1. STM32F303CBT6 での A0〜A7 再現ピン割り当て 前提: - オリジナル UNO の A0〜A3, A6, A7 を **すべて再現** - STM32 側では **ADC1/2 のチャンネルに素直に割り当て** #### ■ ADC(A0〜A7 相当) | UNO 論理名 | 用途例 | STM32 ピン | STM32 ADC チャンネル | |------------|--------------------|------------|----------------------| | A0 | Ic(シャント) | **PA0** | ADC1_IN1 / ADC2_IN1 | | A1 | Vce | **PA1** | ADC1_IN2 / ADC2_IN2 | | A2 | 別モード用電圧1 | **PA2** | ADC1_IN3 / ADC2_IN3 | | A3 | 別モード用電圧2 | **PA3** | ADC1_IN4 / ADC2_IN4 | | A6 | 12V 昇圧監視 | **PA4** | ADC1_IN5 / ADC2_IN5 | | A7 | バッテリ電圧監視 | **PA5** | ADC1_IN6 / ADC2_IN6 | ※PA0〜PA5 は F303CBT6 で素直に ADC に割り当てられる構成。 ※ADC1 だけでも 6ch 取れるので、実装は ADC1 に統一でよい。 --- #### ■ SPI(LCD / DAC / タッチ) SPI1 を共用にする想定: | 信号 | STM32 ピン | 用途 | |------|------------|-------------------| | SCK | PA5 or PB3 | SPI1_SCK | | MOSI | PA7 | SPI1_MOSI | | MISO | PA6 | SPI1_MISO(タッチ) | CS 系は GPIO から自由に: | 信号 | STM32 ピン | 用途 | |----------|------------|-------------------| | LCD_CS | PB0 | ILI9341 CS | | LCD_DC | PB1 | ILI9341 D/C | | LCD_RST | PB2 | ILI9341 RESET | | LCD_BL | PB10 | バックライト制御 | | DAC_CS | PB12 | MCP4922 CS | | TP_CS | PB13 | XPT2046 CS | | TP_IRQ | PB14 | XPT2046 PENIRQ | ※ピンは一例。重要なのは「SPI1 を 3デバイスで共有+CS 個別」。 --- #### ■ その他 GPIO - ボタン類:PB3, PB4, PB5 など空きピンに割り当て - DUT セレクトリレー等があれば同様に空き GPIO へ --- ### 2. F303 版カーブトレーサのハード構成(ブロック図イメージ) #### ■ 電源 - **メイン 12V**:外部アダプタ or DC-DC - **5V**:ロジック・LCD 用(必要なら) - **3.3V**:STM32・MCP4922・ロジック系 - 必要なら **2.048V リファレンス**(DAC Vref 用) #### ■ DAC(MCP4922) - CH A:コレクタ掃引用 - CH B:ベース/ゲート駆動用 - 接続:SPI1(SCK/MOSI)+ DAC_CS #### ■ 掃引オペアンプ - 電源:12V 単電源 - 入力:DAC 出力(0〜2.048V) - 非反転増幅:ゲイン ≒ 5.7(例:10k / 47k) - 出力:0〜約12V → DUT コレクタへ #### ■ DUT & シャント - コレクタ:掃引電圧 - エミッタ:シャント抵抗(例:10Ω)→ GND - シャント上側電圧 → A0(PA0)で Ic 測定 #### ■ 電圧測定 - Vce:コレクタ−エミッタ間を分圧 → A1(PA1) - その他モード用電圧:A2, A3(PA2, PA3) - 12V 監視:分圧 → A6(PA4) - バッテリ監視:分圧 → A7(PA5) #### ■ LCD & タッチ - ILI9341:SPI1(SCK/MOSI)+ LCD_CS/DC/RST/BL - XPT2046:SPI1(SCK/MOSI/MISO)+ TP_CS/TP_IRQ --- ### 3. AVR → STM32 移植の具体的変更点 #### ■ 3-1. ピン定義の置き換え - `#define pin_Adc_Ic A0` → `#define PIN_ADC_IC PA0` - `#define pin_Adc_Vce A1` → `#define PIN_ADC_VCE PA1` - …といった形で **論理名を STM32 ピンにマップし直す** #### ■ 3-2. `analogRead()` → STM32 HAL/LL ベースの ADC 読み出し - AVR の `analogRead(pin)` をそのまま使わず、 **ADC1 を初期化 → チャンネルごとに変換 → 値取得** に書き換え - ただし Arduino STM32 コアを使うなら `analogRead()` 互換もあり → その場合でも「ピン番号 → ADC チャンネル」の対応だけ確認 #### ■ 3-3. `readSupply()` / 内部 1.1V 依存コードの削除・再設計 - AVR の内部 1.1V リファレンスを使った AVcc 測定ロジックは **そのままでは使えない** - 代わりに: - **3.3V を基準とした ADC キャリブレーション** - 必要なら **外付けリファレンス(2.048V)+その実測** でスケールを決める #### ■ 3-4. SPI 初期化の書き換え - AVR の `SPI.begin()` / `SPI.setClockDivider()` 等を STM32 用の SPI 設定に置き換え - クロック:10〜20MHz 程度 - モード:ILI9341 / MCP4922 / XPT2046 に合わせる(多くは MODE0) #### ■ 3-5. PROGMEM / pgm_read 系の削除 - AVR 特有の `PROGMEM` / `pgm_read_byte` 等は不要 - STM32 では普通に `const` 配列としてフラッシュに置かれる #### ■ 3-6. 割り込み・タイマ依存コードの見直し - `ISR(TIMERx_COMPA_vect)` など AVR 固有の ISR は STM32 の TIMx 割り込みに移植 - ただしカーブトレーサでは **ポーリング+ループ駆動** でも十分なことが多い → 必要最低限に留める #### ■ 3-7. 電源補正ロジックの再構成 - 12V・バッテリ電圧を **A6/A7 相当(PA4/PA5)で実測** - その値を使って: - 掃引電圧のスケール補正 - 表示用の電源電圧表示 - AVR 時代の「AVcc 補正」は捨て、 **“実測電圧ベース” の補正に一本化** --- ## 設計書 要求仕様は: - オリジナル機能を完全維持(ADC6ch 必須) - 微小電圧・微小電流を正確に測定 - 高速描画 - DAC(MCP4922)使用 - STM32F303CBT6 を採用 --- ### **カーブトレーサ設計書(STM32F303CBT6版)** --- ### **1. 目的** 本設計書は、オリジナル Arduino UNO ベースのカーブトレーサの機能を完全維持しつつ、 STM32F303CBT6 を用いて以下を実現することを目的とする。 - ADC 6ch による Ic / Vce / 12V / バッテリ / 補助測定の完全再現 - 微小電圧(1mV級)・微小電流(0.1mA級)の正確測定 - 高速描画(ILI9341) - DAC(MCP4922)による掃引電圧生成 - オリジナル機能の完全互換性 --- ### **2. システム構成概要** ``` +-------------------------------+ | STM32F303CBT6 | | ADC1: PA0〜PA5 (6ch) | | SPI1: LCD / DAC / Touch | | DAC: 内蔵2ch(任意使用) | +-------------------------------+ | | | | | | MCP4922 ILI9341 XPT2046 (DAC) (LCD) (Touch) | 掃引OPAMP → DUT → シャント → ADC ``` --- ### **3. ピン割り当て(A0〜A7 完全再現)** #### **3.1 ADC(A0〜A7 相当)** | UNO名 | 用途 | STM32ピン | ADCチャンネル | |------|------|-----------|----------------| | A0 | Ic(シャント) | PA0 | ADC1_IN1 | | A1 | Vce | PA1 | ADC1_IN2 | | A2 | 補助測定1 | PA2 | ADC1_IN3 | | A3 | 補助測定2 | PA3 | ADC1_IN4 | | A6 | 12V監視 | PA4 | ADC1_IN5 | | A7 | バッテリ監視 | PA5 | ADC1_IN6 | ※ADC1 のみで 6ch を確保できる。 --- #### **3.2 SPI(LCD / DAC / タッチ)** ##### SPI1(共用) | 信号 | STM32ピン | 用途 | |------|-----------|------| | SCK | PB3 | SPI1_SCK | | MOSI | PB5 | SPI1_MOSI | | MISO | PB4 | SPI1_MISO(タッチ用) | ##### CS / 制御信号 | デバイス | 信号 | STM32ピン | |----------|-------|------------| | ILI9341 | LCD_CS | PB0 | | ILI9341 | LCD_DC | PB1 | | ILI9341 | LCD_RST | PB2 | | ILI9341 | LCD_BL | PB10 | | MCP4922 | DAC_CS | PB12 | | XPT2046 | TP_CS | PB13 | | XPT2046 | TP_IRQ | PB14 | --- #### **3.3 その他 GPIO** | 用途 | ピン | |------|------| | ボタン1 | PA8 | | ボタン2 | PA9 | | ボタン3 | PA10 | --- ### **4. ハードウェア詳細設計** --- #### **4.1 DAC(MCP4922)回路** - Vref:2.048V(REF5020 など推奨) - CH A:掃引用 - CH B:ベース/ゲート駆動用 - 出力は OPAMP に入力 --- #### **4.2 掃引オペアンプ** ##### 推奨:OPA197 / OPA2991 / LMV358(12V動作) - 入力:DAC(0〜2.048V) - 非反転増幅 - ゲイン例: - Rf = 47k - Rin = 10k → Gain ≒ 5.7 → 出力:0〜約12V --- #### **4.3 シャント回路(Ic測定)** - シャント抵抗:10Ω(1%) - シャント上側 → PA0(A0) - シャント下側 → GND - 測定範囲: - 0.1mA → 1mV - 10mA → 100mV → STM32F303 の ADC なら十分測定可能 --- #### **4.4 Vce測定** - コレクタ電圧を分圧して PA1(A1)へ - 分圧例: - R1 = 100k - R2 = 33k → 12V → 約3V --- #### **4.5 電源監視(A6/A7)** - 12V → 分圧 → PA4 - バッテリ → 分圧 → PA5 - 分圧比は 12V → 3V になるように設定 --- ### **5. ソフトウェア設計(AVR → STM32 移植)** --- #### **5.1 ピン定義の置換** ```c #define PIN_ADC_IC PA0 #define PIN_ADC_VCE PA1 #define PIN_ADC_A2 PA2 #define PIN_ADC_A3 PA3 #define PIN_ADC_12V PA4 #define PIN_ADC_BATT PA5 ``` --- #### **5.2 ADC 読み取り** ##### AVR(旧) ```c value = analogRead(A0); ``` ##### STM32(新) ```c uint16_t readADC(uint32_t channel) { ADC1->CHSELR = channel; ADC1->CR |= ADC_CR_ADSTART; while (!(ADC1->ISR & ADC_ISR_EOC)); return ADC1->DR; } ``` --- #### **5.3 電源補正ロジックの再設計** AVR の内部 1.1V リファレンス方式は廃止。 STM32 では: - A6(12V) - A7(バッテリ) を **実測値ベースで補正** に使用。 --- #### **5.4 SPI 初期化** ```c SPI1->CR1 = SPI_CR1_MSTR | SPI_CR1_BR_0 | SPI_CR1_SSM | SPI_CR1_SSI; SPI1->CR1 |= SPI_CR1_SPE; ``` --- #### **5.5 PROGMEM の削除** - STM32 では `const` 配列で十分 - `pgm_read_byte()` → 直接アクセスに置換 --- #### **5.6 タイマ・割り込み** - AVR の `ISR(TIMER1_COMPA_vect)` → STM32 の TIM2/TIM3 割り込みへ移植 - ただしカーブトレーサはループ駆動でも十分 --- ### **6. キャリブレーション** --- #### **6.1 ADC キャリブ** - 0V - 1.0V - 2.0V - 3.0V の 4点で線形補正テーブルを生成。 --- #### **6.2 掃引電圧キャリブ** - DAC 出力 → OPAMP → ADC で実測 - 12V まで 0.5V ステップで補正テーブル作成 --- ### **7. 動作フロー** 1. 電源投入 2. ADC キャリブ 3. LCD 初期化 4. タッチ初期化 5. DUT 選択 6. 掃引開始 7. Ic/Vce を高速サンプリング 8. LCD にプロット 9. モード切替(NPN/PNP/MOSFET/ダイオード) --- ### **8. 部品表(主要部品)** | 部品 | 型番 | |------|------| | MCU | STM32F303CBT6 | | DAC | MCP4922 | | LCD | ILI9341 | | タッチ | XPT2046 | | OPAMP | OPA197 / LMV358 | | シャント | 10Ω 1% | | 分圧抵抗 | 100k / 33k | | Vref | REF5020 | --- ### **9. まとめ** この設計書により: - **オリジナル機能(ADC6ch)完全維持** - **微小電圧・微小電流の正確測定** - **高速描画** - **DAC 掃引の高精度化** - **STM32F303 のアナログ性能を最大限活用** がすべて成立する。 --- ## 変換基板 Atmega328P (32 TQFP) と STM32F303CBT6 (LQFP48) のための共通の基板を考える。すなわち、ベースの回路は共通の基板を使い、2種類のMCU用にそれぞれ専用の変換基板を作る。 --- ### 📘 Arduino Pro Mini ピン割り当て まずはInstructables の **Transistor Curve Tracer の Arduino Pro Mini の実装ピン割り当て**を 回路図から読み取る |役割カテゴリ|MCUピン(物理)|ポート名|Arduinoピン|信号名<br>(MCU側)|信号名<br>(デバイス側)|接続先<br>(回路図上の部品)| |:----|:----|:----|:----|:----|:----|:----| |ディスプレイ|32|PD2|D2|LCD_CS|CS|ILI9341 (3番ピン)| | |1|PD3|D3|LCD_RST|RESET|ILI9341 (4番ピン)| | |2|PD4|D4|LCD_DC|DC|ILI9341 (5番ピン)| |タッチパネル|17|PB5|D13|SCK|T_CLK|ILI9341 (10番ピン)/U1 (MCP4802) (3番ピン)| | |16|PB4|D12|MISO|T_DO|ILI9341 (13番ピン)| | |11|PD7|D7|TP_CS|T_CS|ILI9341 (11番ピン)| | |15|PB3|D11|SDI / MOSI|T_DIN|U1 (4番ピン) / ILI9341 (6番ピン)/同(12番ピン)| |DAC制御|14|PB2|D10|DAC_CS|DAC_CS|U1 (MCP4802) (2番ピン)| |アナログ測定|23|PC0|A0|ADC0| |Nch電流シャント上流| | |24|PC1|A1|ADC1| |Nch電流シャント下流| | |25|PC2|A2|ADC2| |Pch電流シャント上流| | |26|PC3|A3|ADC3| |Pch電流シャント下流| | |19|ADC6|A6|ADC6|VCC_MON|BATT ADC| | |22|ADC7|A7|ADC7|12V_MON|12V ADC| |電源/基本|4,6,18|VCC|VCC|VCC|5V|U5 (HT7550) 5V出力| | |3, 5, 21|GND|GND|GND|0V|各部 0V| --- ###🔷 **32pin 変換基板 ↔ STM32F103C8T6** Atmega328P の変換基板は秋月電子の[32ピンQFP変換基板 金フラッシュ](https://akizukidenshi.com/catalog/g/g109581/)として、基板1番ピンがAtmaga328Pの#1pin、以後同様に#32pinとなる。このとき、STM32F303CBT6は内部クロックを使用(HSEなし) STM32F303CBT6 これにSTM32F303CBT6のピンを対応させる変換基板を専用に起こす。その時の関係を表で示す。 #### カーブトレーサ用・完全 3者+STM32ピン番号一覧(Atmega ピン番号基準) |Atmega<br>ピン番号|Atmega<br>ピン名|Arduino 名|メイン基板<br>信号名|役割・備考|Blue Pill<br>シルク|STM32 ポート|STM32 LQFP48<br>ピン番号| |:----|:----|:----|:----|:----|:----|:----|:----| |1|PD3 / INT1|D3|LCD_RST|LCD リセット|B10|PB10|45| |2|PD4|D4|LCD_DC|LCD データ/コマンド|B7|PB7|42| |9|PD5|D5|BTN3|ユーザボタン3|C13|PC13|2| |11|PD7|D7|TP_CS|タッチパネル CS|A8|PA8|30| |12|PB0 / ICP1|D8|BTN2|ユーザボタン2|B1|PB1|22| |13|PB1 / OC1A|D9|BTN1|ユーザボタン1|B0|PB0|21| |14|PB2 / SS|D10|DAC_CS|DAC MCP4922 CS|B12|PB12|26| |15|PB3 / MOSI|D11|SPI_MOSI|SPI MOSI|B15|PB15|29| |16|PB4 / MISO|D12|SPI_MISO|SPI MISO|B14|PB14|28| |17|PB5 / SCK|D13|SPI_SCK|SPIクロック|B13|PB13|27| |19|ADC6|A6|SIG_12V_MON|12V監視 ADC|A4|PA4|15| |22|ADC7|A7|SIG_VCC_MON|VCC監視 ADC|A5|PA5|16| |23|PC0 / ADC0|A0|SIG_A0|Nch電流シャント上流|A0|PA0|11| |24|PC1 / ADC1|A1|SIG_A1|Nch電流シャント下流|A1|PA1|12| |25|PC2 / ADC2|A2|SIG_A2|Pch電流シャント上流|A2|PA2|13| |26|PC3 / ADC3|A3|SIG_A3|Pch電流シャント下流|A3|PA3|14| |27|PC4 / SDA|A4|I2C_SDA(予備)|I2C予備(未使用)|B9|PB9|44| |28|PC5 / SCL|A5|I2C_SCL(予備)|I2C予備(未使用)|B8|PB8|43| |30|PD0 / RXD|D0|UART_RX|シリアルRX|A10|PA10|32| |31|PD1 / TXD|D1|UART_TX|シリアルTX|A9|PA9|31| |32|PD2 / INT0|D2|LCD_CS|LCD チップセレクト|B6|PB6|41| --- #### カーブトレーサ用・完全 3者+STM32ピン番号一覧(信号名基準) |信号名(メイン基板)|機能・役割|Atmega<br>ピン番号|Atmega<br>ピン名|Arduino 名|Blue Pill<br> シルク|STM32 ポート|STM32 LQFP48<br> ピン番号| |:----|:----|:----|:----|:----|:----|:----|:----| |SIG_A0|Nch電流シャント上流|23|PC0/ADC0|A0|A0|PA0|11| |SIG_A1|Nch電流シャント下流|24|PC1/ADC1|A1|A1|PA1|12| |SIG_A2|Pch電流シャント上流|25|PC2/ADC2|A2|A2|PA2|13| |SIG_A3|Pch電流シャント下流|26|PC3/ADC3|A3|A3|PA3|14| |SIG_12V_MON|VCC監視 ADC|19|ADC6|A6|A4|PA4|15| |SIG_VCC_MON|12V 監視 ADC|22|ADC7|A7|A5|PA5|16| |SPI_SCK|SPI クロック|17|PB5/SCK|D13|B13|PB13|27| |SPI_MOSI|SPI MOSI|15|PB3/MOSI|D11|B15|PB15|29| |SPI_MISO|SPI MISO|16|PB4/MISO|D12|B14|PB14|28| |DAC_CS|DAC MCP4922 CS|14|PB2/SS|D10|B12|PB12|26| |TP_CS|タッチパネル CS|11|PD7|D7|A8|PA8|30| |LCD_CS|LCD チップセレクト|32|PD2/INT0|D2|B6|PB6|41| |LCD_RST|LCD RST|1|PD3/INT1|D3|B10|PB10|45| |LCD_DC|LCD DC|2|PD4|D4|B7|PB7|42| |BTN1|ユーザボタン1|13|PB1/OC1A|D9|B0|PB0|21| |BTN2|ユーザボタン2|12|PB0/ICP1|D8|B1|PB1|22| |BTN3|ユーザボタン3|9|PD5|D5|C13|PC13|2| |UART_TX|シリアル TX|31|PD1/TXD|D1|A9|PA9|31| |UART_RX|シリアル RX|30|PD0/RXD|D0|A10|PA10|32| |I2C_SCL(予備)|I2C SCL 予備|28|PC5/SCL|A5|B8|PB8|43| |I2C_SDA(予備)|I2C SDA 予備|27|PC4/SDA|A4|B9|PB9|44| - 信号名が一番左に来ているので、**メイン基板はこの列だけ見て設計できる**。 - Atmega 版サブ基板:左→Atmega列を見るだけ。 - Blue Pill / STM32 版サブ基板:左→Blue Pill シルク→STM32 ポート→LQFP48 ピン番号、の列を見るだけ。 もし「この信号は別ピンにしたい」「予備を正式に使いたい」があれば、**この表の行だけ差し替えれば済む**。 ## 関連リンク
Next Post Previous Post