11 years, 3 months ago.

ピン定義変更について

LPC1768を使用しているのですが 初期設定で定義されているシリアルポート(p9、p10)(p13、p14)(p28、p27) 以外のピン例えば(p24、p23)を使ってシリアル通信をすることは可能でしょうか? また可能であればその方法を教えていただけませんか?

1 Answer

11 years, 3 months ago.

おはようございます。

昔のPIC16F84などにはUSARTがなく、自前アセンブラでシリアル通信を作成していましたので同様な方法であればもちろん可能です。 [逆に自前シリアルの情報がなく、時代を感じましたw

ただし通常ハードUSARTがあるマイコンではこのような方法は用いません。用いない理由の主なものは以下の通りです。

  • ソフトウエア的に処理しなければならず、メインのプログラムのリソースを多く消費する
  • 通信ボーレートに適した割り込み周期が(ハードUSARTと比較して)誤差が大きくなる ハードUSARTは9600、19200..などにクロックを合わせている場合が多い)
  • タイミング、機器の相性(誤差許容)などで苦労するw やれば分かります(10ビットでクロックが2%ずれると2x10=20%の最大誤差が発生..などを考慮しないといけません)

どのような理由でハードUSARTを利用されないのでしょうか? おそらくこの質問をされるということからアセンブラ未経験かと思われますので、上の覚悟があればチャレンジしてみてると非常に勉強になると思います。mbedを利用されるのであれば勉強以外でハードUSART以外を利用しなければならない状態にはしない方が得策だと思います。

ご丁寧な回答ありがとうございます。 私も以前にPICを使っていたためRS232使用宣言の様なものがMbedでも使えるのではないかと思い質問しました。

なぜハードUSARTを利用できないかというと、他のセンサで3つあるシリアルポートを使っていいるため 現在このような事態に至っております。

シリアルポートをリレー回路を用いることで一つのシリアルポートで2つのセンサを動かす事で改善できるかと考えその方向で進めています。

posted by Lab1 MIYAZAKI 06 Jun 2013

御世話様でございます。

バックグラウンド理解しました(失礼しました)。メインのmbedの負荷(他処理内容)、RTOSの有無にも左右されますが、私ならば以下のような順番で対応を検討すると思います(ざっくり考えただけで恐縮ですが)。

  • 2シリアルハード、1シリアル割り込みベースで処理
  • 3シリアルあるピックを間入れ、mbed→PIC→シリアルx3のようにPICをシリアル通信I/Fとして利用
  • FTDIのUSB-USART変換IC(quadポート)を利用(私は試したことがありません)

IC

参考URL

RTOS導入はシステム規模等賛否両論あるかと思われますが、私はmbedを使用する際には必ず入れて使用しています。USB、シリアル(GPS)、I2C、Ether、CAN等同時に使用するなどの場合には、タイミング管理が非常に楽になれますので (個人的には)おすすめです。

posted by Yam Yam 07 Jun 2013

御世話様です。

蛇足ですが、「あ、そういえば」と思って検索してみた所、ICセットでI2C/SPI to USARTコンバートICがありますね。これをn個用いればI2C/SPIのリソース1、DIO数本を消費してnポートの拡張が出来るような気がします(要確認)。

posted by Yam Yam 07 Jun 2013

ご丁寧な回答ありがとうございます 非常に参考になります 添付してくださったURL等の情報をもとに プロジェクト内で話し合ってみます。

posted by Lab1 MIYAZAKI 08 Jun 2013