ころがってた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);
こんな感じで簡単な文字の送受信ができました。
今回、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);
こんな感じで簡単な文字の送受信ができました。
※コメント投稿者のブログIDはブログ作成者のみに通知されます