藍牙4.0BLE協議棧學習筆記(二)

在學習開發藍牙協議棧遇到的問題總結:
1.藍牙設備號BD_ADDR就是MAC地址,不同於uuid,uuid是服務號,作爲唯一標識符。
2.scanRspData數組是掃描迴應數據數組,用戶可以自定義設備名。advertData數組是廣播數據數組,主要是包含在廣播裏的數據信息。
3.主從機通信:
主從機通信具體流程就是 Scanning (搜索) -->Devices Found(發現從機) --> Connected (連接) --> discoverService(發現設備服務)–>讀寫characteristic(屬性)。協議棧中的SimpleBLEPeripheral是從機模式,主要是廣播信息,讓其他設備知道。SimpleBLECentral作爲主機,主要是與從機建立連接。讀寫characteristic可以理解爲GATT層的client向service發送數據,或者是service向client端發送數據。主機設備可以是client(客戶端),也可以是service(服務器),即主機向從機發送數據,從機主動向主機發送數據。
主機向從機讀寫數據調用GATT_WriteCharValue函數和GATT_ReadCharValue函數。如下:
if ( simpleBLEDoWrite )
{
// Do a write
attWriteReq_t req;

req.handle = simpleBLECharHdl+2;
req.len = 2;
req.value[0] = simpleBLECharVal;
req.sig = 0;
req.cmd = 0;
status = GATT_WriteCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );
if ( status == SUCCESS )
{
NPI_WriteTransport(“write ok\r\n”, 10);
simpleBLEProcedureInProgress = TRUE;
simpleBLEDoWrite = !simpleBLEDoWrite;
}

else
{
// Do a read
attReadReq_t req;
req.handle = simpleBLECharHdl+2;
status = GATT_ReadCharValue( simpleBLEConnHandle, &req, simpleBLETaskId );
}
從機和主機發送數據機制不一樣。主機用write命令,從機用Notification通知命令。從機向主機發送數據調用GATT_Notification函數,如:
static attHandleValueNoti_t Report ;
uint16 GetHandle;
noti.len = 1;
noti.value[0] = GetLen;
GATT_Notification(GetHandle, &Report, FALSE );
4.獲取電池電量:
battMeasure函數是通過ADC採集內部電壓獲得的電壓值,參考電壓是1.25v,最大測量電壓是3.75V。如果要獲取精度較高的值需要從外部輸入引腳接入穩定性較高的參考電壓,然後通過ADC採集轉換。
if ( events &SBP_ADV_RGB_EVT )
{
//P0_3=~P0_3;
advertData[6]= battMeasure();//獲取電池電量
GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData );
osal_start_timerEx(simpleBLEBroadcaster_TaskID,SBP_ADV_RGB_EVT,1000);
return ( events ^ SBP_ADV_RGB_EVT );
}
5.獲取RSSI值:
通過獲取信號強度RSSI值,可以測定信號源與接收點的距離,即標籤和基站的距離。從而用相關算法進行定位。注意的是由於受到脈衝干擾等會出現浮動值,需要進行濾波算法來獲得比較準確的採樣值。
case GAP_DEVICE_INFO_EVENT:
{
if( (pEvent->deviceInfo.pEvtData+7)==0xA7)
simpleBLEAddDeviceInfo( pEvent->deviceInfo.addr, pEvent->deviceInfo.addrType, pEvent->deviceInfo.rssi ,
(pEvent->deviceInfo.pEvtData+6));
}
break;

更多技術文章瀏覽請關注:

百家號:
https://author.baidu.com/home?context=%7B%22app_id%22%3A%221646108714303504%22%7D&wfr=bjh

頭條號:
https://www.toutiao.com/c/user/8115738721/#mid=1646025109246987

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