RN52 ご利用ガイド

Microchip社製 RN52 Bluetoothオーディオモジュールのご利用ガイドです。

RN52データシートおよびユーザーズマニュアルからの抜粋・意訳です。きちんとした確認はこれら各原本をご確認下さい。

当社ではRN52の技術的なお問合わせは対応致しかねます。Microchip社に直接お問い合わせ下さい。

概要

  • Bluetooth3.0規格
  • A2DP、AVRCP、HFP/HSP、SPPプロファイル
  • コーデック SBC
  • UARTコマンドによる各種設定機能
  • 16Ωスピーカー駆動可能な差動アンプ出力
  • S/PDIFおよびI2Sサポート
  • UARTコマンドによりホスト制御可能なGPIO
  • SPPによるスルーモード
  • iAPプロファイルサポート
  • 技術基準適合証明番号:201-135403
  • RoHS Compliant
  • Bluetooth SIG QDID 58578

 

Bluetooth関連

親機(スマートフォンやPCなど)との接続方法

各プロファイルが使用できるまでの接続手順を示します。(MicrochipのRN52ユーザーズガイドではLEDの色がはちわれRN52ブレークアウトとは逆になっています。これは接続完了後のLED点滅が青の方がカッコイイと思ったからです。)

  1. パワーオンスイッチを長押し → 赤・青LED同時点灯
  2. ディスカバリ 親機から提供するプロファイルを確認 → 赤・青LEDが交互に点滅
  3. ペアリング 親機からペアリング操作 → 赤LED点滅後、青LED点滅に変わる

これで接続が完了してプロファイルを利用できます。

 

ペアリング認証

RN52では以下の認証方式を選択することが出来ます。デフォルトでは2のjust worksです。通常はそのままで良いと思います。

変更する場合はSAコマンドで方式を選択します。

        SA,1        // キーボードによるパスキー入力

 

方式
0 認証なし
1 キーボードによるパスキー入力(SSP: Secure Simple Pairing)
2 just worksモード(SSP) (デフォルト)
4 PINコード認証

 

不要なプロファイルを接続しないようにする

RN52はA2DP、AVRCP、HFP/HSP、SPP、iAPの各プロファイルをサポートしていますが、例えば音楽再生のみでいいといった使い方ではA2DP(+AVRCP)のみに設定することが出来ます。

この場合、ホストからUARTコマンドで

      SD,F4     // A2DP(+AVRCP)のみサービスプロファイルが見える

とマスクすればOKです。

以下にSDコマンドのビット位置(下位4ビット)を示します。複数のプロファイルを使う場合はそれぞれの値の和を16進数で設定します。

ご注意!!) 上位4ビットは必ず”F”にしてください。他の設定にするとRN52が起動しなくなってしまいます。

ビット位置 プロファイル
0 01 iAP
1 02 SPP
2 04 A2DP+AVRCP
3 08 HFP/HSP

 

接続状態表示

RN52の現在の接続状態はQコマンドで確認できます。2バイト(16進数4桁)で表示され、上位1バイト(16進数2桁)は接続中のプロファイル+電話着信イベント+再生中トラック変更イベントの各表示、下位1バイト(16進数2桁)は詳細な接続状態を表示します。

        Q        // 接続状態確認

以下に各バイトの内容を記します。

上位1バイト(バイト0)表示内容

ビット位置 値(16進数) 設定内容
0 1 iAP接続中
1 2 SPP接続中
2 4 A2DP接続中
3 8 HFP/HSP接続中
10  親機着信 
20  再生トラック変更 
6-7 Reserved 

 

下位1バイト(バイト1)表示内容

ビット位置 値(16進数) 設定内容
0-3 0-F 無線接続状態表示 下記表を参照
4 10

HFPで親機側のスピーカー音量変更通知

Y,0コマンドを発行すると元の音量に戻る。Qコマンドで読み出すとこのビットはクリアされる。

5 20

HFPで親機側のマイク音量変更通知

Y,1コマンドを発行すると元の音量に戻る。Qコマンドで読み出すとこのビットはクリアされる。

6-7 Reserved

 

下位1バイトのビット0-3で表示される内容 (かなり意訳入ってます。特にHFP関連。)

値(10進数) 状態 内容
0 Limbo 無機能状態
1 Connectable 接続可能、ページスキャン
2 Connectable and discoberable 接続&ディスカバリ可能、ページ&インクワイアリスキャン
3 Connected 親機に接続中
Outgoing call established  発呼中 
Incoming call established  着信中 
Active call  親機通話中、ヘッドセット通話待ち 
Test mode テストモード 
Three-way call waiting  三者通話待ち(キャッチコール中) 
Three-way call on hold  三者通話で後通話は保留中 
10  Three-way call multi-call  三者通話中
11 Incoming call on hold  通話保留中
12  Active call  親機・ヘッドセット共に通話中
13  Audio streaming  オーディオ再生中
14  Low battery  システム電源低下

 

システム関連

現在の拡張設定状態を確認する

拡張設定とは起動時の初期設定をニーズに合わせて変更できる設定のことです。拡張設定を変更するには”S%”コマンドを使います。ビット位置で各種機能の有効/無効を変更します。複数設定する場合は必要な機能の値を合計したものを設定します。以下はデフォルトに対してGPIOのAVRCPボタン割り当てを有効にする例です。

        S%,2005        // GPIOのAVRCPボタン割当てを有効にする

ビット位置 値(16進数) 設定内容
0 1 GPIOをAVRCPボタンに割当て
1 2 パワーオン時に親機に再接続
2 4 起動時にディスカバリを有効にする
3 8 PIO7(AAC)・PIO6(aptX)のコーデック表示 ※本RN52では左記コーデック未サポート
10  切断後にリブート 
20  音量アップ/ダウン時のトーン音をミュート 
40  PIO4を親機音声コマンド(Siri,OK Googleなど)起動ボタンに割当て 
80 (起動音・操作音などの)システムトーン音を無効にする 
100  ペアリングタイムアウト時に自動パワーオフする 
200  パワーオフ後に内部リセット 
10  400  パニック(暴走)後(にリブート)にペアリングリストを見て再接続 
11 800  PIO2のホストへのイベント信号をラッチする 
12  1000  再生中のトラック情報をUARTに表示する 
13  2000  音量最大・最小のトーン音を有効にする 
14  4000  ペアリングのキーボード認証有効時に自動的にパスキーを許可する 

 

現在の拡張設定状態を確認するには、Dコマンドを使います。以下は表示例です。

        D        // 拡張設定表示

        *** Settings ***
        BTA=xxxxxxxxxxxx
        BTAC=xxxxxxxxxxxx
        BTName=RN52-xxxx
        Authen=2
        COD=240704
        DiscoveryMask=FF
        ConnectionMask=FF
        PinCode=1234
        AudioConfig=0002
        AudioRoute=Analog
        CodecsEnabled=00
        AudioCodec=Unknown
        ExtFeatures=2005

 

ハードウェア関連

RN52のGPIO割当てです。

ピン 機能  使用 入出力方向  デフォルト状態 
GPIO2

モジュールからのイベント通知、H→Lへ100ms状態が変わる。ホストはQコマンドで状態を知ることが出来る。拡張設定でQコマンドを発行するまでLにラッチすることが可能。

汎用I/Oでは利用不可。 

 ランタイム 出力 
GPIO3

起動時にHにすると3秒後にDFUモード。

ランタイム中にHにすると500ms後にモジュールリセット。

リセットパルスは100msが推奨。

汎用I/Oでは利用不可。 

 ブート時、ランタイム 入力 
GPIO4 起動時Hで工場出荷時設定モード、出荷時設定に戻すには1秒毎にL,H,L,Hに状態を動かす。
ランタイム中は、親機(AG)の音声コマンド(Siri,OK Googleなど)モード。 
汎用I/Oでは利用不可。
 ブート時、ランタイム 入力 
GPIO5

音量アップ(アクティブL)設定可能。

汎用I/Oとして利用可。 

 ランタイム 入力 
GPIO6  割当なし、汎用I/Oとして利用可。   ランタイム 入出力 
GPIO7 

UARTボーレート

L:9600bps / H:115200bps

汎用I/Oとして利用可。 

 ブート時 入力 
GPIO9 

データ(SPP)/コマンドモード切替 

L: コマンド / H:データ

汎用I/Oでは利用不可。

 ランタイム 入力 
GPIO10 

音量ダウン(アクティブL)設定可能。

汎用I/Oとして利用可。 

 ランタイム 入力 
GPIO11 

前トラック(アクティブL)設定可能。

汎用I/Oとして利用可。 

 ランタイム 入力 
GPIO12 

次トラック(アクティブL)設定可能。

汎用I/Oとして利用可。 

 ランタイム 入力 
GPIO13 

再生/停止(アクティブL)設定可能。

汎用I/Oとして利用可。 

 ランタイム 入力 

工場出荷時設定に戻すには

設定コマンドや拡張設定を変更して万が一RN52が起動しなくなってしまった場合は、工場出荷時設定に戻すことが出来ます。上記GPIO4を起動時にHにして立ち上げると、赤・青LEDが高速点滅します。これで工場出荷時モードに入っています。その後、約1秒間隔でGPIO4をL→H→L→HにするとLEDが点灯状態になり工場出荷時設定に戻りますので、再起動してください。

 

オーディオ設定関連

RN52はオーディオ関連専用モジュールだけあって、機能が充実しています。

オーディオ再生に関する設定は、S|(←パイプ・縦棒)コマンドを使います。16進数4桁に各機能設定が割当てられています。例えば、再生をI2Sにする場合は以下のようになります。

        S|,0102        // I2S経由で再生、24bitサンプリング、サンプリングレート44.1k

S|コマンド設定は上位1バイト+下位1バイトの上位4ビット+下位4ビットで設定します。

上位1バイト

方式
00 アナログ出力(デフォルト)
01 I2S出力
02 S/PDIF出力
03 IntercomDACモード(使うことはないかと思います)

I2Sの仕様は以下のとおりです。

設定 内容
コンフィグレーション Masterのみ(MCLKは出ませんので、DAC自身でクロックを作る必要があります。)
サンプリングレート 可変
サンプリング幅 24bit
データ同期

LRSYNCのHに合わせて右チャンネルから送出。MSBは2番目のBCLKから。

※V1.16ではL/Rチャネルが逆に出力される不具合があります。対策されたファームウェアがMicroChip社よりリリースされるまでの間は、反転バッファなどでPCM_SYNC(LRCK)出力を逆転させてお使い下さい。

データ合わせ 左寄せ

下位1バイトは上位4ビットと下位4ビットに分かれて、W(サンプリング幅)とR(サンプリングレート)を設定します。

        W 0:24ビット、1:32ビット

        R  0:8k、1:32k、2:44k1、3:48k

アナログ出力時のスピーカーゲインはSSコマンド(00-0F)、マイクゲインはSMコマンド(16進数8桁、上位2バイトは0000固定+2チャンネルそれぞれ00-1F)


以上