找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 11620|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

zigbee串口波特率的設(shè)置方法

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:104287 發(fā)表于 2016-1-31 02:24 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 51黑fan 于 2016-1-31 02:25 編輯

D4~D0為波特率設(shè)置:

波特率
指數(shù)值
小數(shù)部分
2400
6
59
4800
7
59
9600
8
59
14400
8
216
19200
9
59
28800
9
216
38400
10
59
57600
10
216
76800
11
59
115200
11
216
230400
12
216



本次實(shí)驗將會學(xué)習(xí)如果使用串口實(shí)現(xiàn)與PC機(jī)的通訊。試驗中需要PC機(jī)與開發(fā)板之間使用USB-RS232線連接。

本次實(shí)驗所學(xué)習(xí)到的寄存器:

CLKCONCMD:時鐘頻率控制寄存器。
D7
D6
D5~D3
D2~D0
32KHZ時間振蕩器選擇
系統(tǒng)時鐘選擇
定時器輸出標(biāo)記
系統(tǒng)主時鐘選擇
D7位為32KHZ時間振蕩器選擇,,0為32KRC震蕩,1為32K晶振。默認(rèn)為1。
D6位為系統(tǒng)時鐘選擇。0為32M晶振,1為16M RC震蕩。當(dāng)D7位為0時D6必須為1。
D5~D3為定時器輸出標(biāo)記。000為32MHZ,001為16MHZ,010為8MHZ,011為4MHZ,100為2MHZ,101為 1MHZ,110為500KHZ,111為250KHZ。默認(rèn)為001。需要注意的是:當(dāng)D6為1時,定時器頻率最高可采用頻率為16MHZ。
D2~D0:系統(tǒng)主時鐘選擇:000為32MHZ,001為16MHZ,010為8MHZ,011為4MHZ,100為2MHZ,101為1MHZ,110為500KHZ,111為250KHZ。當(dāng)D6為1時,系統(tǒng)主時鐘最高可采用頻率為16MHZ。

CLKCONSTA:時間頻率狀態(tài)寄存器。

D7
D6
D5~D3
D2~D0
當(dāng)前32KHZ時間振蕩器
當(dāng)前系統(tǒng)時鐘
當(dāng)前定時器輸出標(biāo)記
當(dāng)前系統(tǒng)主時鐘
D7位為當(dāng)前32KHZ時間振蕩器頻率。0為32KRC震蕩,1為32K晶振。
D6位為當(dāng)前系統(tǒng)時鐘選擇。0為32M晶振,1為16M RC震蕩。
D5~D3為當(dāng)前定時器輸出標(biāo)記。000為32MHZ,001為16MHZ,010為8MHZ,011為4MHZ,100為2MHZ,101為 1MHZ,110為500KHZ,111為250KHZ。
D2~D0為當(dāng)前系統(tǒng)主時鐘。000為32MHZ,001為16MHZ,010為8MHZ,011為4MHZ,100為2MHZ,101為1MHZ,110為500KHZ,111為250KHZ。

U0CSR:USART0控制與狀態(tài);
D7
D6
D5
D4
D3
D2
D1
D0
模式選擇
接收器使能
SPI主/從模式
幀錯誤狀態(tài)
奇偶錯誤狀態(tài)
接受狀態(tài)
傳送狀態(tài)
收發(fā)主動狀態(tài)
D7為工作模式選擇,0為SPI模式,1為USART模式
D6為UART接收器使能,0為禁用接收器,1為接收器使能。
D5為SPI主/從模式選擇,0為SPI主模式,1為SPI從模式。
D4為幀錯誤檢測狀態(tài),0為無錯誤,1為出現(xiàn)出錯。
D3為奇偶錯誤檢測,0為無錯誤出現(xiàn),1為出現(xiàn)奇偶校驗錯誤。
D2為字節(jié)接收狀態(tài),0為沒有收到字節(jié),1為準(zhǔn)備好接收字節(jié)。
D1為字節(jié)傳送狀態(tài),0為字節(jié)沒有被傳送,1為寫到數(shù)據(jù)緩沖區(qū)的字節(jié)已經(jīng)被發(fā)送。
D0為USART接收/傳送主動狀態(tài),0為USART空閑,1為USART忙碌。

U0GCR:USART0通用控制寄存器;
D7
D6
D5
D4~D0
SPI時鐘極性
SPI時鐘相位
傳送位順序
波特率指數(shù)值
D7為SPI時鐘極性:0為負(fù)時鐘極性,1為正時鐘極性;
D6為SPI時鐘相位:
D5為傳送為順序:0為最低有效位先傳送,1為最高有效位先傳送。
D4~D0為波特率設(shè)置:
波特率
指數(shù)值
小數(shù)部分
2400
6
59
4800
7
59
9600
8
59
14400
8
216
19200
9
59
28800
9
216
38400
10
59
57600
10
216
76800
11
59
115200
11
216
230400
12
216

U0BAUD:波特率控制小數(shù)部分。(取值參考上表)


源代碼:

  1. #include <ioCC2530.h>
  2. #include <string.h>

  3. #define  uint  unsigned int
  4. #define  uchar unsigned char

  5. //定義控制燈的端口
  6. #define RLED  P1_0
  7. #define GLED  P1_1
  8. //函數(shù)聲明
  9. void Delay(uint);
  10. void initUARTSEND(void);
  11. void UartTX_Send_String(char *Data,int len);

  12. char Txdata[25]="FEIBIT  Electronics";

  13. void Delay(uint n)
  14. {
  15.     uint i;
  16.     for(i=0;i<n;i++);
  17.     for(i=0;i<n;i++);
  18.     for(i=0;i<n;i++);
  19.     for(i=0;i<n;i++);
  20.     for(i=0;i<n;i++);
  21. }

  22. void initUARTSEND(void)
  23. {

  24.     CLKCONCMD &= ~0x40;                          //設(shè)置系統(tǒng)時鐘源為32MHZ晶振
  25.     while(CLKCONSTA & 0x40);                     //等待晶振穩(wěn)定
  26.     CLKCONCMD &= ~0x47;                          //設(shè)置系統(tǒng)主時鐘頻率為32MHZ
  27.    
  28.   
  29.     PERCFG = 0x00;                //位置1 P0口
  30.     P0SEL = 0x3c;                //P0_2,P0_3,P0_4,P0_5用作串口
  31.     P2DIR &= ~0XC0;                             //P0優(yōu)先作為UART0

  32.     U0CSR |= 0x80;                //UART方式
  33.     U0GCR |= 9;                       
  34.     U0BAUD |= 59;                //波特率設(shè)為19200
  35.     UTX0IF = 0;                                 //UART0 TX中斷標(biāo)志初始置位0
  36. }

  37. void UartTX_Send_String(char *Data,int len)
  38. {
  39.   int j;
  40.   for(j=0;j<len;j++)
  41.   {
  42.     U0DBUF = *Data++;
  43.     while(UTX0IF == 0);
  44.     UTX0IF = 0;
  45.   }
  46. }

  47. void main(void)
  48. {   
  49.     uchar i;
  50.            P1DIR = 0x03;                 //P1控制LED
  51.     RLED = 1;
  52.     GLED = 0;                //關(guān)LED
  53.     initUARTSEND();
  54.     UartTX_Send_String(Txdata,25);            //FEIBIT Electronics
  55.         for(i=0;i<30;i++)Txdata[i]=' ';
  56.         strcpy(Txdata," www.torrancerestoration.com ");       //將UART0 TX test賦給Txdata;
  57.     while(1)
  58.     {
  59.            UartTX_Send_String(Txdata,sizeof(" www.torrancerestoration.com ")); //串口發(fā)送數(shù)據(jù)
  60.             Delay(50000);                                                       //延時
  61.             GLED=!GLED;                                           //標(biāo)志發(fā)送狀態(tài)
  62.             Delay(50000);
  63.             Delay(50000);
  64.     }
  65. }
復(fù)制代碼




實(shí)驗總結(jié):
波特率的設(shè)置方法:

波特率由U0GCR中的低5位和U0BAUD決定,例如:
U0GCR |= 9;               
U0BAUD |= 59;

以上代碼將波特率設(shè)為19200。


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩

相關(guān)帖子

回復(fù)

使用道具 舉報

沙發(fā)
ID:145805 發(fā)表于 2017-11-21 21:40 | 只看該作者
我下了proteus8.6,沒看到stm32的芯片
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表