BLE基礎 (13)
2024/08/29
前回 は UART と USB CDC ACM を有効にすると UART Async API が使えないという件が終わった。
気付く元となった Nordic UART Service を使う DevAcademy に戻ろう。
話の続きとしてはBLE基礎 (12)になる。
Lesson 4 - Exercise 3
最終的には UART と USB CDC ACM を両方有効にしても動いた。
いくつか変更が必要だった。
app.overlay
の内容をボード定義のoverlayファイルにコピーした- 両方ある場合、ボード定義のoverlayファイルの方が優先され
app.overlay
は読み込まれないようだ
- 両方ある場合、ボード定義のoverlayファイルの方が優先され
prj.conf
にCONFIG_UART_LINE_CTRL=n
を追加- ncs の方に置いているボード定義の defconfig に
CONFIG_UART_LINE_CTRL=y
を書いていた- USB CDC ACM を有効にするからまねして置いていただけで確認はしていない
- 有効な場合、UART の初期化でDTR待ちをするようになっていた
- CTS/RTS が有効だとうまいことやってくれるのか?
- あるいは USB CDC ACM だったらできるとか?
- 何にせよ、いまの私の接続では CTS/RTS を使っていないし
uart0
を使っているので無限待ちしてしまう
- このブロックをまるまる削除するだけでもよかったかもしれない
- ncs の方に置いているボード定義の defconfig に
- ログの出力はRTTではないようにした
- これは動かなかったときに関係があるかもしれないと思ってやっただけ
- ログ出力は UART と USB CDC ACM を試したので、RTT は別途試そう
CONFIG_UART_0_INTERRUPT_DRIVEN=n
を設定- USB CDC ACM を有効にするとこれが
y
になり、UART Async API が使用できなくなってuart_callback_set()
でエラーになるため
- USB CDC ACM を有効にするとこれが
こんなところである。
DTR のところがちょっと気になった。 nRF は UART はあるが DTR とかを使うなら RS-232C みたいなちゃんとしたものを間に挟まないといけないのでは。
などと考えていたが、これは DK ならそのまま動くはずだ。
Console over CDC ACM UARTでもUART_LINE_CTRL_DTR
を見るようになっているので、もうそういうものと思っておけば良いのか。