zigbee學習之串列埠通訊

2021-07-05 12:54:04 字數 3243 閱讀 3978

糾錯:u0dbuf傳送緩衝區,但是我在中文手冊手冊上沒有找的到這個暫存器,手冊上只有u0buf,u0buf編譯會出錯,

我去查了下英文手冊,才發現原來是翻譯人員翻譯錯誤了,只有u0dbuf,建議看英文手冊。

串列埠通訊:

p_2 接收端 p_3傳送端(微控制器和電腦的電頻不同,通過pl2303轉換,這是針對zigbee模組的

,想51微控制器可以通過232,485來轉換)。

ttl 輸出:低電平小於0.8,高電平大於2.4 。ttl 輸入:低電平小於1.2,高電平大於2

p_2和p_3可以復用到串列埠,也可以復用到spi

#include

void *memcpy(void *, const void *, size_t);//複製函式

void *memset(void *, int, size_t);//設定函式,注意是傳遞的指標,這些很基礎,是c語言庫裡面的函式介面,自己下個c語言完全手冊看 

int memcmp(const void *, const void *, size_t);

clkconcmd &= ~0x40;               //設定系統時鐘源為32mhz晶振

while(clkconsta & 0x40);          //等待晶振穩定為32m

clkconcmd &= ~0x47;               //設定系統主時鐘頻率為32mhz 

void uartsendstring(char *data, int len)//串列埠傳送函式data:傳送緩衝區   len:傳送長度

#pragma vector = urx0_vector 

__interrupt void uart0_isr(void) 

u0csr &= ~0x40;                    //禁止接收 傳送的時候必須把這個禁止了

u0csr |= 0x40;                     //允許接收 

用到的暫存器如下:

u0csr 暫存器

bit[7] usart模式選擇 0:spi模式 1:uart模式 

bit[6]  uart接收器使能 0: 禁用接收器 1: 接收器使能 

bit[5] sp 主或者從模式選擇 0: spi 主模式 1: spi 從模式 

bit[4] uart 幀錯誤狀態 0: 無幀錯誤檢測 1: 位元組收到不正確停止位級別 

bit[3] uart 奇偶錯誤狀態 0: 無奇偶錯誤檢測 1: 位元組收到奇偶錯誤 

bit[2]  接收位元組狀態 0: 沒有收到位元組 1: 準備好接收位元組 

bit[1] 傳送位元組狀態 0 位元組沒有被傳送 1 寫到資料快取暫存器的最後位元組被傳送 

bit[0] usart 傳送/接收主動狀態、在 spi 從模式該位等於從模式選擇 0: usart 空閒 1: 在傳送或者接收模式usart 忙碌 

p2dir (0xff) – 埠 2 方向和埠 0 外設優先順序控制

[7:6]外設優先順序控制。當 percfg 分配給一些外設 到 相同引腳的時候,這些位將確定優先順序。

詳細優先順序列表:

00:第1優先順序:usart0第2優先順序:usart1 第3優先順序:定時器 1

01:第1優先順序:usart1第2優先順序:usart0 第3優先順序:定時器 1

10:第1優先順序:定時器1通道0-1第2優先順序:usart1第3優先順序:usart0第4優先順序:定時器 1 通道 2 – 3

11 :第 1 優先順序:定時器1通道 2-3第2優先順序:usart0第3優先順序:usart1第4優先順序:定時器 1 通道 0 – 1

[5]  不使用

[4:0] p2 . 4 到 p2 . 0 的 i/o 方向 0 : 輸入 1 : 輸出

percfg (0xf1) – 外設控制

[7]  沒有使用

[6]定 時器1的i/o位置0 :備用 位置 1 1 :備用 位置 2

[5]定 時器3的i/o位置0 :備用 位置 1 1 :備用 位置 2

[4]定 時器4的i/o位置0 :備用 位置 1 1 :備用 位置 2

[3:2] 沒有使用

[1]usart1的i/o位置0備用位置1 1:備用位置2

[0]usart0的i/o位置0備用位置1 1:備用位置2

u0gcr (0xc5) – usart 0 通用控制

位 名稱 復位 描述

[7]spi 的時鐘極性0:負時鐘極性 1:正時鐘極性

[6]spi 時鐘相位0:當sck從cpol倒置到cpol時資料輸出到mosi,並且當sck從cpol倒置到 

cpol 時資料輸入抽樣到 miso 。1:當sck從cpol倒置到cpol時資料輸出到 mosi 並且當 

sck 從 cpo l倒置到 cpol 時資料輸入抽樣到 miso 。

[5] 傳送位順序 0 : lsb 先傳送 1 : msb 先傳送

[4:0] baud_e[4:0] 波特率指數值。 baud_e 和 baud_m 決定了 uart 波特率 和 spi 的主 sck 時

鐘頻率。

u0baud (0xc2) – usart 0 波特率控制

[7:0]baud_m[7:0]波特率小數部分的值。baud_e和baud_m決定了uart的波特率和spi的主sck時鐘頻率。

注意:baud_e[4:0]和baud_m[7:0]決定波特率

表 16-1 32 mhz 系統時鐘常用的波特率設定

波特率 ( b ps) uxbaud.baud_m uxgcr.baud_e  

誤差 ( % )

2400                59          6            

0.14

4800                59          7            

0.14

9600                59

8 0.14

14400              216

8 0.03

19200              59

9 0.14

28800

216

90.03

38400

59 10

0.14

57600

216

100.03

76800

59 11

0.14

115200

216

110.03

230400

216

120.03

ZigBee學習二 UART通訊

在使用串列埠時,只需掌握zigbee協議棧提供的串列埠操作相關的三個函式即可。uint8 haluartopen uint8 port,haluartcfg t config uint16 haluartread uint8 port,uint8 buf,uint16 len uint16 halu...

zigbee學習之zigbee應用框架

乙個zigbee 網路裝置之間通訊的關鍵是乙個關於profile 的協議。一種profile 的例子是家庭自動化。這個zigbee profile 允許一系列裝置型別交換控制資訊,以形成乙個無線家庭自動化應用。這些裝置的目的是交換已知資訊來實現控制,比如開關燈,給照明控制器傳送乙個照明感測測量,或如...

串列埠通訊學習

1,什麼是串列埠?2,什麼是rs 232?3,什麼是rs 422?4,什麼是rs 485?5,什麼是握手?1,什麼是串列埠?串列埠是計算機上一種非常通用裝置通訊的協議 不要與通用序列匯流排universal serial bus或者usb混淆 大多數計算機包含兩個基於rs232的串列埠。串列埠同時也...