chipKIT Uno32板上的PIC32處理器提供兩個(gè)硬件串行端口。板載FTDI芯片使用其中之一來創(chuàng)建USB-UART接口,該接口允許PC上運(yùn)行的MPIDE工具通過USB端口與Uno32板進(jìn)行通信。在本教程中,我們將使用相同的USB-UART接口來演示Uno32與PC之間的雙向異步串行通信。 Uno32板通過PC的USB端口接收串行命令,以打開和關(guān)閉外部LED。作為回報(bào),Uno32板通過發(fā)送LED的新狀態(tài)來確認(rèn)PC。
理論
chipKIT Uno32板具有兩個(gè)硬件串行端口: UART port1 和 UART端口2。引腳0和引腳1用作 UART端口1的 RX 和 TX 。 這些引腳也被板上的FT232R USB串行轉(zhuǎn)換器使用。同樣, UART端口2 分別使用引腳39和引腳40來實(shí)現(xiàn) RX 和 TX 功能。我們將在本教程中使用 UART port1 ,因?yàn)樗试S通過USB端口與PC進(jìn)行串行通信。
MPIDE具有內(nèi)置的串行監(jiān)視工具,可讓您進(jìn)行以下操作:觀察Uno32發(fā)送其串行端口的任何數(shù)據(jù)。它還使您可以通過同一串行接口將字符從PC發(fā)送回Uno32板。您可以通過單擊工具欄中的串行監(jiān)視器按鈕來打開串行監(jiān)視器窗口。在Windows版本的MPIDE中,串行監(jiān)視器窗口如下所示。
MPIDE串行監(jiān)視器窗口
其中有空白文本在頂部的方框中輸入要發(fā)送到chipKIT Uno32板的文本。在下面的空白處,將顯示Uno32板發(fā)送的串行數(shù)據(jù)。在右下角,您可以選擇串行通信的波特率(速度)。波特率的默認(rèn)設(shè)置為9600波特,但是您可以從下拉菜單中選擇其他波特率。請(qǐng)注意,對(duì)于串行通信,必須將chipKIT板配置為相同的波特率。返回到MPIDE的編程模式之前,必須釋放串行端口。您可以通過關(guān)閉串行監(jiān)視器窗口來做到這一點(diǎn)。
電路設(shè)置
本教程的實(shí)驗(yàn)電路設(shè)置非常簡單。您所需要的只是一個(gè)LED和一個(gè)220?串聯(lián)電阻。將通過從PC接收到的串行命令來控制LED。下圖顯示了與Uno32板的LED連接。 LED連接到引腳2。請(qǐng)注意,在串行通信期間,數(shù)字引腳0(RX)和1(TX)被占用,不能用于其他I/O。該板已連接到USB端口并從USB接收電源。
通過PC上的串行命令控制的外部LED
書寫草圖
在設(shè)置功能中,您需要告訴Uno32打開串行端口。這是通過 Serial.begin()命令完成的。括號(hào)內(nèi)的數(shù)字設(shè)置串行通訊的波特率。與計(jì)算機(jī)通訊的典型波特率是9600,但也支持其他速度。接下來,您需要將Pin 2定義為輸出,可以使用 pinMode()函數(shù)完成。
為了將數(shù)據(jù)從Uno32發(fā)送到PC,MPIDE主要提供了兩個(gè)命令: Serial.print()和 Serial.println()。兩者都通過串行端口將括號(hào)內(nèi)的內(nèi)容發(fā)送到PC。在PC端,接收到的數(shù)據(jù)顯示在串行監(jiān)視器窗口中。但是,使用 print 和 println 的區(qū)別在于它們從串行端口打印數(shù)據(jù)的方式。當(dāng)您使用 Serial.print()時(shí),光標(biāo)將停留在剛打印的內(nèi)容的末尾。因此,如果緊隨其后的是另一個(gè)打印命令,則新數(shù)據(jù)將在同一行中先前接收到的數(shù)據(jù)的結(jié)尾處顯示在串行監(jiān)視器窗口中。另一方面, Serial.println()會(huì)在末尾帶有換行符來打印數(shù)據(jù),在打印完數(shù)據(jù)后,光標(biāo)會(huì)向下移動(dòng)到下一行。這兩個(gè)命令可以采用多種形式,在Arduino串行庫頁面中對(duì)此進(jìn)行了很好的描述。
這里是完整的程序,用于通過PC通過串行線路發(fā)送的命令字節(jié)來控制外部LED。如果Uno32從PC接收到“ 1”,則它將點(diǎn)亮LED。如果接收到“ 0”,則LED熄滅。響應(yīng)該命令,Uno32將LED的新狀態(tài)打印回PC。
/*
Tutorial 2: Serial interface between PC and chipKIT
Description: chipKIT UNO32 receives commands from a PC through serial port
and control an external LED connected to pin 2
Board: chipKIT UNO32
*/
const int LED_PIN = 2; // LED is connected to digital I/O pin 2
int SERIAL_DATA; // Variable to store incoming serial byte
void setup() {
Serial.begin(9600); // Sets the baud rate for serial transmission
pinMode(LED_PIN, OUTPUT);
// Send these messages to PC only once
Serial.println(“Serial interface between PC and chipKIT”);
Serial.println(“1: LED ON, 0: LED OFF”);
digitalWrite(LED_PIN, LOW); // LED is off initially
}
void loop() {
if(Serial.available()》0){ // Check if serial data is available.
SERIAL_DATA = Serial.read(); // If yes, read the incoming byte
if(SERIAL_DATA == ‘1’) { // Check if the received byte is ‘1’
digitalWrite(LED_PIN, HIGH); // If so, turn the LED ON
Serial.println(“LED is ON”); // and acknowledge.
}
if(SERIAL_DATA == ‘0’) { // If the received byte is ‘0’,
digitalWrite(LED_PIN, LOW); // turn the LED OFF and
Serial.println(“LED is OFF”); // acknowledge.
}
}
}
下載草圖文件
Serial.begin(9600)打開序列號(hào)Uno32的端口,并設(shè)置9600的波特率。您可以看到在設(shè)置函數(shù)中有兩個(gè) Serial.println()命令。它們?cè)诖芯€上打印兩條文本消息,這些消息顯示在串行監(jiān)視器上。由于設(shè)置功能僅執(zhí)行一次,因此這些消息在開始時(shí)也僅打印一次。在循環(huán)功能內(nèi)部使用 Serial.available()命令,該命令檢查PC是否已將任何字符發(fā)送到串行端口。它返回可從串行端口讀取的字符數(shù)。一旦有可用數(shù)據(jù),就可以使用 Serial.read()命令進(jìn)行讀取。然后Uno32將接收到的字節(jié)與“ 1”和“ 0”進(jìn)行比較,以對(duì)LED采取適當(dāng)?shù)牟僮鳌?/p>
輸出
驗(yàn)證并上傳以上內(nèi)容素描到Uno32板上。打開串行監(jiān)視器窗口,并確保將其配置為使用9600的波特率。重置Uno32板,并等待其退出引導(dǎo)加載程序模式,以便它可以執(zhí)行用戶程序。您將在串行監(jiān)視器上讀到兩條文本行(“ PC和chipKIT之間的串行接口”和“ 1:LED亮,0:LED滅”) Uno32。如果您在頂部的發(fā)送框中輸入“ 1”,然后點(diǎn)擊發(fā)送按鈕,它將通過串行線路發(fā)送。 Uno32接收到命令字節(jié)后,將點(diǎn)亮LED。如果發(fā)送的是“ 0”,則LED將熄滅。 Uno32板通過在串行監(jiān)視器上打印回新的LED狀態(tài)來確認(rèn)收到的命令。如果收到的字符不是‘0’和‘1’,則Uno32將忽略它。
通過串行命令控制LED
責(zé)任編輯:wv
-
led
+關(guān)注
關(guān)注
242文章
23472瀏覽量
665641 -
串行
+關(guān)注
關(guān)注
0文章
237瀏覽量
34066
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
PC1902同步降壓LED驅(qū)動(dòng)器規(guī)格書
UART通信協(xié)議介紹和數(shù)據(jù)傳輸工作流程

如何實(shí)現(xiàn)51單片機(jī)與PC機(jī)的串行通信
外部端口和內(nèi)部端口是什么意思
PC9248雙向降壓-升壓控制器中文手冊(cè)
PC8655同步四開關(guān)升降壓LED專用控制器_恒流恒壓輸出_支持PWM調(diào)光功能
通過串行和AT命令使用wps8266,是否可以使用WPS PBC功能和AT命令?
SM5266PC高集成度LED顯示驅(qū)動(dòng)控制芯片中文手冊(cè)
YXC可編程晶振,頻點(diǎn)2.4576MHz,CMOS輸出,應(yīng)用于LED控制器

TM1680存儲(chǔ)器交換LED顯示控制的驅(qū)動(dòng)芯片規(guī)格書
TM1681存儲(chǔ)器交換LED顯示控制的驅(qū)動(dòng)芯片規(guī)格書
使用USBUART組件與主機(jī)PC通信,如果在串行端口打開的情況下終止固件,主機(jī)端為什么會(huì)報(bào)錯(cuò)?
stm8外部中斷用來脈沖計(jì)數(shù),外部中斷開始計(jì)數(shù),LED燈就不正常了的原因?
串行PCMCIA控制器的雙插槽PC卡電源接口開關(guān)TPS2206數(shù)據(jù)表

用于串行PCMCIA控制器的雙插槽PC卡電源接口交換機(jī)數(shù)據(jù)表 (Rev. D)

評(píng)論