- ベストアンサー
H8SマイコンでUARTを115.2kに設定したい
- H8S2368マイコンとwifi通信モジュールのESP-WROOM-02をUART通信で接続するために、SCI0の設定を変更したい。
- 現在、SCI0の通信速度が38.4kbpsであり、ESP-WROOM-02の初期通信速度が115.2kbpsであるため、通信速度を一致させる必要がある。
- SCI0のBRRレジスタの値を下げることで通信速度を上げることができるが、正確な計算方法が知りたい。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
#1補足です。 長いですが下記のURLでH8S/2368ユーザーズマニュアルハードウェア編が入手できます。 https://www.renesas.com/ja-jp/document/hw-manual?hwLayerShowFlg=true&prdLayerId=107&layerName=H8S%252F2368&coronrService=document-prd-search&hwDocUrl=%2Fja-jp%2Fdoc%2Fproducts%2Fmpumcu%2F002%2Frjj09b0162_h8s2368.pdf&hashKey=cc3bfc5ffb6fad6048b1c624090abeee このマニュアルの、14.3.9 ビットレートレジスタ(BRR) あたりに詳しく書かれています。 これによると、動作クロック20MHzの場合、BRR=5に設定すると、通信速度は104,167bpsになります。115,200bpsとの誤差は約-9.6%となります。BRR=4だと125,000bpsで、誤差は8.5%ほどです。この誤差が通信可能の許容範囲でないと通信できないことになります。動作クロックを上げて調整してください。 または他の回答者様のご回答にあるように、逆にESP-WROOM-02の通信速度を下げるという方法も考えられますが、こちらの通信速度を設定するにはやはり最初は115,200bpsで通信しなければなりませんので、別途装置が必要になってくると思います。
その他の回答 (5)
- tadys
- ベストアンサー率40% (856/2135)
UARTで通信するためにはビットレートの誤差は5%程度より小さい必要が有ります。 これは相手側の誤差がゼロとした時に許容できる限界です。 相手側にも誤差があることを考えると2%以下程度、余裕を見ると1%以下が望ましいでしょう。 ビットレートは、BRRとCKS1、CKS0の設定を変えることで変更できます。 それぞれの設定値の求め方は下記資料の717ページに書いてあります。 http://akizukidenshi.com/download/ds/renesas/r01uh0166jj_h8s2633.pdf ビットレート115.2kHzを誤差ゼロで使用するためにはCPUの動作周波数を3.6864MHzの整数倍にする必要が有ります。 現在使用中の動作周波数では誤差を許容範囲に出来ないのであれば動作周波数を変更するか、SCKを外部クロックモードで使用して適切な周波数を入力する必要が有ります。
お礼
回答頂きありがとうございます。 返事が遅くなり申し訳ありません。 その後、"AT+UART_DEF=38400,8,1,0,0"というコマンドで通信スピードを設定してあげると、フラッシュメモリに設定が書き込まれるようで、以後電源を落としても38.4kbpsに固定することができました。 助かります。
- MSZ006
- ベストアンサー率38% (390/1011)
#1です。 もう一つの方法として、H8SマイコンのSCK0端子に外部クロックを供給する方法があります。 115,200bpsの16倍、1.8432MHzのクロックを入力すればよいようです。 水晶発振器1.8432MHzのものを入手してSCK0端子に接続、SCI0.SCRレジスタの設定値を0x02とすればよいようです。詳しくは前述のマニュアルの「14.3.6 シリアルコントロールレジスタ(SCR)」あたりに載っています。
お礼
回答頂きありがとうございます。 返事が遅くなり申し訳ありません。 その後、"AT+UART_DEF=38400,8,1,0,0"というコマンドで通信スピードを設定してあげると、フラッシュメモリに設定が書き込まれるようで、以後電源を落としても38.4kbpsに固定することができました。 今回はこれで対処してみようと思います。
- MSZ006
- ベストアンサー率38% (390/1011)
ESP-WROOM-02の起動時の通信速度を変えるにはファームウェアを書き換えるしかないと思われます。 残念ながら詳しくは私にはわかりません。ESP-WROOM-02の公式フォーラムやネット上の情報を検索してみてはどうでしょうか。
お礼
回答頂きありがとうございます。 返事が遅くなり申し訳ありません。 その後、"AT+UART_DEF=38400,8,1,0,0"というコマンドで通信スピードを設定してあげると、フラッシュメモリに設定が書き込まれるようで、以後電源を落としても38.4kbpsに固定することができました。 助かります。
- trytobe
- ベストアンサー率36% (3457/9591)
1ビットしか送れない時間に3ビットを送ろうとしても、速い方に合わせるのは無理です。 ESP-WROOM-02 の通信速度(ボーレート)を、H8S2368 側と同じにさせるほうが簡単です。 Arduinoと数百円のWi-Fiモジュールで爆安IoTをはじめよう - ICS MEDIA https://ics.media/entry/10457/3 ESP-WROOM-02 レート設定 - Google 検索 https://www.google.co.jp/search?q=ESP-WROOM-02+%E3%83%AC%E3%83%BC%E3%83%88%E8%A8%AD%E5%AE%9A
お礼
ESP-WROOM-02のボーレートを変更するには、ATコマンドでは”AT+UART_DEF=38400,8,1,0,0”というようなコマンドがあるとのことですが、 電源投入時の初期値のボーレートは115.2kHzですが、H8Sマイコンがこのボーレートを正確に設定することが現状だとできない状況ですが、 たとえば、ESP-WROOM-02の電源投入時に38.4kHzにボーレートを設定しておくような方法というのはありますでしょうか? どうぞ、ご教示頂きますよう、よろしくお願い致します。
- MSZ006
- ベストアンサー率38% (390/1011)
BRRレジスタの値と通信速度は反比例するようですので、通信速度を3倍にするにはBRRの値を1/3にすればよいと思います。 ということで、BRR=5にしてみてはどうでしょうか。±1程度の微調整は必要になるかもしれません。
お礼
回答頂きありがとうございます。 H8S2368のハードウェアマニュアルより、BRRの適切な値を求める式で求めてみたところ、現在の基板が使用している動作周波数19.66MHzの場合、約4.3....という値が出てきました。 なので、BRR=4に設定して、基板とPCとをシリアルケーブルでつなげてTeraTermなどで115.2kHzで受信させてみたのですが、文字が化けてしまいました。BRR=5,BRR=3の周辺の数値でも誤差が大きいようでやはり化けてしまいました。 38.4KHzの場合は問題なく”AT”という文字を受信できているので、ESP-WROOM-02側を38.4KHzに落として通信するのが良いのかなと思っております。
お礼
ESP-WROOM-02のボーレートを変更するには、ATコマンドでは”AT+UART_DEF=38400,8,1,0,0”というようなコマンドがあるとのことですが、 電源投入時の初期値のボーレートは115.2kHzですが、H8Sマイコンがこのボーレートを正確に設定することが現状だとできない状況ですが、 たとえば、ESP-WROOM-02の電源投入時に38.4kHzにボーレートを設定しておくような方法というのはありますでしょうか? どうぞ、ご教示頂きますよう、よろしくお願い致します。