吴忠躺衫网络科技有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

【RTT大賽作品連載】基于AB32VG1 sdk BLE例程

RT-thread ? 來源:RT-thread ? 作者:RT-thread ? 2021-12-06 09:07 ? 次閱讀

【AB32VG1開發】基于RT-Thread 中科藍訊AB32VG1 bluetrum_sdk BLE開發例程講解


中科藍訊最近出的SDK(bluetrum_sdk) V1.1.0,支持了BLE開發,目前官方還沒有正式文檔,我來摸索一下吧


安裝最近SDK

操作步驟詳細請參閱: 基于RT-Thread的AB32VG1開發環境搭建

poYBAGGuFZ6ALDtCAAK3VpadgEM069.pngSDK

選擇中科藍訊AB32VG1開發板最新SDK(bluetrum_sdk) 1.1.0安裝

建RT-Thread工程

操作步驟詳細請參閱: 基于RT-Thread的AB32VG1開發環境搭建
注意選擇最新SDK 1.1.0

poYBAGGuFc6AeL5oAANZyV66ddU436.pngAB32

配置工程

操作步驟詳細請參閱: 基于RT-Thread的AB32VG1開發環境搭建
配置詳情如下:

poYBAGGuFeuAQoGdAAF43GqPo6Q408.pngAB32 config

開啟:

宏: [SOC_AB32VG1]
宏: [PKG_USING_BLUETRUM_NIMBLE]
宏: [BSP_USING_TIM](這后面加的,因為出現這個了定時報告數據時運行錯誤:(rt_object_get_type(&timer->parent) == RT_Object_Class_Timer) assertion failed at function:rt_timer_stop, line number:502 )我以為加上TIMER模塊,就加了,但是還是沒解決。

配置后,保存會出現錯誤:local variable 'get_git_root' referenced before assignment Operation failed.這里不管它,編譯時看看具體是哪里同, 我們再修改。

poYBAGGuFjmAJisiAAEOci3nUzI499.png

修改代碼

首先熟悉一下BLE_SDK代碼目錄:

pYYBAGGuFkyAVHt4AADSzV2P1zk270.png

修改mac_addr

工程目錄下:

packages\bluetrum_sdk-latest\bluetrum_nimble\porting\npl\rtthread\src\ble_platform.c
pYYBAGGuFqCAdcXqAAI-ImxrZGE127.png

我修改如下:

void bt_get_local_bd_addr(uint8_t *addr)
{
    uint8_t addr_table[6] = {0x41, 0x42, 0x18, 0x58, 0x68, 0x88};  //mac_addr是6bytes, SDK代碼里只寫了5個數據
    memcpy(addr, addr_table, 6);
}

注意:mac_addr是6bytes, SDK代碼里只寫了5個數據,這是疏漏還是有意為之

修改BLE_name(名字)

工程目錄下:

\packages\bluetrum_sdk-latest\bluetrum_nimble\apps\blehr\src\blehr.c
pYYBAGGuFs6AetRpAAEfpKAgvm8475.png


我修改如下:

static const char *device_name = "Silicon_blehr_sensor";

注意:不能是中文,中文會找不到設備    

修改服務及設備信息

工程目錄下:
packages\bluetrum_sdk-latest\bluetrum_nimble\appsblehrsrc

pYYBAGGuFv-Ab9HBAANKkyju3eg538.png


我修改如下:

static const char *manuf_name = "谷動谷力";  //Sunshine Silicon";可以中文,但長度限制了,沒有找到哪里限制了
static const char *model_num = "SunSilicon HR Sensor";

static const struct ble_gatt_svc_def gatt_svr_svcs[] = {
    {
        /* Service: Heart-rate */
        .type = BLE_GATT_SVC_TYPE_PRIMARY,
        .uuid = BLE_UUID16_DECLARE(GATT_HRS_UUID),
        .characteristics = (struct ble_gatt_chr_def[]) { {
            /* Characteristic: Heart-rate measurement */
            .uuid = BLE_UUID16_DECLARE(GATT_HRS_MEASUREMENT_UUID),
            .access_cb = gatt_svr_chr_access_heart_rate,
            .val_handle = &hrs_hrm_handle,
            .flags = BLE_GATT_CHR_F_NOTIFY,
        }, {
            /* Characteristic: Body sensor location */
            .uuid = BLE_UUID16_DECLARE(GATT_HRS_BODY_SENSOR_LOC_UUID),
            .access_cb = gatt_svr_chr_access_heart_rate,
            .flags = BLE_GATT_CHR_F_READ,
        }, {
            0, /* No more characteristics in this service */
        }, }
    },

    {
        /* Service: Device Information */
        .type = BLE_GATT_SVC_TYPE_PRIMARY,
        .uuid = BLE_UUID16_DECLARE(GATT_DEVICE_INFO_UUID),
        .characteristics = (struct ble_gatt_chr_def[]) { {
            /* Characteristic: * Manufacturer name */
            .uuid = BLE_UUID16_DECLARE(GATT_MANUFACTURER_NAME_UUID),
            .access_cb = gatt_svr_chr_access_device_info,
            .flags = BLE_GATT_CHR_F_READ,
        }, {
            /* Characteristic: Model number string */
            .uuid = BLE_UUID16_DECLARE(GATT_MODEL_NUMBER_UUID),
            .access_cb = gatt_svr_chr_access_device_info,
            .flags = BLE_GATT_CHR_F_READ,
        }, {
            0, /* No more characteristics in this service */
        }, }
    },

        {
            0, /* No more services */
        },
};

修改服務屬性

AB32VG1_ble_Svr.png

這里服務,我們沒做修改,保存默認。

編譯

編譯工程:Ctrl+B,會出錯, 如下:

In file included from :
E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive
    8 | #define
      |         ^
In file included from :
E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive
    8 | #define
      |         ^
make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/device.o] Error 1
make: *** Waiting for unfinished jobs....
In file included from :
E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive
    8 | #define
      |         ^
In file included from :
E:\RT-ThreadWorkspace\AB32_BLE_Demo\rtconfig_preinc.h:8:9: error: no macro name given in #define directive
    8 | #define
      |         ^
make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/clock.o] Error 1
make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/components.o] Error 1
make: *** [rt-thread/src/subdir.mk:57: rt-thread/src/idle.o] Error 1
"make -j4 all2" terminated with exit code 2. Build might be incomplete.

14:29:13 Build Failed. 9 errors, 0 warnings. (took 1s.464ms)
pYYBAGGuF3OAaQS9AALBp2Wi9RE432.png

雙擊出錯提示,定位到出錯的地方,#define后面是空的,刪除這個#define即可

標題重新編譯

保存修改內容: ctrl+s, 編譯:ctrl+b

poYBAGGuF0iAXIJQAAPtmZoE0KE579.png


編譯成功

調試

將編譯好的,目標文件:rtthread.elf,燒錄到中科藍訊AB32VG1 BLE開發板,操作步驟詳細請參閱: 基于RT-Thread的AB32VG1開發環境搭建

pYYBAGGuG_WAN1A_AAIYWxLBi1I930.png

手機打開藍牙

poYBAGGuHA-AG-9yAAI7v2ez_2A292.png

手機打開藍牙BLE調試助手

AB32_BLE_debug_phone_openBLEdbg.JPG

連接BLE設備

掃描到與我們代碼設置一樣BLE設備名字,說明代碼修改正確.連接與我們代碼設置一樣BLE設備名字.

AB32_BLE_debug_phone_conect_bleg.JPG

設備相關數據服務列表

AB32_BLE_debug_blereportsrv.JPG

獲取BLE設備數據--制造商信息

AB32_BLE_debug_blerd.JPG


點"讀取"即可,這與我們代碼設置一樣,說明代碼修改正確

AB32_BLE_debug_blereport.JPG

獲取BLE設備數據--設備型號信息

點"讀取"即可,這與我們代碼設置一樣,說明代碼修改正確

AB32_BLE_debug_blerdnum.JPG

讀取心率相關數據

AB32_BLE_debug_blerdhr01.JPG

心率數據自動數據通知上報

心律數據是模擬的,開發板硬件上沒有

AB32_BLE_debug_blerdhr01.JPG


AB32_BLE_debug_blerdhr02.JPG


AB32VG1_debug_ble_err.png


AB32VG1_debug_ble_err02.png

這個數據點代碼有BUG,不定什么時候,報錯,每次錯誤還不一樣, 這個還得官方分析一下.

遺留問題

1) 定時上報數據點代碼有BUG,不定什么時候,報錯,每次錯誤還不一樣, 這個還得官方分析一下.
2)現在只有Read(BLE上報數據)功能,沒有write(APP->BLE下達數據)功能,這個后面移植一下
3)連接現有通用平臺功能, 如微信涂鴉天貓精靈.....等等
4)mac_addr是6bytes, 代碼里只寫了5個數據,這是疏漏還是有意為之
5)制造名長度限制了,沒有找到哪里限制了,是不是上報告數據長度限制了,在代碼哪里呢

上面遺留問題,還請專家幫忙解決一下,我能力有限.

總結

用RT-Thread基于中科藍訊AB32VG1 BLE開發快捷方便.做一個只要官方有的驅動及軟件,相關方便快捷,沒有話自己移植的話,還是比較復雜.

轉載注明出處:https://mp.weixin.qq.com/s/72jVJvEGVFwApsv_hdhxfA

更多精彩,歡迎關注微信公眾號:

pYYBAGGrfV-AdBMjAA_nxj6W7zU440.png

谷動谷力

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • BLE
    BLE
    +關注

    關注

    12

    文章

    670

    瀏覽量

    59598
  • 開發環境
    +關注

    關注

    1

    文章

    230

    瀏覽量

    16699
  • SDK
    SDK
    +關注

    關注

    3

    文章

    1045

    瀏覽量

    46275
  • RT-Thread
    +關注

    關注

    31

    文章

    1305

    瀏覽量

    40388
  • 中科藍訊
    +關注

    關注

    9

    文章

    57

    瀏覽量

    9933
收藏 人收藏

    評論

    相關推薦

    景銳CA51F1_SDK開發資料免費下載

    景銳CA51F1_SDK開發資料,包含常用例程和觸摸SDK
    發表于 01-22 17:24 ?0次下載

    mXT1296M1T-AT/mXT1296M1T-AB 1.1數據手冊

    電子發燒友網站提供《mXT1296M1T-AT/mXT1296M1T-AB 1.1數據手冊.pdf》資料免費下載
    發表于 01-22 16:11 ?1次下載
    mXT1296M<b class='flag-5'>1</b>T-AT/mXT1296M<b class='flag-5'>1T-AB</b> 1.1數據手冊

    DS8007有相關的單片機例程或者sdk驅動程序嗎?求分享

    請問DS8007有相關的單片機例程或者sdk驅動程序嗎?
    發表于 12-19 07:13

    【AI技術支持】ESP32-S3模組EspBleOTA搜索不到ble_ota例程的藍牙問題處理

    esp-iot-solutionexamples/bluetooth/ble_ota例程的時候,編譯燒錄完成后,在EspBleOTAApp中無法找到藍牙設備,用NrfConnectApp是可以搜索到該藍牙設
    的頭像 發表于 12-13 18:06 ?415次閱讀
    【AI技術支持】ESP32-S3模組EspBleOTA搜索不到<b class='flag-5'>ble</b>_ota<b class='flag-5'>例程</b>的藍牙問題處理

    TINA-TI仿真,為什么VF1VG1的波形不一樣?

    為什么VF1VG1的波形不一樣? 還有就是如果我把波形的下降沿改為100N,VF1的波形就會被削頂,這個有是什么原因?
    發表于 08-19 07:15

    基于RTOS的SDK包中example下的例程如何設置編譯條件才能完成編譯?

    1. 基于RTOS 的 SDK 包中沒有 app 對應的文件夾,example 中的例程需要拷貝到哪里編譯才可以 2. 在example/smartconfig 中 make 不行, 在 RTOS_
    發表于 07-12 06:53

    sdk中的wps例程,測試失敗的原因?

    sdk中的wps例程,測試失敗 是少什么配置嗎? 測試路由器型號是WRC-300FEBK-S ,使用慶科和MTK的WiFi模組都沒問題. 有使用過的請幫忙解答下. v3.22,v3.15和最新sdk都測試過了,都一樣的問題
    發表于 06-26 08:06

    ble_mesh節點間如何實現以字符串的形式通信?

    1,關于 ESP_BLE_MESH 的部分功能在V6.0版本的SDK中有更新 那么請問如何更新v6.0的SDK 呢? 2,在使用ESP_BLE
    發表于 06-25 07:50

    使用esp-idf-v5.0.1 example中的esp_ble_mesh例程遇到的疑問求解

    本人使用esp-idf-v5.0.1 example中的esp_ble_mesh例程,共使用6個ESP-WROVER-KIT開發板。在4個開發板上燒寫onoff_client例程,在1
    發表于 06-12 07:25

    藍牙nimble例程ble_l2cap_coc運行不成功,燒錄后搜索不到設備名稱,為什么?

    藍牙nimble例程ble_l2cap_coc運行不成功,燒錄后搜索不到設備名稱
    發表于 06-12 06:27

    AG32 下使用 Segger RTT

    基于 SDK1.3.3 的。低版本的 SDK 可能展示不同。 步驟詳情: 在 platformio.ini 中更改輸出方式; 將原先的 setup_monitor 改為 setup_monitor_rtt
    發表于 05-29 09:44

    stm32wb55cgu6用BLE_HeartRate例程,連接一會就自動斷開的原因?

    如題,用官方的BLE_HeartRate例程,協議棧以刷同SDK內的full版本藍牙棧,只是修改型號到wb55cgu6,請問用手機調試助手鏈接一會兒就自動斷開了可能是什么原因?使用手機應用市場WCH
    發表于 05-24 08:29

    研華榮獲信通院工業數字孿生大賽優秀作品

    在信通院和蕪湖市人民政府聯合主辦的2023第三屆工業數字孿生大賽中,研華表現卓越,其研華數字孿生InsightAPM和研華智慧能源iEMS團隊作品均獲優秀作品獎,展現其在技術創新與應用實踐上的卓越能力,推動“工業互聯網+數字孿生
    的頭像 發表于 04-17 09:48 ?510次閱讀
    研華榮獲信通院工業數字孿生<b class='flag-5'>大賽</b>優秀<b class='flag-5'>作品</b>獎

    有獎征文!第二屆電力電子科普作品創作大賽(中國電源學會和英飛凌聯合主辦)

    ,這位幕后英雄——電力電子技術,往往并不為大眾所熟知。 你,作為電力電子行業的辛勤耕耘者,是否曾想過,將你的知識以通俗的語言分享給更多的人?中國電源學會舉辦的電力電子科普作品創作大賽,為你搭建了一個展
    發表于 04-11 11:38

    MC_SDK_5.4.4的B-G431B-ESC1開發板例程里面過流保護,運放和比較器共用引腳,為什么運行不起來?

    MC_SDK_5.4.4的B-G431B-ESC1開發板例程里面過流保護,運放和比較器用共用引腳,過流保護用比較器,可是運放有偏置電壓,這個例程運行不起來,實在是想不通了
    發表于 04-10 07:14
    豪杰百家乐官网游戏| 河曲县| 百家乐官网娱乐城介绍| 榆次百家乐官网的玩法技巧和规则| 澳门百家乐路单怎么看| 大发888娱乐城 真钱下载| 百家乐官网胜率在哪| 百家乐官网策略网络游戏信誉怎么样| 百家乐对子的玩法| 皇冠体育| 金樽百家乐官网的玩法技巧和规则 | 百家乐网络游戏信誉怎么样| 仁寿县| 百家乐出千技巧| 波音现金网投注| 基础百家乐官网规则| A8百家乐娱乐场| 重庆市| 百家乐游戏规测| 大发888娱乐城官方下载| 百家乐官网双龙出海注码法| 麻将百家乐筹码| 百家乐官网大老娱乐| 百家乐真钱棋牌| 博彩通3333| 神州百家乐官网的玩法技巧和规则| 威尼斯人娱乐场开户注册 | 博娱乐城| 百家乐天上人间| 澳门博彩股份有限公司| 百家乐官网游戏卡通| 威尼斯人娱乐场骗人| 百家乐官网半圆桌| 988百家乐娱乐| ewin娱乐城官方下载| 真人百家乐在线玩| 网络博彩网| 百家乐波浪法则| 皇冠开户投注网| 百家乐网站新全讯网| 将乐县|