一、串行
1、串行接口:
數據一位一位順序發送,通信線路簡單,適用於遠距離通信,傳送速度較慢。
2、串行通訊:
數據位傳送,按位順序進行
二、串口使用步驟
1、串口初始化
2、註冊串口任務
3、串口發送
第一步:串口初始化
配置串口號、波特率、校驗位、數據位、停止位等。在HAL層的hal_uart.c 文件,包含了串口初始化、發送、接收函數,我們修改相關配置、調用相應的接口函數就可使用串口。
然後在MT_UART.C文件的MT_Uartinit()函數中設置串口參數
void MT_Uartinit()
{
halUARTCfg_t uartConfig;
// 初始化應用程序ID
App_TaskID = 0;
// UART 配置
uartConfig.configured = TRUE;
/*
配置波特率
#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_38400
默認的波特率是38400bps,現在我們修改成115200bps,修改如下:
#define MT_UART_DEFAULT_BAUDRATE HAL_UART_BR_115200
*/
uartConfig.baudRate = MT_UART_DEFAULT_BAUDRATE;
/*
配置流控
進入定義可以看到
#define MT_UART_DEFAULT_OVERFLOW TRUE
默認是打開串口流控的,如果你是隻連了TX/RX 2根線的方式務必關流控。
注意:2根線的通訊連接一定要關流控,不然是永遠收發不了信息的。
#define MT_UART_DEFAULT_OVERFLOW FALSE
*/
uartConfig.flowControl = MT_UART_DEFAULT_OVERFLOW;
uartConfig.flowControlThreshold = MT_UART_DEFAULT_THRESHOLD;
uartConfig.rx.maxBufSize = MT_UART_DEFAULT_MAX_RX_BUFF;
uartConfig.tx.maxBufSize = MT_UART_DEFAULT_MAX_TX_BUFF;
uartConfig.idleTimeout = MT_UART_DEFAULT_IDLE_TIMEOUT;
uartConfig.intEnable = TRUE;
/*預編譯,根據預先定義的ZTOOL或ZAPP選擇不同數據處理函數。後面的P1和P2則是串口0和串口1.*/
#if defined (ZTOOL_P1) || defined (ZTOOL_P2)
uartConfig.callBackFunc = MT_UartProcessZToolData;
#elif defined (ZAPP_P1) || defined (ZAPP_P2)
uartConfig.callBackFunc = MT_UartProcessZAppData;
#else
uartConfig.callBackFunc = NULL;
#endif
// 啓動 UART
#if defined (MT_UART_DEFAULT_PORT)
HalUARTOpen (MT_UART_DEFAULT_PORT, &uartConfig);
#else
//靜默IAR編譯器警告
(void)uartConfig;
#endif
// Zapp初始化
#if defined (ZAPP_P1) || defined (ZAPP_P2)
. // Zapp可以使用的默認最大字節數
MT_UartMaxZAppBufLen = 1;
MT_UartZAppRxStatus = MT_UART_ZAPP_RX_READY;
#endif
}
第二步:註冊串口任務
在SampleApp_Init();剛添加的串口初始化語句下面加入語句:MT_UartRegisterTaskID(task_id); //註冊串口任務
第三步:串口發送
增加串口發送代碼
HalUARTWrite(0,“UartInit OK\n”,sizeof(“UartInit OK\n”)); //串口發送
三、ZigBee術語
1、協調器:(coordinator)
每個 zigbee 網絡只允許有一個 zigbee 的協調器,協調器首先選擇一個信道和網絡標識(PANID),然後開始這個網絡.因爲協調器是整個網絡的開始,他具有網絡的最高權限,是整個網絡的維護者,還可以保持間接尋址用的表格綁定,同時還可以設計安全中心和執行其他動作,保持網絡其他設備的通信。
2、路由器:(router)
路由器是一種支持關聯的設備,能夠實現其他節點的消息轉發功能。Zigbee 的樹形網絡可以有多個 zigbee 路由器設備,zigbee 的星型網絡不支持 zigbee 的路由器設備。
3、終端:(end)
Zigbee 終端節點是具體執行的數據採集傳輸的設備,他不能轉發其他節點的消息。
4、屬性
屬性 Attribute 是一個反映物理數量或狀態的數據值,比如開關值(On/Off) ,溫度值、百分比等。
5、羣集
羣集 Cluster 是包含一個或多個屬性(attribute)的羣組。簡單的說,羣集就是屬性的集合。每個羣集都被分配一個唯一的羣集 ID 且每個羣集最多有 65536 個屬性。
6、設備描述
設備描述 Device Description 是指一個大型目標應用的一部分,包括一個或多個羣集,並且指定羣集是輸入還是輸出。
7、端點
端點 EndPoint 是協議棧應用層的入口,也可以理解應用對象(Application Object)存在的地方,它是爲實現一個設備描述而定義的一組羣集。每個 ZigBee 設備可以最多支持 240這樣的端點,這也意味着在每個設備上可以定 義 240 個應用對象。端點 0 被保留用於與 ZDO接口而端點 255 被保留用於廣播,端點 241-254 則被保留用於將來做擴展使用。
8、配置文件
配置文件 Profile 可以理解爲共同促成交互式應用的多個設備描述項的集合。ZigBee 聯盟已經定義了部分標準的配置文件,比如遠程控制開關配置文件和光傳感器配置文件等。任何遵循某一標準配置文件的節點都可以與實現相同配置文 件的節點進行互操作。用戶也可以創建自己的配置文件然後遞交 ZigBee 聯盟測試、審覈批准。配置文件是對邏輯設備及其接口描述的集合,是面向某個應用類別的公約、準則。設備描述符是爲分佈應用提供的描述項,多種描述項共同組成描述集合 Profile。定義 Profile 的目的就是使得不同廠商生產的 ZigBee 設備能夠實現互操作。
9、節點
節點 Node 也可以理解爲一個容器,包含一組 ZigBee 設備,分享一個無線信道。每個節點有且只有一個無線信道使用。
10、綁定(Binding)
ZigBee 定義了一個稱爲端點綁定的特殊過程。綁定即在源節點的某個端點( EndPoint)和目標節點的某個端點之間創建一條邏輯鏈路。綁定可以發生在兩個或多個設備之間。協調器節點維護一個基本上包括兩個或多個端點之間的邏輯鏈路的綁定表。在綁定表中,包含如下信息,源節點和目的節點的 IEEE 地址、Endpoint 號以及 ClusterID對於可以建立綁定關係的兩個節點,它們的 Cluster 的屬性必須一個選擇“輸入”,另一個選擇“輸出”,而且 ClusterID 值相等,只有這樣,它們彼此才能建立綁定。如果目標設備的擴展地 址是已知的,則調用 zb_BindDeviceRequest( )函數可以創建一個綁定條目。
11、.尋址(Addressing)
在 ZigBee 網絡中,使用兩種地址:
一種是 64 位的 IEEE Address,也叫物理地址,64 位地址在所有 ZigBee 設備之中是唯一,其中包含一個由 IEEE 分配、也是全球唯一的 24 位製造商特定組織標識符 OUI(Organizationally Unique Identifier);
另一種是 16 位的 NWK Address 即網絡地址,當設備加入 ZigBee 網絡時,從允許其加入的父設備上獲取 16 位網絡地址。該地址在 ZigBee 網絡中唯一,用於數據傳輸和數據包路由。在 Zigbee 中,數據包可以單點傳送(unicast),多點傳送(multicast)或者廣播傳送(broadcast),所以必須有地址模 式參數。一個單點傳送數據包只發送給一個設備,多點傳送數據包則要傳送給一組設備,而廣播數據包則要發送給整個網絡的所有節點。當應用程序需要將數據包發 送給網絡上的一組設備時,還可以使用組尋址方式(Group Addressing)。