0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

CC2530(zigbee)入門開發(fā): 串口收發(fā)配置

DS小龍哥-嵌入式技術(shù) ? 來源:DS小龍哥-嵌入式技術(shù) ? 作者:DS小龍哥-嵌入式技 ? 2022-05-28 13:32 ? 次閱讀

一、串口協(xié)議介紹

串口傳輸協(xié)議是嵌入式開發(fā)里比較常見的傳輸協(xié)議,開發(fā)階段用的最多的方式就是將MCU的調(diào)試信息打印到PC機(jī)串口終端顯示,方便調(diào)試錯(cuò)誤。

一般傳輸協(xié)議分為兩種: 并口和串口。

并口傳輸協(xié)議:指數(shù)據(jù)的各位同時(shí)發(fā)送或接收,每個(gè)數(shù)據(jù)位使用單獨(dú)的一條導(dǎo)線。傳輸速度快、效率高,但需要的數(shù)據(jù)線較多,成本高。

串口傳輸協(xié)議:指數(shù)據(jù)一位接一位地順 序發(fā)送或接收。需要的數(shù)據(jù)線少,成本低,但傳輸速度慢,效率低。

CC2530一共有兩個(gè)串口通信接口,分別是USART0和USART1,它們能夠配置成異步UART模式或者同步SPI模式。

兩個(gè)USART接口具有相同的功能,通過PERCFG寄存器可以設(shè)置兩個(gè)USART接口對應(yīng)外部I/O引腳的映射關(guān)系:

	位置1:RX0 --- P0_2   TX0 --- P0_3               RX1 --- P0_5   TX1 --- P0_4
	位置2:RX0 --- P1_4   TX0 --- P1_5               RX1 --- P1_7   TX1 --- P1_6
復(fù)制代碼

對每個(gè)USART串口通信編程,本質(zhì)是設(shè)置相關(guān)的5個(gè)寄存器:

<1> UxCSR:   USARTx的控制和狀態(tài)寄存器。
<2> UxUCR:  USARTx的UART控制寄存器。
<3> UxGCR:  USARTx的通用控制寄存器。
<4> UxDBUF:USARTx的接收/發(fā)送數(shù)據(jù)緩沖寄存器。
<4> UxBAUD:USARTx的波特率控制寄存器。
復(fù)制代碼

在與PC機(jī)進(jìn)行串口通信的時(shí)候是,通常需要借助USB轉(zhuǎn)TTL芯片進(jìn)行電壓轉(zhuǎn)換。 所以,在學(xué)習(xí)串口編程之前,先認(rèn)識(shí)兩種電平:TTL電平和RS232電平

TTL電平:    邏輯0----小于0.8V     邏輯1----大于2.4V。
RS232電平:  邏輯0----5~15V        邏輯1---- -5~-15V。
復(fù)制代碼

串口通信過程中,速度的指標(biāo)由波特率表示。

常見的波特率設(shè)置表如下:

image.png

計(jì)算波特率的方法: CC2530的波特率由BAUD_E和BAUD_M共同決定:

image.png

二、原理圖數(shù)據(jù)手冊分析

image.pngimage.pngimage.pngimage.pngimage.png

三、串口配置代碼示例

3.1編寫串口初始化函數(shù),實(shí)現(xiàn)串口字符串發(fā)送 (CPU頻率在16MHZ下,波特率的為9600)


#include 
#include 

//定義LED燈的端口
#define LED1 P1_2
#define LED2 P1_3

//定義KEY按鍵的端口
#define KEY1 P1_0       //定義按鍵為P1_0口控制
#define KEY2 P1_1       //定義按鍵為P1_1口控制

/*
函數(shù)功能:LED燈IO口初始化
硬件連接:LED1-->P1_2 , LED2-->P1_3
*/
void LED_Init(void)
{
    P1DIR |=0x3<<2;  //配置P1_2、P1_3為輸出模式
    LED1 = 1;
    LED2 = 1;
}

/*
函數(shù)功能:按鍵IO口初始化
硬件連接:KEY1-->P1_0  KEY2-->P1_1  
*/
void KEY_Init(void)
{
    P1SEL&=~(0x3<<0); //配置P1_0,P1_1處于通用GPIO口模式
    P1DIR&=~(0x3<<0); //配置P1_0,P1_1為輸入模式
    P1INP|= 0x3<<0;   //上拉   
}


void delay10ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=193;c>0;c--)
        for(b=118;b>0;b--)
            for(a=2;a>0;a--);
}


/*
函數(shù)功能:按鍵掃描
返 回 值:按下的按鍵值
*/
unsigned char Key_Scan(void)
{
    static unsigned char stat=1;
    if((KEY1==0||KEY2==0)&&stat)
    {
       stat=0;
       delay10ms();
       if(KEY1==0)return 1;
       if(KEY2==0)return 2;
    }
    else
    {
        if(KEY1&&KEY2)stat=1;
    }
    return 0;
}

/*
函數(shù)功能:串口0初始化
*/
void Init_Uart0(void)
{
  PERCFG&=~(1<<0);  //串口0的引腳映射到位置1,即P0_2和P0_3
  P0SEL|=0x3<<2;   //將P0_2和P0_3端口設(shè)置成外設(shè)功能
  U0BAUD = 59;     //16MHz的系統(tǒng)時(shí)鐘產(chǎn)生9600BPS的波特率
  U0GCR&=~(0x1F<<0);//清空波特率指數(shù)
  U0GCR|=9<<0;      //配置波特率的指數(shù)值
  U0UCR |= 0x80;    //禁止流控,8位數(shù)據(jù),清除緩沖器
  U0CSR |= 0x3<<6;  //選擇UART模式,使能接收器
}

/*
函數(shù)功能:UART0發(fā)送字符串函數(shù)
*/
void UR0SendString(char *str,unsigned int len)
{
  int j;
  for(j=0;j;j++)>

3.2 編寫串口初始化函數(shù),實(shí)現(xiàn)串口字符串發(fā)送 (CPU頻率在16MHZ下,波特率為115200)


#include 
#include 

//定義LED燈的端口
#define LED1 P1_2
#define LED2 P1_3

//定義KEY按鍵的端口
#define KEY1 P1_0       //定義按鍵為P1_0口控制
#define KEY2 P1_1       //定義按鍵為P1_1口控制

/*
函數(shù)功能:LED燈IO口初始化
硬件連接:LED1-->P1_2 , LED2-->P1_3
*/
void LED_Init(void)
{
    P1DIR |=0x3<<2;  //配置P1_2、P1_3為輸出模式
    LED1 = 1;
    LED2 = 1;
}

/*
函數(shù)功能:按鍵IO口初始化
硬件連接:KEY1-->P1_0  KEY2-->P1_1  
*/
void KEY_Init(void)
{
    P1SEL&=~(0x3<<0); //配置P1_0,P1_1處于通用GPIO口模式
    P1DIR&=~(0x3<<0); //配置P1_0,P1_1為輸入模式
    P1INP|= 0x3<<0;   //上拉   
}


void delay10ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=193;c>0;c--)
        for(b=118;b>0;b--)
            for(a=2;a>0;a--);
}


/*
函數(shù)功能:按鍵掃描
返 回 值:按下的按鍵值
*/
unsigned char Key_Scan(void)
{
    static unsigned char stat=1;
    if((KEY1==0||KEY2==0)&&stat)
    {
       stat=0;
       delay10ms();
       if(KEY1==0)return 1;
       if(KEY2==0)return 2;
    }
    else
    {
        if(KEY1&&KEY2)stat=1;
    }
    return 0;
}

/*
函數(shù)功能:串口0初始化
*/
void Init_Uart0(void)
{
  PERCFG&=~(1<<0);  //串口0的引腳映射到位置1,即P0_2和P0_3
  P0SEL|=0x3<<2;   //將P0_2和P0_3端口設(shè)置成外設(shè)功能
  U0BAUD = 216;     //16MHz的系統(tǒng)時(shí)鐘產(chǎn)生115200BPS的波特率
  U0GCR&=~(0x1F<<0);//清空波特率指數(shù)
  U0GCR|=12<<0;      //16MHz的系統(tǒng)時(shí)鐘產(chǎn)生115200BPS的波特率
  U0UCR |= 0x80;    //禁止流控,8位數(shù)據(jù),清除緩沖器
  U0CSR |= 0x3<<6;  //選擇UART模式,使能接收器
}

/*
函數(shù)功能:UART0發(fā)送字符串函數(shù)
*/
void UR0SendString(char *str,unsigned int len)
{
  int j;
  for(j=0;j;j++)>

3.3 配置串口中斷接收數(shù)據(jù)

#include 
#include 

//定義LED燈的端口
#define LED1 P1_2
#define LED2 P1_3

//定義KEY按鍵的端口
#define KEY1 P1_0       //定義按鍵為P1_0口控制
#define KEY2 P1_1       //定義按鍵為P1_1口控制

unsigned char dataRecv;
unsigned char Flag = 0;

/*
函數(shù)功能:LED燈IO口初始化
硬件連接:LED1-->P1_2 , LED2-->P1_3
*/
void LED_Init(void)
{
    P1DIR |=0x3<<2;  //配置P1_2、P1_3為輸出模式
    LED1 = 1;
    LED2 = 1;
}

/*
函數(shù)功能:按鍵IO口初始化
硬件連接:KEY1-->P1_0  KEY2-->P1_1  
*/
void KEY_Init(void)
{
    P1SEL&=~(0x3<<0); //配置P1_0,P1_1處于通用GPIO口模式
    P1DIR&=~(0x3<<0); //配置P1_0,P1_1為輸入模式
    P1INP|= 0x3<<0;   //上拉   
}


void delay10ms(void)   //誤差 0us
{
    unsigned char a,b,c;
    for(c=193;c>0;c--)
        for(b=118;b>0;b--)
            for(a=2;a>0;a--);
}


/*
函數(shù)功能:按鍵掃描
返 回 值:按下的按鍵值
*/
unsigned char Key_Scan(void)
{
    static unsigned char stat=1;
    if((KEY1==0||KEY2==0)&&stat)
    {
       stat=0;
       delay10ms();
       if(KEY1==0)return 1;
       if(KEY2==0)return 2;
    }
    else
    {
        if(KEY1&&KEY2)stat=1;
    }
    return 0;
}

/*
函數(shù)功能:串口0初始化
*/
void Init_Uart0(void)
{
  PERCFG&=~(1<<0);  //串口0的引腳映射到位置1,即P0_2和P0_3
  P0SEL|=0x3<<2;   //將P0_2和P0_3端口設(shè)置成外設(shè)功能
  U0BAUD = 216;     //16MHz的系統(tǒng)時(shí)鐘產(chǎn)生115200BPS的波特率
  U0GCR&=~(0x1F<<0);//清空波特率指數(shù)
  U0GCR|=12<<0;      //16MHz的系統(tǒng)時(shí)鐘產(chǎn)生115200BPS的波特率
  U0UCR |= 0x80;    //禁止流控,8位數(shù)據(jù),清除緩沖器
  U0CSR |= 0x3<<6;  //選擇UART模式,使能接收器
  UTX0IF = 0;       //清除TX發(fā)送中斷標(biāo)志
  URX0IF = 0;       //清除RX接收中斷標(biāo)志
  URX0IE = 1;       //使能URAT0的接收中斷
  EA = 1;           //使能總中斷
}



/*
函數(shù)功能:UART0發(fā)送字符串函數(shù)
*/
void UR0SendString(char *str,unsigned int len)
{
  int j;
  for(j=0;j;j++)>



審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1535

    瀏覽量

    75886
  • 傳輸協(xié)議
    +關(guān)注

    關(guān)注

    0

    文章

    71

    瀏覽量

    11410
  • CC2530
    +關(guān)注

    關(guān)注

    19

    文章

    221

    瀏覽量

    57653
收藏 人收藏

    評論

    相關(guān)推薦

    CC2530 外部中斷配置步驟

    介紹CC2530 外部中斷配置步驟。
    的頭像 發(fā)表于 07-06 14:41 ?2617次閱讀
    <b class='flag-5'>CC2530</b> 外部中斷<b class='flag-5'>配置</b>步驟

    【技術(shù)精選】嵌入式STM32原創(chuàng)征文活動(dòng)精選文章

    CC2530(zigbee)入門開發(fā): 串口收發(fā)配置CC2530(
    發(fā)表于 07-27 18:26

    基于CC2530芯片_zigbee基礎(chǔ)實(shí)驗(yàn)

    zigbee基礎(chǔ)實(shí)驗(yàn),基于CC2530芯片
    發(fā)表于 12-11 10:48 ?48次下載

    cc2530芯片有哪些功能

    CC2530是專門針對IEEE 802.15.4和Zigbee應(yīng)用的單芯片解決方案,經(jīng)濟(jì)且低功耗。 CC2530有四種不同的版本:CC2530-F32 / 64 / 128 / 256
    發(fā)表于 11-08 11:05 ?2.3w次閱讀

    cc2530程序設(shè)計(jì)實(shí)例之CC2530 RF部分使用—實(shí)現(xiàn)點(diǎn)對點(diǎn)收發(fā)

    本文主要介紹了cc2530程序設(shè)計(jì)實(shí)例之CC2530 RF部分使用—實(shí)現(xiàn)點(diǎn)對點(diǎn)收發(fā),通過串口調(diào)試助手發(fā)送字節(jié)數(shù)據(jù)。例如通過串口向設(shè)備A發(fā)送H
    發(fā)表于 12-09 12:22 ?2.2w次閱讀
    <b class='flag-5'>cc2530</b>程序設(shè)計(jì)實(shí)例之<b class='flag-5'>CC2530</b> RF部分使用—實(shí)現(xiàn)點(diǎn)對點(diǎn)<b class='flag-5'>收發(fā)</b>

    基于CC2530ZigBee協(xié)調(diào)器節(jié)點(diǎn)設(shè)計(jì)

    本文給出了基于TI新一代芯片CC2530ZigBee協(xié)調(diào)器節(jié)點(diǎn)設(shè)計(jì)方法,該方法選用TICC2591作為射頻前端芯片。
    發(fā)表于 01-05 15:25 ?4.9w次閱讀
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>協(xié)調(diào)器節(jié)點(diǎn)設(shè)計(jì)

    CC2530芯片的基本特性和CC2530無線模塊的設(shè)計(jì)

    本文介紹了CC2530芯片的基本特性,論述了以CC2530芯片為核心的無線通信模塊的硬件設(shè)計(jì)和調(diào)試軟件設(shè)計(jì),在介紹設(shè)計(jì)規(guī)范和模塊結(jié)構(gòu)的基礎(chǔ)上,采用TI公司的CC2530芯片作為主控制芯片設(shè)計(jì)出具
    發(fā)表于 02-11 08:00 ?97次下載
    <b class='flag-5'>CC2530</b>芯片的基本特性和<b class='flag-5'>CC2530</b>無線模塊的設(shè)計(jì)

    ZigBee CC2530串口的數(shù)據(jù)接收處理機(jī)制詳細(xì)資料講解

    本文檔的主要內(nèi)容詳細(xì)介紹的是ZigBee CC2530串口的數(shù)據(jù)接收處理機(jī)制詳細(xì)資料講解。
    發(fā)表于 08-01 17:34 ?7次下載
    <b class='flag-5'>ZigBee</b> <b class='flag-5'>CC2530</b><b class='flag-5'>串口</b>的數(shù)據(jù)接收處理機(jī)制詳細(xì)資料講解

    如何使用ZigBee TI ZStack CC2530 2.5搭建開發(fā)環(huán)境

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何使用ZigBee TI ZStack CC2530 2.5搭建開發(fā)環(huán)境。
    發(fā)表于 05-10 18:14 ?25次下載
    如何使用<b class='flag-5'>ZigBee</b> TI ZStack <b class='flag-5'>CC2530</b> 2.5搭建<b class='flag-5'>開發(fā)</b>環(huán)境

    微雪電子ZIGBEE開發(fā)CC2530 Eval Kit簡介

    ZigBee CC2530 串口透傳 開發(fā)套件 物聯(lián)網(wǎng)套件 板載電池插槽 支持多種供電方式 引出所有IO 方便用戶功能擴(kuò)展 板載一個(gè)CP2102 方便調(diào)試下載 型號
    的頭像 發(fā)表于 01-09 11:05 ?1986次閱讀
    微雪電子<b class='flag-5'>ZIGBEE</b><b class='flag-5'>開發(fā)</b>板 <b class='flag-5'>CC2530</b> Eval Kit簡介

    微雪電子ZIGBEE開發(fā)CC2530 Eval Kit5簡介

    ZigBee CC2530 串口透傳 開發(fā)套件 XBEE 物聯(lián)網(wǎng)套件 直插接口兼容Xbee 支持自動(dòng)組網(wǎng) 支持板載PCB天線及IPEX外接天線 型號
    的頭像 發(fā)表于 01-10 09:01 ?1996次閱讀
    微雪電子<b class='flag-5'>ZIGBEE</b><b class='flag-5'>開發(fā)</b>板 <b class='flag-5'>CC2530</b> Eval Kit5簡介

    基于CC2530ZigBee通信網(wǎng)的應(yīng)用設(shè)計(jì).pdf

    基于CC2530ZigBee通信網(wǎng)的應(yīng)用設(shè)計(jì).pdf
    發(fā)表于 12-15 18:17 ?23次下載

    CC2530無線通信模塊使用串口通信參考方法

    CC2530無線通信模塊使用串口通信參考方法
    發(fā)表于 04-24 17:20 ?13次下載

    CC2530(zigbee)入門開發(fā): 安裝IAR開發(fā)環(huán)境

    CC2530本身是一個(gè)51單片機(jī)內(nèi)核,開發(fā)過51的搞起來非常容易,也就是多了一個(gè)無線射頻部分;如果不使用無線射頻功能,那么就和一個(gè)正常的51單片機(jī)一樣。要進(jìn)行CC2530的軟件開發(fā),需
    的頭像 發(fā)表于 05-28 13:38 ?1.1w次閱讀
    <b class='flag-5'>CC2530</b>(<b class='flag-5'>zigbee</b>)<b class='flag-5'>入門開發(fā)</b>: 安裝IAR<b class='flag-5'>開發(fā)</b>環(huán)境

    基于CC2530ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)

    電子發(fā)燒友網(wǎng)站提供《基于CC2530ZigBee通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì).pdf》資料免費(fèi)下載
    發(fā)表于 10-26 09:34 ?3次下載
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>通信網(wǎng)絡(luò)的應(yīng)用設(shè)計(jì)