10.串口通訊收發(fā)字符串_第1頁
10.串口通訊收發(fā)字符串_第2頁
10.串口通訊收發(fā)字符串_第3頁
10.串口通訊收發(fā)字符串_第4頁
10.串口通訊收發(fā)字符串_第5頁
已閱讀5頁,還剩6頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、10.串口通訊-收發(fā)字符串1實驗目的1) 通過實驗掌握 CC2530串口配置與使用2) 收到 PC 發(fā)送過來的數(shù)據,然后收到一整串數(shù)據之后,通過串口將改數(shù)據發(fā)送回去。注:開發(fā)中,當程序能跑起來后,串口是第一個要跑起來的設備,所有的工作狀態(tài),交互信息都會從串口輸出。片。2實驗設備用的是世界上最好的串口FT232,貴的 USB 串口線都用該芯硬件:PC 機一臺 ZB2530(底板、板、仿真器、USB 線) 一套軟件:2000/XP/win7 系統(tǒng),IAR 8.10 集成開發(fā)環(huán)境、串口助手3相關電路圖注:圖中 0R 的電阻是空貼的哦P0_2、P0_3 配置為外設功能時:P0_2 為 RX, P0_3

2、 為 TX. USART0 和 USART1 是串行通口,它們能夠分別運行于異步 UART 模式或者同步 SPI 模式。兩個 USART 具有同樣的功能,可以設置在單獨的 I/O 引腳。此種串口設計是沒有流控功能的。1技術工程師:2357481431公司:ht:http:/4相關寄存器相關寄存器 UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLKCONCMD、CLKCONSTA如2技術工程師:2357481431公司:ht:http:/寄存器位描述U0CSR (0 x86) -USART0 控制和狀態(tài)Bit7 MODEUSART 模式選擇 0:SPI 模式1:UART 模式B

3、it6 REUART使能 0: 禁用1:使能Bit5 SLAVESP 主或者從模式選擇 0: SPI 主模式1: SPI 從模式Bit4 FEUART 幀錯誤狀態(tài) 0: 無幀錯誤檢測1: 字節(jié)收到不正確停止位級別Bit3 ERRUART 奇偶錯誤狀態(tài) 0: 無奇偶錯誤檢測1: 字節(jié)收到奇偶錯誤Bit2 RX_BYTE接收字節(jié)狀態(tài) 0: 沒有收到字節(jié)1: 準備好接收字節(jié)Bit1 TX_BYTE傳送字節(jié)狀態(tài)字節(jié)沒有被傳送寫到數(shù)據緩存寄存器的最后字節(jié)被傳送Bit0 ACTIVEUSART 傳送/接收主動狀態(tài)、在 SPI 從模式下該位等于從模式選擇0: USART 空閑1: 在傳送或者接收模式 USA

4、RT 忙碌Bit7 CPOLSPI 的時鐘極性3技術工程師:2357481431公司:ht:http:/U0GCR (0 xC5)USART0 通用控制0: 負時鐘極性1: 正時鐘極性Bit6 CPHASPI 時鐘相位0: 當 SCK 從 CPOL 倒置到 CPOL 時數(shù)據輸出到 MOSI, 并且當 SCK 從 CPOL 倒置到 CPOL時數(shù)據輸入抽樣到 MISO。1: 當 SCK 從 CPOL 倒置到 CPOL 時數(shù)據輸出到 MOSI, 并且當 SCK 從 CPOL 倒置到 CPOL 時數(shù)據輸入抽樣到 MISOBit5 ORDER傳送位順序0: LSB 先傳送1: MSB 先傳送Bit4:0

5、 BAUD_E波特率指數(shù)值。BAUD_E 和 BAUD_M 決定了 UART 波特率和 SPI 的主 SCK 時鐘頻率U0BAUD (0 xC2) USART 0 波特率控制BAUD_M7:0波特率小數(shù)部分的值。BAUD_E 和 BAUD_M決定了 UART 的波特率和 SPI 的主 SCK 時鐘頻率U0DBUFUSART 0 接收/發(fā)送數(shù)據緩存UTX0IF(發(fā)送中斷標志)IRCON2 Bit1USART 0 TX 中斷標志 0: 無中斷未決1: 中斷未決CLKCONCMD時鐘控制命令Bit7 OSC32K32 kHz 時鐘振蕩器選擇0 : 32 kHz XOSC 1 : 32 kHz RCO

6、SCBit6 OSC系統(tǒng)時鐘源選擇0 : 32 MHz XOSC1 : 16 MHz RCOSCBit5:3 TICKSPD定時器標記輸出設置000 :32 MHz 001 :16 MHz 010 :8 MHz011 :4 MHz 100 :2 MHz 101 :1 MHz由寄存器UxBAUD.BAUD_M7:0和UxGCR.BAUD_E4:0定義波特率。該波特率用于UART 傳送,也用于SPI 傳送的串行時鐘速率。波特率由下式給出:F 是系統(tǒng)時鐘頻率,等于 16 MHz RCOSC 或者 32 MHz XOSC。32 MHz 系統(tǒng)時鐘常用的波特率設置4技術工程師:2357481431公司:h

7、t:http:/波特率(bps)UxBAUD.BAUD_MUxGCR.BAUD_E誤差(%)24005960.1448005970.1496005980.0.03192005990.0.033840059100.1457600216100.037680059110.110.03230400216120.03110 :500 kHz 111 :250 kHzBit2:0 CLKSPD時鐘速度000 :32 MHz 001 :16 MHz 010 :8 MHz011 :4 MHz 100 :2 MHz 101 :1 MHz110 :500 kHz 111 :250 kHzCLKCONSTACLKC

8、ONSTA 寄存器是一個只讀寄存器,用來獲得當前時鐘狀態(tài)CC2530 配置串口的一般步驟:1、配置 IO,使用外部設備功能。此處配置 P0_2 和 P0_3 用作串口 UART02、配置相應串口的控制和狀態(tài)寄存器。3、配置串口工作的波特率。由于此實驗增加了串口接收功能,寄存器有所改變(紅色部分),具體配置如下:PERCFG = 0 x00; /位置1 P0 口P0SEL = 0 x0c;/P0_2,P0_3用作串口(外部設備功能)0000 1100P2DIR &= 0XC0; /P0優(yōu)先作為UART0U0CSR |= 0 x80;U0GCR |= 8;U0BAUD |= 59;UTX0IF =

9、 0;/設置為UART方式 1000 0000/BAUD_E/波特率設為9600 根據上面表中獲得的數(shù)據/UART0 TX 中斷標志初始置位0U0CSR |= 0 x40; /允許接收 0100 0000IEN0 |= 0 x84; /開總中斷允許接收中斷5源碼分析#include #include #define uunsigned#define uchar unsigned char/定義控制燈的端口#define LED1 P1_0 #define LED2 P1_1#define LED3 P0_4void initUART0(void);void InitialAD(void);5技

10、術工程師:2357481431公司:ht:http:/void UartTX_Send_String(uchar *Data,len);uchar Recdata30=uchar RXTXflag = 1;uchar temp;o zigbee!rn;uudatanumber = 0;stringlen;/*串口發(fā)送字符串函數(shù)*/void UartTX_Send_String(uchar *Data,j; for(j=0;jlen;j+)U0DBUF = *Data+; while(UTX0IF = 0);UTX0IF = 0;len)/*初始化串口 0 函數(shù)*/ void initUART0

11、(void)CLKCONCMD &= 0 x40;while(CLKCONSTA & 0 x40);CLKCONCMD &= 0 x47;/設置系統(tǒng)時鐘源為 32MHZ 晶振/等待晶振穩(wěn)定/設置系統(tǒng)主時鐘頻率為 32MHZ6技術工程師:2357481431公司:ht:http:/PERCFG = 0 x00;P0SEL = 0 x0c;P2DIR &= 0XC0;/位置 1 P0 口/P0 用作串口/P0 優(yōu)先作為 UART0U0CSR |= 0 x80;U0GCR |= 8;U0BAUD |= 59;UTX0IF = 1;/串口設置為 UART 方式/波特率設為 9600/UART0 TX

12、中斷標志初始置位 1U0CSR |= 0X40;IEN0 |= 0 x84;/允許接收/開總中斷,接收中斷/*主函數(shù)*/ void main(void)P1DIR = 0 x03;P0DIR = 0X10; LED1 = 1;LED2 = 1;LED3 = 1;initUART0();/P1 控制 LED/關 LEDstringlen = strlen(char *)Recdata);UartTX_Send_String(Recdata,stringlen); while(1)if(RXTXflag = 1)/接收狀態(tài)7技術工程師:2357481431公司:ht:http:/if( temp

13、!= 0)LED2 = 0;/接收狀態(tài)指示if(temp!=#)&(datanumber50)/被定義為結束字符,最多能接收 50 個字符Recdatadatanumber+ = temp;elseRXTXflag = 3;/進入發(fā)送狀態(tài)if(datanumber = 50)RXTXflag = 3;temp = 0;if(RXTXflag = 3)UartTX_Send_String(send:,5);/發(fā)送狀態(tài)LED1 = 0;/發(fā)送狀態(tài)指示U0CSR &= 0 x40;/不能收數(shù)UartTX_Send_String(Recdata,datanumber);UartTX_Send_Stri

14、ng(rn,2);U0CSR |= 0 x40;/允許接收RXTXflag = 1;/恢復到接收狀態(tài)8技術工程師:2357481431公司:ht:http:/datanumber = 0;LED1 = 1;LED2 = 1;/指針歸 0/關發(fā)送指示memset(Recdata, 0, sizeof(Recdata);/*串口接收一個字符:一旦有數(shù)據從串口傳至 CC2530,則進入中斷,將接收到的數(shù)據賦值給變量 temp.*/ #pragma vector = URX0_VECTOR errupt void UART0_ISR(void)URX0IF = 0;temp = U0DBUF;/清中斷標志6、實驗現(xiàn)象COM4 是如圖:USB 轉串口在電腦上生成的,查看方法“電腦”“設備管理器

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論