精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

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

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

一、串口協議介紹

串口傳輸協議是嵌入式開發里比較常見的傳輸協議,開發階段用的最多的方式就是將MCU的調試信息打印到PC機串口終端顯示,方便調試錯誤。

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

并口傳輸協議:指數據的各位同時發送或接收,每個數據位使用單獨的一條導線。傳輸速度快、效率高,但需要的數據線較多,成本高。

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

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

兩個USART接口具有相同的功能,通過PERCFG寄存器可以設置兩個USART接口對應外部I/O引腳的映射關系:

	位置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
復制代碼

對每個USART串口通信編程,本質是設置相關的5個寄存器:

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

在與PC機進行串口通信的時候是,通常需要借助USB轉TTL芯片進行電壓轉換。 所以,在學習串口編程之前,先認識兩種電平:TTL電平和RS232電平

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

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

常見的波特率設置表如下:

image.png

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

image.png

二、原理圖數據手冊分析

image.pngimage.pngimage.pngimage.pngimage.png

三、串口配置代碼示例

3.1編寫串口初始化函數,實現串口字符串發送 (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口控制

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

/*
函數功能:按鍵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--);
}


/*
函數功能:按鍵掃描
返 回 值:按下的按鍵值
*/
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;
}

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

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

3.2 編寫串口初始化函數,實現串口字符串發送 (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口控制

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

/*
函數功能:按鍵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--);
}


/*
函數功能:按鍵掃描
返 回 值:按下的按鍵值
*/
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;
}

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

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

3.3 配置串口中斷接收數據

#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;

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

/*
函數功能:按鍵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--);
}


/*
函數功能:按鍵掃描
返 回 值:按下的按鍵值
*/
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;
}

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



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



審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 串口
    +關注

    關注

    14

    文章

    1543

    瀏覽量

    76199
  • 傳輸協議
    +關注

    關注

    0

    文章

    78

    瀏覽量

    11439
  • CC2530
    +關注

    關注

    19

    文章

    221

    瀏覽量

    57944
收藏 人收藏

    評論

    相關推薦

    CC2530 外部中斷配置步驟

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

    【技術精選】嵌入式STM32原創征文活動精選文章

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

    基于CC2530芯片_zigbee基礎實驗

    zigbee基礎實驗,基于CC2530芯片
    發表于 12-11 10:48 ?49次下載

    cc2530芯片有哪些功能

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

    cc2530程序設計實例之CC2530 RF部分使用—實現點對點收發

    本文主要介紹了cc2530程序設計實例之CC2530 RF部分使用—實現點對點收發,通過串口調試助手發送字節數據。例如通過串口向設備A發送H
    發表于 12-09 12:22 ?2.2w次閱讀
    <b class='flag-5'>cc2530</b>程序設計實例之<b class='flag-5'>CC2530</b> RF部分使用—實現點對點<b class='flag-5'>收發</b>

    基于CC2530ZigBee協調器節點設計

    本文給出了基于TI新一代芯片CC2530ZigBee協調器節點設計方法,該方法選用TICC2591作為射頻前端芯片。
    發表于 01-05 15:25 ?4.9w次閱讀
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>協調器節點設計

    CC2530芯片的基本特性和CC2530無線模塊的設計

    本文介紹了CC2530芯片的基本特性,論述了以CC2530芯片為核心的無線通信模塊的硬件設計和調試軟件設計,在介紹設計規范和模塊結構的基礎上,采用TI公司的CC2530芯片作為主控制芯片設計出具
    發表于 02-11 08:00 ?97次下載
    <b class='flag-5'>CC2530</b>芯片的基本特性和<b class='flag-5'>CC2530</b>無線模塊的設計

    ZigBee CC2530串口的數據接收處理機制詳細資料講解

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

    如何使用ZigBee TI ZStack CC2530 2.5搭建開發環境

    本文檔的主要內容詳細介紹的是如何使用ZigBee TI ZStack CC2530 2.5搭建開發環境。
    發表于 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'>開發</b>環境

    微雪電子ZIGBEE開發CC2530 Eval Kit簡介

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

    微雪電子ZIGBEE開發CC2530 Eval Kit5簡介

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

    基于CC2530ZigBee通信網的應用設計.pdf

    基于CC2530ZigBee通信網的應用設計.pdf
    發表于 12-15 18:17 ?23次下載

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

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

    CC2530(zigbee)入門開發: 安裝IAR開發環境

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

    基于CC2530ZigBee通信網絡的應用設計

    電子發燒友網站提供《基于CC2530ZigBee通信網絡的應用設計.pdf》資料免費下載
    發表于 10-26 09:34 ?3次下載
    基于<b class='flag-5'>CC2530</b>的<b class='flag-5'>ZigBee</b>通信網絡的應用設計