PIC MCC UART 通信ができないときの解決法

こんばんは、ファルコン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 の設計の問題。本来ならばコーディングする前に確認しておくべきところ。

今回はとりあえず動かしたかっただけなので、あんまりこの辺を確認してなかった。

次回は気をつけよう。

 

スポンサードリンク



コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です