|
串口通信,發(fā)送字符串
模塊通過串口向安卓發(fā)送數(shù)據(jù)
1、往CC2530模塊里面下載程序 打開 iar810,再用 iar810 去打開工程,在“2014-5-1-NJZBcc2530\2.基礎(chǔ)實(shí)驗(yàn)源碼\9.串口通訊-發(fā)送字符串”文件夾內(nèi),打開之后,rebuild all,然后再 debug(如果不會(huì),請(qǐng)看基礎(chǔ)實(shí)驗(yàn)的第一個(gè)實(shí)驗(yàn)),然后按仿真器的復(fù)位按鈕。程序就運(yùn)行起來了。
2、安裝APK到安卓設(shè)備(需要安卓 3.1以上)
安卓 APK 在“2014-8-1-NJZBcc2530\2.基礎(chǔ)實(shí)驗(yàn)源碼\9.串口通訊-發(fā)送字符串”目錄下,請(qǐng)大家自己把這個(gè) apk:“WchUsbDriver.apk”安裝到你的安卓設(shè)備。
3、安卓顯示cc2530通過串口送來的數(shù)據(jù):
如下順序連接硬件:
安卓—OTG 數(shù)據(jù)線————套件中的 usb 數(shù)據(jù)線—模塊 把安卓和模塊連接:
如上連接后,在你的安卓打開你剛安裝的 apk 程序,波特率選擇115200,然后點(diǎn)擊 config 按鈕,
就會(huì)在數(shù)據(jù)接受區(qū),看到模塊送來的“Hello Zigbee”字符了。
4、實(shí)驗(yàn)分析
本實(shí)驗(yàn)相關(guān)電路:
P0_2、 P0_3 配置為外設(shè)功能時(shí): P0_2為 RX, P0_3為 TX. USART0 和 USART1 是串行通信接口,它們能夠分別運(yùn)行于異步 UART 模式或者同步 SPI 模式。兩個(gè) USART 具有同樣的功能,可以設(shè)置在單獨(dú)的 I/O 引腳。
實(shí)驗(yàn)相關(guān)寄存器
相關(guān)寄存器 UxCSR、UxCSR、UxGCR、UxBUF、UxBAUD、CLKCONCMD、CLKCONSTA 如下表
所示: (見附件)
CC2530配置串口的一般步驟:
1、 配置 IO,使用外部設(shè)備功能。此處配置 P0_2 和 P0_3 用作串口 UART0
2、 配置相應(yīng)串口的控制和狀態(tài)寄存器。
3、 配置串口工作的波特率。
寄存器具體配置如下:
PERCFG = 0x00; //位置 1 P0 口
P0SEL = 0x0c; //P0_2,P0_3用作串口(外部設(shè)備功能)
P2DIR &= ~0XC0; //P0優(yōu)先作為UART0
U0CSR |= 0x80; //設(shè)置為UART方式
U0GCR |= 11;
U0BAUD |= 216; //波特率設(shè)為115200 根據(jù)上面表中獲得的數(shù)據(jù)
UTX0IF = 0; //UART0 TX 中斷標(biāo)志初始置位 0
源碼分析,大家可以在 IAR 中看下注釋。
九、串口通信----發(fā)送字符
1、打開 iar810,再用 iar810去打開工程,在“2014-5-1-NJZBcc2530\2.基礎(chǔ)實(shí)驗(yàn)源碼\9.串口通訊-發(fā)送字符串”
文件夾內(nèi),打開之后,debug,然后按仿真器的復(fù)位按鈕。程序就運(yùn)行起來了。
2、用usb 數(shù)據(jù)線直接把模塊鏈接到電腦
如上圖操作后,就會(huì)在電腦里面生成一個(gè) com口,可以在設(shè)備管理器中看的到: +
然后打開串口助手(在“cc2530模塊資料(天線桿版本--2013-9-25)\8.軟件工具\(yùn)串口調(diào)試助手 V2.2”):
本實(shí)驗(yàn)相關(guān)電路:
P0_2、P0_3配置為外設(shè)功能時(shí):P0_2為RX, P0_3為TX. USART0和USART1是串行通信接口,它們能夠分
別運(yùn)行于異步 UART模式或者同步SPI 模式。兩個(gè) USART具有同樣的功能,可以設(shè)置在單獨(dú)的 I/O 引腳。
- /****************************************************************************
- * 文 件 名: main.c
- * 作 者: Andy
- * 修 訂: 2013-01-08
- * 版 本: 1.0
- * 描 述: 設(shè)置串口調(diào)試助手波特率:115200bps 8N1
- * 會(huì)收到CC2530發(fā)過來的:Hello Zigbee
- ****************************************************************************/
- #include <ioCC2530.h>
- #include <string.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- #define TX_SIZE 20
- #define TX_STRING "Hello Zigbee "
- char TxData[TX_SIZE]; //存儲(chǔ)發(fā)送字符串
- /****************************************************************************
- * 名 稱: DelayMS()
- * 功 能: 以毫秒為單位延時(shí) 16M時(shí)約為535,32M時(shí)要調(diào)整,系統(tǒng)時(shí)鐘不修改默認(rèn)為16M
- * 入口參數(shù): msec 延時(shí)參數(shù),值越大延時(shí)越久
- * 出口參數(shù): 無
- ****************************************************************************/
- void DelayMS(uint msec)
- {
- uint i,j;
-
- for (i=0; i<msec; i++)
- for (j=0; j<1070; j++);
- }
- /****************************************************************************
- * 名 稱: InitUart()
- * 功 能: 串口初始化函數(shù)
- * 入口參數(shù): 無
- * 出口參數(shù): 無
- ****************************************************************************/
- void InitUart(void)
- {
- PERCFG = 0x00; //外設(shè)控制寄存器 USART 0的IO位置:0為P0口位置1
- P0SEL = 0x0c; //P0_2,P0_3用作串口(外設(shè)功能)
- P2DIR &= ~0XC0; //P0優(yōu)先作為UART0
-
- U0CSR |= 0x80; //設(shè)置為UART方式
- U0GCR |= 11;
- U0BAUD |= 216; //波特率設(shè)為115200
- UTX0IF = 0; //UART0 TX中斷標(biāo)志初始置位0
- }
- /****************************************************************************
- * 名 稱: UartSendString()
- * 功 能: 串口發(fā)送函數(shù)
- * 入口參數(shù): Data:發(fā)送緩沖區(qū) len:發(fā)送長(zhǎng)度
- * 出口參數(shù): 無
- ****************************************************************************/
- void UartSendString(char *Data, int len)
- {
- uint i;
-
- for(i=0; i<len; i++)
- {
- U0DBUF = *Data++;
- while(UTX0IF == 0);
- UTX0IF = 0;
- }
- }
- /****************************************************************************
- * 程序入口函數(shù)
- ****************************************************************************/
- void main(void)
- {
- CLKCONCMD &= ~0x40; //設(shè)置系統(tǒng)時(shí)鐘源為32MHZ晶振
- while(CLKCONSTA & 0x40); //等待晶振穩(wěn)定為32M
- CLKCONCMD &= ~0x47; //設(shè)置系統(tǒng)主時(shí)鐘頻率為32MHZ
-
- InitUart(); //調(diào)置串口相關(guān)寄存器
- memset(TxData, 0, TX_SIZE); //數(shù)據(jù)清0
- memcpy(TxData, TX_STRING, sizeof(TX_STRING)); //復(fù)制發(fā)送字符串到TxData
-
- while(1)
- {
- UartSendString(TxData, sizeof(TX_STRING)); //串口發(fā)送數(shù)據(jù)
- DelayMS(1000); //延時(shí)
- }
- }
復(fù)制代碼
全部資料51hei下載地址:
9.串口通訊-發(fā)送字符串.rar
(3.21 MB, 下載次數(shù): 49)
2017-12-17 22:25 上傳
點(diǎn)擊文件名下載附件
|
|