前回注文していた基板の続きです。CP2104 を使用したRaspberry Pi の UART に接続する USB Serial mini sheild です。

細かい点で2点想定外がありましたが正常に動作しました。

動作確認に使用したのはRaspberry Pi 3 type B です。Raspberry Pi 4 だとUART の接続が変更されているようで繋ぐだけでは出力確認はできませんでした。別トピックなのでここでは扱いません。

最近届く JLCPCB の箱は青いです。11/25発注して本日12/2に受け取り、と一週間しか掛かっていません。今までの注文の中でも一番早かったです。24mm x 22mm と小さかったので早かった理由はサイズに起因するのではないでしょうか。

開封するとビニールに梱包された基板が出てきます。余計な穴が二つ大きく空いてますが思った通りに仕上がってきています。半田付けを失敗する可能性も考えると5枚より10枚の方が安心できます。

表面のみ部品実装しています。ピンソケットと USB コネクタはJLCPCB では扱っておらず別途購入したものを自分で半田付けする必要があります。既にピンソケットも USB コネクタも購入したものが手元に届いています。

ペースト半田とヒートガンで USB コネクタを、コテを使ってピンソケットを付けていきます。ステンシルは頼んでいませんがペースト半田をランドに塗ってヒートガンで温めると手でつけるよりは比較的綺麗に付けられます。ペースト半田を付けすぎないのがコツです。

Raspberry Pi 3 B に接続してみました。

コンパクト形状で良いとは思いますが、浮いた感が否めないです。もっと格好良くはできそうです。

Raspberry Pi を起動して boot 時の出力をみてましょう。

<break>
MMC:   mmc@7e202000: 0, mmcnr@7e300000: 1
Loading Environment from FAT... *** Warning - bad CRC, using default environment
In:    serial
Out:   serial
Err:   serial
Net:   No ethernet found.
starting USB...
Bus usb@7e980000: scanning bus usb@7e980000 for devices... 3 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
## Info: input data size = 6 = 0x6
Hit any key to stop autoboot:  2 <0x08><0x08><0x08> 1 <0x08><0x08><0x08> 0 
switch to partitions #0, OK
mmc0 is current device
Scanning mmc 0:1...
Found U-Boot script /boot.scr
2603 bytes read in 3 ms (846.7 KiB/s)
## Executing script at 02400000
8341855 bytes read in 349 ms (22.8 MiB/s)
Total of 1 halfword(s) were the same
Decompressing kernel...
Uncompressed size: 23812608 = 0x16B5A00
26793482 bytes read in 1111 ms (23 MiB/s)
Booting Ubuntu (with booti) from mmc 0:...
## Flattened Device Tree blob at 02600000
   Booting using the fdt blob at 0x2600000
   Using Device Tree in place at 0000000002600000, end 000000000260a2d5
Starting kernel ...
[    0.000000] [Firmware Bug]: Bootloader left irq enabled: bank 1 irq 9
[    1.902057] spi-bcm2835 3f204000.spi: could not get clk: -517
[    9.761882] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[   10.043492] brcmfmac: brcmf_fw_alloc_request: using brcm/brcmfmac43430-sdio for chip BCM43430/1
[   10.052648] brcmfmac: brcmf_c_process_clm_blob: no clm_blob available (err=-2), device may have limited channels available
[   10.067532] brcmfmac: brcmf_c_preinit_dcmds: Firmware: BCM43430/1 wl0: Oct 22 2019 01:59:28 version 7.45.98.94 (r723000 CY) FWID 01-3b33decd
[   27.659323] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save enabled
Ubuntu 20.04.1 LTS raspberrypi ttyS0
raspberrypi login: [   29.310828] brcmfmac: brcmf_cfg80211_set_power_mgmt: power save disabled
raspberrypi login: 
raspberrypi login: 
raspberrypi login: 

Enter キーも3回押してみたところ最後の3行で問題なく入力されていることが確認できました。

ただこの USB ケーブルを2本使用しているところからも分かる通り、USB serial 基板から Raspberry Pi への 5V 入力が繋がっていませんでした。これが一つ目の想定外です。

次に Rx, Tx それぞれに LED でデータの転送を知らせるように繋いでいるはずですが点灯していません。これは前回 FTDI 在庫切れから急遽 CP2104 に変更した際にデータシートに載っていた Application Note を参考にしたものでした。 GPIO.0, GPIO.1 のdefault 挙動が open drain の output でTx, Rx Toggle だったはずですが、正直なところサラッとしか読まずに発注してしまったので自信はそんなにありません。

https://datasheet.lcsc.com/szlcsc/SILICON-LABS-CP2104-F03-GM_C47742.pdf

More information regarding the configuration and usage of these pins can be found in “AN721: CP21xx Device Customization Guide” and “AN223: Runtime GPIO Control for CP210x” available on the Silicon Labs website.

今回の繋ぎ方で動くものだと思っていましたがどうもそんな簡単には行かなかったようです。ここにあるように GPIO 挙動について別資料があるようなので次はこのあたりをしっかり調査したいと思います。