藍牙4.0 傳統藍牙 低功耗 OSAL API接口 BLE系統架構 GPA 和 GATT

藍牙4.0

      使用最廣的短距離無線標準之一

      重新定義藍牙技術:低功耗

      全新的藍牙版本

  低功耗藍牙,高速藍牙,傳統藍牙

   logo

 

藍牙4.0與傳統藍牙的關係

通信方式

藍牙低功耗特性 

         高可靠性

          快速連接

         低成本,低功耗

          傳輸距離

           高安全性

OSAL

    BLE系統架構

  OSAL啓動流程

 

void osalInitTasks(void)
{
    uint8 taskID = 0;
    tasksEvents = (uint16 *)osal_mem_alloc(sizeof(uint16) * tasksCnt);
    osal_memset(tasksEvents, 0 , (sizeof(uint16) * tasksCnt));
    
    LL_Init(taskID ++);
    Hal_Init(taskID ++);
    HCI_Init(taskID ++);
}

 

 

  OSAL工作原理

 

事件表和函數表

 

OSAL層API接口

       消息管理,任務同步,時間管理,中斷管理,任務管理,內存管理,電源管理,非易失性內存管理

 

       消息管理 API

/*
 * 函數原型 uint8 *osal_msg_allocate(uint16 len)
 * 功能描述 爲消息分配緩存空間
 */
osal_msg_allocate();

/*
 * 函數原型 uint8 osal_msg_deallocate(uint8 *msg_ptr)
 * 功能描述 釋放消息的緩存空間
 */
osal_msg_deallocate();

/*
 * 函數原型 uint8 osal_msg_send(uint8 des tination_task, uint8 *msg_ptr)
 * 功能描述 一個任務發送消息的消息隊列
 */
osal_msg_send();

/*
 * 函數原型 uint8 *osal_msg_receive(uint8 task_id)
 * 功能描述 一個任務從消息隊列接收屬於自己的消息
 */
osal_msg_receive();

      任務同步 API

/*
 * 函數原型 uint8 osal_set_event(uint8 task_id,uint16 event_flag)
 * 功能描述 運行一個任務設置某一事件
 */
osal_set_event();

      時間管理 API

/*
 * 函數原型 uint8 osal_start_timerEx(uint8 task_id,uint16 event_id,uint16 timeout_value)
 * 功能描述 設置個定時時間,定時時間到後,相應的事件被設置
 */
osal_start_timerEx();

/*
 * 函數原型 uint8 osal_stop_timerEx(uint8 task_id,uint16 event_id)
 * 功能描述 停止一級啓動的定時器
 */
osal_stop_timerEx();

      任務管理API

/*
 * 函數原型 uint8 osal_init_system(void)
 * 功能描述 初始化 OSAL, 該函數是第一個被調用的OSAL函數
 */
osal_init_system();

/*
 * 函數原型
 * 功能描述 該函數包含一個無限循環,它將查詢所有的任務事件,如果有事件發生,則執行相應的操作
 */
osal_start_system();

         內存管理 API

/*
 * 函數原型 void *osal_mem_alloc(uint16 size);
 * 功能描述 在堆上分配指定大小的緩衝區
 */
osal_mem_alloc();

/*
 * 函數原型 void osal_mem_free(void *ptr)
 * 功能描述 釋放使用 osal_mem_allc() 分配的緩衝區
 */
osal_mem_free();

         非易失性閃存管理

/*
 * 函數原型 byte osal_nv_item_init(uint16 id, uint16 len, void *buf);
 * 功能描述 初始化 NV 條目,該函數檢查是否存在 NV 條目,如果不存在,將創建並初始化該條目
 *          如果條目存在,每次調用osal_nv_read(),write() 進行讀寫之前,都要先調用該函數
 */
osal_nv_item_init();

/*
 * 函數原型  byte osal_nv_read(uint16 id, uint16 offset,uint16, void *buf);
 * 功能描述 從 NV 條目中讀取數據,可以讀取整個條目的數據,也可以讀取部分數據
 */
osal_nv_read();
/*
 * 函數原型 byte osal_nv_write(uint16 id,uint16 offset, uint 16len,void *buf);
 * 功能描述 寫數據到 NV 條目
 */
osal_nv_write();

       BLE協議分層

     

 

 

 

 

 

 GPA 和 GATT

       BLE核心規格

 

SimpleBLEPeripheral 示例

     強制的GAP服務                      包含設備信息和訪問信息

     強制的GATT服務                    包含GATT服務器的信息

     SimpleGATTProfile服務         示例配置文件

屬性表

    句柄      屬性在表中的地址,每個屬性有唯一的句柄

    類型      數據所代表的含義 (universal unique identifier)

    權限      GATT客戶端設備對屬性的訪問權限

GATT 服務器和客戶端通信子進程

     讀特徵值   使用特徵值的UUID讀  讀多個特徵值   讀特徵描述符  UUID發現特徵值  寫特徵值  寫特徵描述符  特徵值通知

GATT屬性列表類型

      GATT_PRIMMARY_SERVICE_UUID   新服務的開始和服務類型

      GATT_CHARACTER_UUID                   特徵聲明

     GATT_CLIENT_CHAR_CFG_UUID      特徵描述符

     GATT_CHAR_USER_DESC_UUID      特徵描述符

基於GATT的藍牙配置文件和服務

GAP的角色

     廣播者  觀察者   外部設備   集中器

GAP連接請求參數

    連接時間間隔  從機延時  監視超時

 

 

 

 

 

 

 

發佈了52 篇原創文章 · 獲贊 7 · 訪問量 8585
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章