こんばんは、ファルコンM です。
PIC マイコンでMCC でUART 通信のコードを出力したが、通信できていない人
開発環境
- PIC24FJ128GC006
- MPLAB X IDE v4.01
- mla v2017_03_06
PIC24 でMCC ( Mplab Code Configurator ) を使ってUART通信をしたい。
しかし、通信ができない問題が発生した。
今回は、その解決方法について
問題の詳細
MCC でUART の設定をして、コード出力をした。
UART 通信の設定
- ボーレート 115200bps
- パリティ なし
- データビット 8bit
- ストップビット 1bit
- フロー制御 なし
デフォルトの設定から、ボーレートを設定しただけ。
その後、コード出力して、UART 通信をするコードを書いて、コンパイルして、UART で値を受信しようとした。
だが、正しく受信できない。
オシロスコープで確認している感じだと、何かを受信しているようにみえる。だが、正しいものを受信できていない。想定と違う値を受信している。
原因はデフォルトの周波数
いろいろ調べてみたんですが、デフォルトの周波数が原因だった。
さっきの画像をよく見てみると、Error Rate = 8.507 と書かれている。
UART に提供される周波数はデフォルトで変更していないので、2MHz となっている。
Fosc/2 の周波数を提供している。
今回の設定だと、2MHz から115200 bps を作ろうとしている。これに無理があったようだ。
そこでUART に提供する周波数を2MHz → 16 MHz に変更してみた。
そうすると、Error Rate は -0.794 となった!
ここだけを再びコード生成からやり直すと、UART 通信ができた!正常な値を受信した!
まとめ
MCC の問題と言うより、UART の設計の問題。本来ならばコーディングする前に確認しておくべきところ。
今回はとりあえず動かしたかっただけなので、あんまりこの辺を確認してなかった。
次回は気をつけよう。
コメントを残す