BluePill は VBUS と 5V と書かれた端子が直結しており、5V ピンに給電してセルフパワー化しようとしたときにUSB接続すると危険です。なので5Vピンに自力で給電したい場合、これを切り離して純粋なセルフパワー化する必要があります。

基板上のカットポイントは写真の通りです。ここをカットすれば、基板上の 3.3V LDO を生かしたまま VBUS だけを分離し、5V ピンから給電できるようになります。

模倣チップ

ところで STM32F103C8 激安ボード (BluePill) ですが、載っているチップが中華製の模倣チップであることが多々あるようです (というより種類が異なる模倣チップがいくつかある?)。模倣チップでも動けばいいじゃんという話でもなく、SWG 経由で得られる coreid が本物と一致せず、若干面倒な手順を踏まないと書きこめないことがあります。

買う前に見分ける方法はあまりなく、親切な業者ならよく読んでみると STM32F103C8 とともに CKS CS32F103C8T6 と書いてあったりすることがあります。まず説明ページをよく読んでおく必要があります。GigaDevice GD32F103C8 というのもありますが、これは coreid も STM32 と同様のようです(未確認)。

ICをけずってリマークしてある悪質なものも存在しています (ebay で買ったらそうだった)。ダメだった場合に雑に dispute できるので、値段もかわらないし ebay よりも Aliexpress がおすすめ。

  1. トップ
  2. tech
  3. STM32F103C8 激安ボード (BluePill) のセルフパワー化


クリスタルラダーフィルタとクリスタルの特性測定

  • LCR メーターで容量 Cp を測る
  • VNA で直列共振周波数・並列共振周波数を測る
    • VNA の CH0/CH1 に直列で接続する
  • VNA でR を測る。直列共振周波数付近で読む
    • VNA の Ch0 に接続して読む。狭スパンで見ればスミスチャート上の等Rにそって表示されるはず

f_s = 9.997753
f_p = 10.015550
R = 10.7Ω
C_p = 1.67pF

C_s = C_p * ( (f_p**2) / (f_s**2) - 1) //=> 5.950825783949261e-15 (5.951fF)
L = 1 / (4 * (Math.PI ** 2) * (f_s ** 2) * C_s) //=> 0.04258515389890184 (42.6mH)

これをもとに LTSpice などで等価回路を入力する。LTSpice の場合、xtal の記号はあるので、これ使うのが良い。といっても実体は C そのもので、右クリックで上記で計算した詳細パラメータを入力することで xtal の等価回路になる。

備考

C_s は fF (フェムトファラド) 単位と非常に小さいので、直接は測れない。C_p は pF、R は数Ωオーダーになる

  1. トップ
  2. tech
  3. クリスタルラダーフィルタ

http://www.rubycon.co.jp/products/alumi/technote3.html#3-7
https://www.nichicon.co.jp/lib/aluminum.pdf

「放置特性」という形で言及されていることがある。放置していると、漏れ電流が増加していく。もともと経年劣化で必ず増加するが、電圧がかかっていれば自動修復されるものが、放置状態だとこれが行われないということのようだ。「電圧処理」をすれば修復されて元に戻る。

また経時劣化で内部圧力が高まり、液漏れすることがある。これも無負荷でも発生する。この場合、膨らんでいるコンデンサは「消費期限切れ」なので捨てるしかない。

  1. トップ
  2. tech
  3. 電解コンデンサは常温放置でも劣化する

https://github.com/pcb2gcode/pcb2gcode/wiki/Options:-Alignment-for-two-sided-PCB-and-offsets

mirror-axis まわりが追加された?ようで、デフォルトの挙動が変わってしまっていた。かなりハマった。しかもこれ、面倒なことにプロジェクトごと(ボードの大きさごと)に決められた値を入れないと今までと同じ挙動にならない。

mirror-axis には width の半分を入れる。一回変換してみて表示される数字を半分にわればいいが……

ケースのタカチの製品検索 ( https://www.takachi-el.co.jp/search/detail ) で結果をソートする方法がないので、JS でやる。

JS コンソールで以下を実行する。

p = $x('//*[@id="mCSB_1_container"]/table/tbody')[0];$x('tr[@class="child"]', p).sort( (a, b) => $x('number(./td[9])', b) < $x('number(./td[9])', a) ? 1 : -1 ).forEach( (e) => p.appendChild(e));

  • RGB BGR の設定は正しいか
  • 0xdddddd がグレーで表示されるか?
    • されない場合 GBRG / GRBG の可能性あり

ドライバが同じでも、載っている液晶のデータ形式が違うことがある。

備考 RGB888 (24bit) から RGB565 (16bit) へ変換

RGB

#define RGB565(rgb888)     ( ((( (rgb888)&0xf80000)>>8) | (((rgb888)&0xfc00)>>5) | (((rgb888)&0xf8)>>3)) )

GRBG

#define RGB565(rgb888)     (( (rgb888) & 0x1c00) << 3)|(( (rgb888) & 0xf8) << 5)|(( (rgb888) & 0xf80000) >> 16)|(((rgb888) & 0xe000) >> 13)
  1. トップ
  2. tech
  3. SPI TFT 液晶 (ST7735など) で色がおかしいときに試すこと