2018年12月16日日曜日
STM32L4 / L0 reference board の作成と USB の有効化 (やはり USB で trouble)
最近 STM32 を好んで使用しているが, STM32L0 系 L4 系の reference board の NUCLEO-64 などは chip の USB bus が USB コネクタに出力されていない. そこで, USB-uB と chip を載せた reference board の作成を行なった.基板の仕様は以下の通り
1. STM32 64pin chip (STM32L452RCT, STM32L0x2RBを対象)
2. USB-uB, USART1/2, I2C slave/master, SWD CN を実装可能
3. 3.3V, 1.8V DCDC (USBを使用する時は, 3.3V必須)
4. VCTCXO, MCP4725による周波数安定回路
5. LED 2個
当初 4層基板の検討をしたが, ひどい間違いで, ゴミ基板を作っても仕方がないので価格重視で両面基板にした. 2 枚集合でカットした後は, 20枚取れる事になるが, 機能的に 20 枚使用するだけの寿命があるかどうかは疑問...
現段階で, USB, USART1, SWD のみ確認済で, I2C は未検証である.
また問題点は以下の通り,
a. 1.8V, 3.3V DCDC の電圧調整用の分圧抵抗が 1個ずつなので, E24 ではあらい
出力側もしくは GND 側のどちらかは 2個にしておきたい.
b. DCDC (TLV62569) が 軽負荷すぎてか, リップルが 200mV程度あり
a は現状 1つの値を 9:1 になる様に 2つに分けるとして, b は LDOにするかどうしよう検討が必要である
この基板の最初の嫁ぎ先は, 先に書いた KICAD 専用 keyboard の controller として使用する予定だ. その為, USB HID class が必要で, 例の如く STMicro の標準の SDK は使用しないつもりなので, HID の実装が必要である. ただ, 以前他の CPU で digitizer の report を作成した事があるのでそれほど難易度は高くないと考えている. CPU は STM32L072 を使用した. もちろん HID の実装だけなので, L052 とか L032 で十分であるが, refernce board として高機能, memory 大きめの CPU を使用している. ただし, code を見て L052, L032 に移行できる様に, memory の使用を制限する予定である
HID の実装の準備としてまずは, USB の device desc, config desc を host pc に認識させる必要がある. 見た所 STM32L4 系と同じ usb module を使用していそうなので, usb driver は L4 系のものをそのまま使用した. 以前 H7 系で CRS を使用しないと, 挙動がおかしい事は経験済なので, これはあらかじめ code を書いておいた, しかし, USB 上の SOF が途中でなくなり通信ができなくなるので, USB 用 clock の HSI48 ならびに CRS の挙動を見てみると, MCO から出力される HSI48 の clock が徐々に周波数が低くなり, いずれ止ってしまうのを確認した. CRS が動作しているのにも係らずである.
Reference manual を確認すると, VREFINT と ENREF_HSI48 の bit を set する必要があるとの事, これらは SYSCFG module にあり, bit を set した. しかしそれでも HSI48 が不安定である. SYSCFG は clock gate を enable にした憶えがないので, RCC の SYSCFGEN を set し問題なく HSI48 が安定した.
STM32L072 (L0x2と一般化けいると思う) で USB を使用する時は,
A. RCC の USBEN を有効
B. RCC の SYSCFG を有効
C. SYSCFG の VREFINT, ENREF_HSI48 を有効
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿