元杜重工

*あつめたりつくったり* 過去資料整理中
鉄道・船・マンホールの写真と艦船プラモデル・電子工作も少々

PICとPCをUSBでつなぐ(USART/TTLの一歩)

2018年02月03日 | 電子工作
ころがってたPICマイコンを久々にPCとシリアル通信してみたので備忘録。

今回、PCとの接続に使用したのは秋月で売ってるUSBシリアル変換ケーブル
TTL-232R-5V

見た目は普通のUSBケーブルだけど中にFT232Rが組み込まれています。
5Vの電源も供給してくれます(3.3Vの製品もあります)。75mAまで。


片方をPCにもう片方をブレッドボードやピンソケットピンヘッダにそのまま差せます。

PC側はTera Termを使用。
「ファイル」から「新しい接続」を開いて「シリアル」を選択しそれっぽいCOMをリストから選ぶ。
「設定」の「シリアルポート」を開けばボーレートとか設定できる。今回は9600。


これでPC側は準備よし。

ちなみに「新しい接続」はAlt+N、「接続断」はAlt+I


PICはおなじみPIC16F628A。
ブレッドボード上で組んでみる。

V_DD(14番ピン)、V_SS(5番ピン)はそれぞれ電源のプラスとマイナスに接続。

それから通信には7番ピンのRXと8番ピンのTXを使用する。
それぞれTransmittedとReceived。
USBシリアル変換ケーブルにもRXとTXがあるのでこれにつなぎます。

ここで注意!!

TXはデータを流す側でRXはデータを受け取る側なので
【TXとRX】をつなぎます。
同じもの同士をつないではいけません。

USBシリアル変換ケーブルには他にも2本端子が出ていますが、今回は何もつなぎません。

あとはソフトウェア。
MPLAB XとXC8を使いました。


プログラムのポイントは

◆RX, TXは入力
TRISB = 0b00000110;   //RX(RB1),TX(RB2)は入力

◆送信モード
今回は非同期・ハイスピード
SYNC = 0;       //USART Mode Select bit = Asynchronous mode
BRGH = 1;       //High Baud Rate Select bit
SPBRG = 25;      //BOUD RATE 9600
クロック4MHzでBRGH = 1のときSPBRG = 25とするとほぼ9600になります。
データシートにSPBRGの計算式と一覧表があります。

◆送信許可
TXEN = 1;       //Transmit enabled

◆データの受信関数
char getch()
{
while(!RCIF);  //USART receive bufferがFullになったら
return(RCREG);  //データを返す
}

◆データの送信関数
void putch(char DATA)
{
while(!TXIF);   //USART transmit bufferがFullになったら
TXREG = DATA;   //1バイト書き込み
}

◆データを送信
printf("Hello\r\n");
printf("Ans = %c\r\n", DATA);

こんな感じで簡単な文字の送受信ができました。