2020年7月8日水曜日

STM32F042K6T6 のブレークアウトボードを Type-C 化してみた

作成した Type-C, 18ピン, 17.8 x 24.4 mm, STM32F042K6T6 ブレークアウトボード

最近は百均でも USB micro-B ケーブルが減ってきて、Type-C USB2.0のものに置き換わってきている。そこで、そろそろブレークアウトボードも Type-C 化してみたいと思って調べ始めたら、CC1, CC2 という端子に5.1kΩのプルダウン抵抗を1個ずつ付けておけばよいようだ。これなら簡単に出来そうだぞ!?

キーボード用ブレイクアウトボード


左右分割キーボードを作るのに、毎回マイコンを2個ずつ消費するのももったいないし、ハンダ付けがそれなりに大変だ。ハンダ付け自体は好きだけどね。なので、次からは左右にI/Oエキスパンダをひとつずつ配置し、それらをI2Cで接続して、マイコン自体は片方に1つだけ、という構成にしようと考えた。

必須ピン


I2C の他には、APA102 などの2線式 addressable LED(クロック線とデータ線)を駆動出来るように、SPI が欲しい。 キーボードは光らないとね!?

LC8822 2020 full-color addressable LED

左右のキーボードをつなぐケーブルは、このLED 用に 5V, GND が最低限必要なので、信号線となる I2C, SPI も同じ 5V の単一電源で動かしたい。そのため、信号ピンは 5V 耐圧の FTf ピンから選ぶことにする。

でもこれだけなら、ブレークアウト基板からは I/O ピンはそんなに出てなくてもいいよね、ということで、

  • 3.3V, 5V, GND
  • I2C(プルアップ抵抗付き)
  • SPI
  • UART
  • SWD
  • アナログピン数本

と、これぐらいの最小構成を作ってみたい。SWD と UART はデバッグ用。

周辺部品


周辺部品としては、

  • 電源(VBUS)LED
  • Lチカ用 LED
  • BOOT0 兼用スイッチ
  • WS2812 2020

とする。それほど使用頻度のないリセットスイッチは、ケーブルの抜き差しで代用する事にして、スイッチ入力としても使える BOOT0 のみ基板に実装することにした。

おまけで、WS2812 2020 はコントローラ内蔵のフルカラー LED で、サイズが 2.0x2.2 mm。これならちょうど、1.6mm 厚の PCB の側面にハンダ付け出来ると最近気付いて調子にのって付けてみている(笑)

WS2812 2020

PCB の周囲ギリギリにパッドを作ってもらえるかの確認用としても取り込んでみた。タイマーによる PWM 出力が出来るピンにつないでおく。

小さく?


今回は小さく作ることを目的のひとつにしているので、上述のように、ピン数・部品点数だけでなく、各パーツも見直した。

まず、レギュレータの出力電流を 250mA に下げて SOT-23 パッケージのものにした。

低ドロップアウト電圧レギュレータ 3.3V300mA SOT-23 AP7333(10個入)

キーごとに LED を付けるとかなりの消費電力になるけど、前回の後で気付いたのは、LED は 5V 電源なので、3.3V が必要なのは実はマイコンだけだから、レギュレータが 500mA も流せる必要はない。

タクトスイッチも表面実装のものに変更した。ただ、固定のポッチ用に穴を開けないといけないので、裏面に別のフットプリントを置きにくくなってちょっと不便だけど、大きさで選んでみた。

表面実装用タクトスイッチ TVAF06-A020B-R

あと、ErgoDash の組み立てで知った、パッドにビア打ちを許容することにした。非推奨かもしれないけど、これで場所の節約になるし、大きめのビアを使い易くなる。今回は後学のためにも敢えて試してみた。

小さく。でも、マイコンと Type-C コネクタだけで、結構場所取るなぁ。

タクトスイッチの 3D モデルは使い回し(汗)


ピン表


PCB 上の配置も考えながら、STM32F042K6T6 の 32 ピンのうち、以下で○を付けたピンをヘッダーに出すことにした。

ピン番号 端子名 種類 機能 ヘッダー
1 VDD
2 PF0 FTf I2C1_SDA
3 PF1 FTf I2C1_SCL
4 NRST
5 VDDA
6 PA0 TTa
7 PA1 TTa
8 PA2 TTa USART2_TX
9 PA3 TTa USART2_RX
10 PA4 TTa
11 PA5 TTa SPI1_SCK
12 PA6 TTa SPI1_MISO
13 PA7 TTa SPI1_MOSI
14 PB0 TTa
15 PB1 TTa
16 VSS
17 VDD
18 PA8 FT

19 PA9 FTf USART1_TX, I2C1_SCL ○ I2C pull-up
20 PA10 FTf USART1_RX, I2C1_SDA ○ I2C pull-up
21 PA11 FTf USB_DM
22 PA12 FTf USB_DP
23 PA13 FTf SWDIO
24 PA14 FT SWCLK, USART2_TX
25 PA15 FT USART2_RX
26 PB3 FT SPI1_SCK
27 PB4 FT SPI1_MISO
28 PB5 FT SPI1_MOSI
29 PB6 FTf I2C1_SCL
30 PB7 FTf I2C1_SDA
31 PB8 FTf BOOT0
32 VSS


PCB レイアウト


回路図


これらを踏まえた回路図。

STM32F042K6T6 ブレークアウトボードの回路図

前回からの主な変更点としては、

  • USB コネクタを Type-C に変更
    • CC1, CC2 に 5.1kΩのプルダウン抵抗を配置
  • I2C 用のプルアップ抵抗を 5V でプルアップ(前回は 3.3V)
  • 5V ラインも、ポリスイッチとチップインダクタを通す

など。

PCB


今回も PCB gogo に発注。製造開始から 24 時間以内に発送手続きまで完了していた!

届いた PCB。下端の WS2812 用パッドもギリギリまで出来ている

7x7 ピンに収まれば、ちょうど 1U キーの大きさになってカッコええのになぁ、と思いながらも、手ハンダし易い 2012 サイズで、スイッチや LED、I2C プルアップ抵抗も載せる、というのでは、このあたりが自分には精一杯だった。 これのために2週間ほど寝不足になったよ(笑)

Type-C コネクタの初ハンダ付けはかなり手こずった・・・。フットプリントをデータシート通りに作ったのだけど、そうしたらパッドが端子ギリギリしかなくて難易度高(汗)次回はパッドを手ハンダ用に少し大きくしよう。

動作確認


レギュレータ周りからハンダ付けしていって、テスターで電圧を確認しながら組み立て。

奥の白 LED は電源。手前は WS2812 の side-glow

Side-glow LED も無事光った! 拡大すると、こんな感じの空中ハンダ。何か LED を仮固定する手段がないと、ハンダ付けがかなりふわふわ。

Side-glow のハンダ付け


最後に、5V I2C に OLED と MCP23017 経由の 2x2 のスイッチマトリックスをつないでみたところ。

J-Link (SWD), OLED (I2C), MCP23017 (I2C) 経由の 2x2 スイッチマトリックス

また、UART についても、J-Link 経由でシリアルに printf() できるところまでを動作確認している。

感想


とりあえず動いて満足!

でも、ここへきて Choc V2 というスイッチが届き、この低いスイッチでキーボードを作ってみたくなる・・・。でもそうすると、Type-C コネクタの 3.2mm という背の高さがあだになり、このブレークアウト基板では分厚過ぎることが発覚・・・。ミッドマウントのコネクタにしないとだけど、そうすると、コネクタの裏に何も置けなくなるんだよな・・・。ブツブツ。

ということで、このブレークアウト基板は、これはこれでもう少しフットプリント・配置・配線・外形を調整した改善版を作成中~。