结论

成功通过两个星闪开发板 E528H-WS63 实现星闪通信。一方不断广播,另一方不建立连接,只接收数据。测试表明工作电流约50mA。星闪本身挺好的,但开发环境非常不友好。

安装

官方教程地址:tools · HiSpark/fbb_ws63 - 码云 - 开源中国 https://gitee.com/HiSpark/fbb_ws63/tree/master/tools

本教程基于windows环境(编译慢极了,关了杀毒软件加速也慢),跟随教程安装:tools/HiSparkStudio工具下载及安装.md · HiSpark/fbb_ws63 - Gitee.com https://gitee.com/HiSpark/fbb_ws63/blob/master/tools/HiSparkStudio%E5%B7%A5%E5%85%B7%E4%B8%8B%E8%BD%BD%E5%8F%8A%E5%AE%89%E8%A3%85.md

总共需要: fbb_ws63 软件包、HiSpark Studio (vscode同款) 、 Python 3.11.4 和 4 个python库

跑示例

打开 HiSpark Studio 并新建工程

 

找到sle(星闪)例程

sdk 路径:fbb_ws63-master\src\application\samples\bt\sle

接收端代码为 sle_speed_client.c

广播端代码为 sle_speed_server_adv.c 

星闪协议说明:

星闪广播规范-星闪SLE设备接入规范-设备开发-HarmonyOS设备开发 https://device.harmonyos.com/cn/docs/documentation/DevicePartner-Guides/device-development-sle-specifications-advertising-0000001942819954

星闪广播端修改例程sle_speed_server_adv.c :

按照标准的协议,需要如官网所示的格式

自己自由使用的情况下可以很简单而且没有31字节限制,修改g_sle_announce_data为你想要的

uint8_t g_sle_announce_data[] = {
    'F','r','e','e',' ','P','a','l','e','s','t','i','n','e',
    '8',' ','x','i','a','o',' ','s','h','i',' ','g','o','n','g',' ','z','u','o',' ','z','h','i'

};// 37 个字节

星闪接收端修改例程sle_speed_client.c:

更改例程的sle_sample_seek_result_info_cbk,搜索到星闪广播设备后从串口打印结果

void sle_sample_seek_result_info_cbk(sle_seek_result_info_t *seek_result_data)
{
    if (seek_result_data != NULL) {

        // 打印设备MAC地址
        osal_printk("Found device: %02X:%02X:%02X:%02X:%02X:%02X\n",
                  seek_result_data->addr.addr[0], seek_result_data->addr.addr[1],
                  seek_result_data->addr.addr[2], seek_result_data->addr.addr[3],
                  seek_result_data->addr.addr[4], seek_result_data->addr.addr[5]);

        // 打印广播数据长度
        osal_printk("Adv Data Len: %d\n", seek_result_data->data_length);
        // 打印广播数据
        for (int i = 0; i < seek_result_data->data_length; i++) {
            osal_printk("%02X ", seek_result_data->data[i]);
        }
        osal_printk("\n");

        // 原本的代码,需要注释掉
        // uint8_t mac[SLE_ADDR_LEN] = {0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
        // if (memcmp(seek_result_data->addr.addr, mac, SLE_ADDR_LEN) == 0) {
        //     (void)memcpy_s(&g_remote_addr, sizeof(sle_addr_t), &seek_result_data->addr, sizeof(sle_addr_t));
        //     sle_stop_seek();
        // }
    }
}

烧写程序:

1、修改系统配置,如广播端:

2、编译,超级慢,单细胞都等成类人猿了

3、设置下载端口:

按下开发板的复位按钮烧录

4、打开串口监视器,检查是否正确的输出了你发送的数据:

 

Logo

海思 HiSpark 开发者社区是上海海思为开发者搭建的内容和交流平台,依托完备芯片解决方案、专业开发环境、开源/开放的软件资源与社区技术内容,构建完整服务生态开发者的闭环体系。

更多推荐