WCH CH582M 蓝牙例程 RF_PHY记录

这篇具有很好参考价值的文章主要介绍了WCH CH582M 蓝牙例程 RF_PHY记录。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

最近在研究沁恒的CH58x系列蓝牙功能,作为一个小白记录一下自己的摸索过程。首先我使用的是CH582M型号两块,RF_PHY例程。
本文简单介绍如何实现数据收发与使用WCH-BLE分析仪抓包。


一、RF_PHY

https://www.cnblogs.com/iot-fan/p/14320405.html
RF_PHY 是wch提供的一个调用底层2.4g收发器的一个接口,可以通过此接口实现更为灵活的通信方式
这种底层,仅仅是BLE的收发器基础上,这意味着,收发器调制解调参数,包括frequency,deviation,symbol_rate,以及packet_handler(preamble,syncword,length,crc,whitening)都是符合蓝牙的底层规范的.
具体的工程可参考官方提供例程对应路径下的工程,如:CH582\EVT\EXAM\BLE\RF_PHY

二、使用步骤

1.使用MounRiver Studio打开例程

MounRiver Sutdio的下载与使用本站有许多教程,此处不再赘述。
给出MounRiver Studio与沁恒BLE例程下载链接:
MounRiver Studio:http://www.mounriver.com
沁恒CH85x BLE例程:https://www.wch.cn/downloads/CH583EVT_ZIP.html
工程界面如下,主函数在APP文件夹
WCH CH582M 蓝牙例程 RF_PHY记录,沁恒,c语言,单片机
沁恒的蓝牙芯片例程已经将各个函数进行高度封装,不同主从机例程的主函数中,一般都只时一到两个的函数的区别,但是在这一到两个函数中,差别还是很大的

//主函数
int main(void)
{
#if(defined(DCDC_ENABLE)) && (DCDC_ENABLE == TRUE)
    PWR_DCDCCfg(ENABLE);
#endif
    SetSysClock(CLK_SOURCE_PLL_60MHz);
#if(defined(HAL_SLEEP)) && (HAL_SLEEP == TRUE)
    GPIOA_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);
    GPIOB_ModeCfg(GPIO_Pin_All, GPIO_ModeIN_PU);
#endif
#ifdef DEBUG
    GPIOA_SetBits(bTXD1);
    GPIOA_ModeCfg(bTXD1, GPIO_ModeOut_PP_5mA);
    UART1_DefInit();
#endif
    PRINT("start.\n");
    PRINT("%s\n", VER_LIB);
    CH58X_BLEInit();                        // 初始化蓝牙库
    HAL_Init();
    RF_RoleInit();                          // 配置此设备的角色为RF Role
    RF_Init();
    Main_Circulation();
}

2.对例程进行简单修改并烧录

可以看到主函数内容并不多,我们主要关注HAL_Init() 与RF_Init()这两个函数
其中HAL_Init()注册了HAL层任务,对硬件参数进行初始化,比如RTC的时钟,睡眠唤醒,RF校准等

void HAL_Init()      // 注册HAL层任务,对硬件参数进行初始化,比如RTC的时钟,睡眠唤醒,RF校准等
{
    halTaskID = TMOS_ProcessEventRegister(HAL_ProcessEvent);
    HAL_TimeInit();                                               // 系统定时器初始化
#if(defined HAL_SLEEP) && (HAL_SLEEP == TRUE)
    HAL_SleepInit();
#endif
#if(defined HAL_LED) && (HAL_LED == TRUE)
    HAL_LedInit();
#endif
#if(defined HAL_KEY) && (HAL_KEY == TRUE)
    HAL_KeyInit();
#endif
#if(defined BLE_CALIBRATION_ENABLE) && (BLE_CALIBRATION_ENABLE == TRUE)
    tmos_start_task(halTaskID, HAL_REG_INIT_EVENT, MS1_TO_SYSTEM_TIME(BLE_CALIBRATION_PERIOD)); // 添加校准任务,单次校准耗时小于10ms
#endif
    tmos_start_task( halTaskID, HAL_TEST_EVENT, 1600 );    // 添加一个测试任务
}

而RF_Init()主要就是RF初始化,收发功能的配置

void RF_Init(void)
{
    uint8_t    state;
    rfConfig_t rfConfig;

    tmos_memset(&rfConfig, 0, sizeof(rfConfig_t));
    taskID = TMOS_ProcessEventRegister(RF_ProcessEvent);                 // 注册RF任务,初始化RF功能,以及注册RF的回调函数
    rfConfig.accessAddress = 0x71764129;                                 // 禁止使用0x55555555以及0xAAAAAAAA ( 建议不超过24次位反转,且不超过连续的6个0或1 )
    rfConfig.CRCInit = 0x555555;
    rfConfig.Channel = 8;
    rfConfig.Frequency = 2480000;
    rfConfig.LLEMode = LLE_MODE_BASIC | LLE_MODE_EX_CHANNEL;             // 使能 LLE_MODE_EX_CHANNEL 表示 选择 rfConfig.Frequency 作为通信频点
    rfConfig.rfStatusCB = RF_2G4StatusCallBack;
    rfConfig.RxMaxlen = 251;
    state = RF_Config(&rfConfig);
    PRINT("rf 2.4g init: %x\n", state);
//    { // RX mode
//        state = RF_Rx(TX_DATA, 10, 0xFF, 0xFF);
//        PRINT("RX mode.state = %x\n", state);
//    }

        { // TX mode
            state = RF_Tx(TX_DATA, 10, 0xFF, 0xFF);
            PRINT("TX mode.state = %x\n", state);
        }

    	{ // TX mode
    		tmos_set_event( taskID , SBP_RF_PERIODIC_EVT );
    	}
}

注意对两个不同设备进行烧录时,TX mode与RX mode要分别屏蔽,记录为发送设备与接收设备
本文使用WCHISPStudio进行烧录,烧录过程站内与沁恒官方也有非常详细的介绍,此处不再介绍
WCHISPStudio工具下载地址:https://www.wch.cn/downloads/WCHISPTool_Setup_exe.html

3.通过串口查看数据发送

此为接收设备的串口打印,可以看到例程已经成功跑起来了
打印内容包括接收模式状态、RSSI、接收数据等
WCH CH582M 蓝牙例程 RF_PHY记录,沁恒,c语言,单片机

4.通过WCH-BLE分析仪抓包

本文使用沁恒官方出产的WCH-BLE分析仪进行抓包,需要额外购买。大概就长这样 也比较轻便
WCH CH582M 蓝牙例程 RF_PHY记录,沁恒,c语言,单片机
上位机及配套材料下载地址:https://www.wch.cn/downloads/WCH_BLEAnalyzer_zip.html
上位机打开后的界面如下:
WCH CH582M 蓝牙例程 RF_PHY记录,沁恒,c语言,单片机
由于本文使用的是RF_PHY例程,不使用蓝牙协议栈。所以这里想要抓包还需要稍微设置一下
1.点击坐上工具栏的小齿轮即硬件设置——>选择自定义2.4G模式
2.自定义2.4G参数设置中Data Channel改为39
3.AccessAddress与CRCInit就是前面RF_Init函数中设置的参数,填写进去(注意,格式中不要加0x)

WCH CH582M 蓝牙例程 RF_PHY记录,沁恒,c语言,单片机

确定以后点击开始,就可以看到数据包了
WCH CH582M 蓝牙例程 RF_PHY记录,沁恒,c语言,单片机
分享一个小坑
在刚上手时忘记填写CRCInit,会出现满屏的以下情况
WCH CH582M 蓝牙例程 RF_PHY记录,沁恒,c语言,单片机
在查关键字FEC ERROR时只有极少的资料,所以也没弄得很明白,下面放原文链接
1.https://e2echina.ti.com/support/wireless-connectivity/bluetooth/f/bluetooth-forum/97644/fcs
2.https://e2echina.ti.com/support/wireless-connectivity/bluetooth/f/bluetooth-forum/77982/packet-sniffer-fce-error

总结

还是颗小白菜 慢慢进步文章来源地址https://www.toymoban.com/news/detail-543695.html

到了这里,关于WCH CH582M 蓝牙例程 RF_PHY记录的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 CH32V208WBU6 评估板

    2024年02月04日
    浏览(58)
  • 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 在介绍下面的内容

    2024年02月02日
    浏览(38)
  • 沁恒ch32V208处理器开发(四)串口通信

    资源配置 CH32V208 系列,是基于 RISC-V 指令架构设计的 32 位 RISC 内核 MCU,根据封装的不同,可用的USART串口资源如下表所示: 且USART具有如下主要特征: (1)全双工或半双工的同步或异步通信 (2) 支持分数波特率发生器,最高 9Mbps (3)可编程数据长度、停止位长度 (4)支

    2024年02月13日
    浏览(38)
  • 沁恒CH32V307母板+OPA4377运放模块-开源

    南京沁恒微电子股份有限公司是一家国产通讯接口芯片和全栈MCU芯片公司。专注于连接技术和MCU内核研究,基于自研收发器PHY和处理器IP的全栈研发模式,取代传统的外购IP整合模式,提供以太网、蓝牙无线、USB和PCI类等接口芯片,及集成上述接口的连接型/互联型/无线型全栈

    2023年04月09日
    浏览(51)
  • 串口转HID键盘鼠标芯片沁恒微电子CH9329

    概述 沁恒微电子CH9329 是一款串口转标准 USB HID 设备(键盘、鼠标、自定义 HID)芯片,根据不同的工作模式, 在电脑上可被识别为标准的 USB 键盘设备、USB 鼠标设备或自定义 HID 类设备。该芯片接收客户端发送过来的串口数据,并按照 HID 类设备规范,将数据先进行打包再通过

    2024年02月10日
    浏览(45)
  • 沁恒ch32V208处理器开发(三)GPIO控制

    GPIO功能概述 CH32V2x 微控制器的GPIO 口可以配置成多种输入或输出模式,内置可关闭的上拉或下拉电阻,可以配置成推挽或开漏功能。GPIO 口还可以复用成其他功能。端口的每个引脚都可以配置成以下的多种模式之一: 内部结构图如下: 可以看出,IO 口内部可分为输入驱动模块

    2024年02月13日
    浏览(35)
  • 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 CH32V208WBU6 评估板

    2024年02月02日
    浏览(50)
  • 沁恒CH32V307单片机入门(01):基础说明与流程体验

    工作这几年单片机主要就接触过 Atmel、Renesas、Microchip、ST 这些厂家的,最近几年因为内部外部的各种因素单片机的价格和供应都挺不稳定的,将来会发生什么也不好说。另外这些年国内的单片机发展也挺快的。所以准备试试国产的单片机。 这里准备使用南京沁恒的CH32V307为基

    2024年01月25日
    浏览(51)
  • 沁恒CH32V307VCT6最小系统板/开发板开源

    沁恒CH32V307VCT6最小系统板,引出了所有IO口,一个Type-C连接到USB2.0全速OTG接口,一个Flash芯片 型号W25Q64 容量64Mbit 连接到SPI2接口,板上还有TL432电压基准1.25V(实测1.246V左右)可通过跳线连接到PC3的AD13,还有3.29V基准通过0欧电阻可连接到ADC参考电压VREF。 画了个 MSP430F149的最小系统

    2024年02月12日
    浏览(36)
  • 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置

    沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置 沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 沁恒 CH32V208(三): CH32V208 Ubuntu22.04 Makefile VSCode环境配置 沁恒 CH32V208(四): CH32V208 网络DHCP示例代码分析 沁恒 CH32V208(五): CH32V208 运行FreeRTOS示例的说明 CH32V208系列是沁恒

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包