CH582 BLE 5.0 使用 LE Coded 广播和连接

一、获取资料

  1. 获取SDKhttps://www.wch.cn/search?t=all&q=CH582
  2. 修改参考https://www.cnblogs.com/debugdabiaoge/p/16205973.html

二、步骤

  1. 使用例子:EVT\EXAM\BLE\Peripheral

  2. Peripheral\APP\peripheral.cPeripheral_Init函数中加入

            uint8 initial_adv_event_type = GAP_ADTYPE_EXT_CONN_UNDIRECT;
            GAPRole_SetParameter(GAPROLE_ADV_EVENT_TYPE, sizeof(uint8), &initial_adv_event_type);
            GAP_SetParamValue(TGAP_ADV_SECONDARY_PHY, GAP_PHY_VAL_LE_CODED);
            GAP_SetParamValue(TGAP_ADV_PRIMARY_PHY, GAP_PHY_VAL_LE_CODED);
            GAP_SetParamValue(TGAP_ADV_SECONDARY_MAX_SKIP, 0);
            GAP_SetParamValue(TGAP_ADV_ADVERTISING_SID, 8);
    

    这里使用的是125K的速率
    这里的修改,可以参考例子:EVT\EXAM\BLE\SYNC_ADV

  3. 若需要 连接后,从机进行PHY的协商,可以在peripheralStateNotificationCBcase GAPROLE_CONNECTED中加入协商任务

    case GAPROLE_CONNECTED:
        if(pEvent->gap.opcode == GAP_LINK_ESTABLISHED_EVENT)
        {
            Peripheral_LinkEstablished(pEvent);
            PRINT("Connected..\n");
            tmos_start_task(Peripheral_TaskID, SBP_PHY_UPDATE_EVT, SBP_READ_RSSI_EVT_PERIOD); //启动协商PHY 这里的SBP_READ_RSSI_EVT_PERIOD 只是随意定的,拿来用用
        }
        break;
    
  4. 若需要加大功率,可以修改 config.h#define BLE_TX_POWER LL_TX_POWEER_6_DBM

三、结果

可以看到PrimaryPHY和SecondaryPHY都是 LE Coded
注意这里看不到名字,是需要修改广播包的,这里可以参考EVT\EXAM\BLE\SYNC_ADV进行广播包的修改,我暂时没做下一步的研究了
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个示例代码,用于通过 CH582M 控制 WS2812C 灯带: ```C #include <ch582m.h> // 定义灯带的像素数量 #define NUM_LEDS 10 // 定义引脚 #define DATA_PIN 2 // 定义颜色结构体 typedef struct { uint8_t r; uint8_t g; uint8_t b; } RGBColor; // 定义灯带颜色数组 RGBColor leds[NUM_LEDS]; // 初始化 CH582M void ch582m_init() { CH582M_Init(); } // 发送颜色数据到灯带 void ch582m_sendData() { uint8_t i; for (i = 0; i < NUM_LEDS; i++) { CH582M_WriteByte(leds[i].g); CH582M_WriteByte(leds[i].r); CH582M_WriteByte(leds[i].b); } } // 设置指定像素的颜色 void setPixelColor(uint8_t index, uint8_t r, uint8_t g, uint8_t b) { leds[index].r = r; leds[index].g = g; leds[index].b = b; } // 清除所有像素的颜色 void clearPixels() { uint8_t i; for (i = 0; i < NUM_LEDS; i++) { setPixelColor(i, 0, 0, 0); } } int main() { // 初始化 CH582M ch582m_init(); // 清除所有像素的颜色 clearPixels(); // 设置指定像素的颜色 setPixelColor(0, 255, 0, 0); // 设置第一个像素为红色 setPixelColor(1, 0, 255, 0); // 设置第二个像素为绿色 setPixelColor(2, 0, 0, 255); // 设置第三个像素为蓝色 // 发送颜色数据到灯带 ch582m_sendData(); return 0; } ``` 这是一个简单的示例代码,用于控制 CH582M 控制器通过单总线协议发送颜色数据到 WS2812C 灯带。您可以根据需要修改像素数量、引脚定义以及设置每个像素的颜色。请确保您已正确安装 CH582M 的驱动和相关库,并将代码适配到您的开发环境中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值