iot-fan

联系: iotfan123#163.com
注意:
1,本博客之内容来源于网上收集以及相关技术人员提供,如果有侵犯到您的权益,请电邮我沟通;
2,本博客之内容乃分享,交流,学习,研究之目的,作者不对内容的真实性,有效性,及时性负责,也不对因本博客的任何内容导致的任何后果负责;
3,本博客之内容禁止转发到CSDN网站,转到别的网站请保留出处.

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

(待完善)

本文目的

  • WCH ARM核的BLE芯片只提供了MDK的BLE SDK, 有些时候,因为版权原因,我们需要使用GCC 这类自由软件去做开发
  • 本文暂时只针对ch579,ch578

原理

WCH的BLE都提供了两种开发方式:带协议栈编译和APP单独编译(https://www.cnblogs.com/iot-fan/p/14327272.html)而APP单独编译模式其蓝牙协议栈是以预编固件直接烧录进去的,在编译时候不对BLE的库进行链接,这种情况下开发蓝牙就相当于开发普通的工程一样.

CH579/578 MRS蓝牙工程实现

准备工作

实现步骤

1,新建个ch579的MRS工程

可以用MRS的新建工程去新建,为了避免误导大家,这里就不细说了,大家可以直接用附件工程

2,加入源码

新建的工程是只是个普通的外设使用的工程,我们可以按照keil的目录把BLE的源码加到工程里面(不需要添加链接加库)

3,修改工程代码

<见附件工程>

  • 启动文件(步骤1新建的工程有提供)
  • PRINT的重定向
  • 结构体的packed关键字
  • LD文件(见附件 CH579.ld)

4,加入宏

加入宏的方法可以参考MRS使用Tips:https://www.cnblogs.com/iot-fan/p/16118604.html
其他的宏可以参考WCH官方CH573以及CH583的工程

CH57xBLE_ROM
DEBUG=1

5,注意的地方

  • PRINT的重定向,KEIL和基于GCC的MRS是不太相同的,WCH的PRINT的重定向在诸如ch57x_sys.c或者ch58x_sys.c里面
  • 一些函数的定义可能不太一样 如nop函数
  • 一些关键字可能不太一样,如结构体的packed关键字(WCH官方的CH579 例程截止当前EVT2.6 都还是针对keil的版本),尤其定义所有寄存器的头文件 CH579SFR.h )

6,编译

20:15:51 **** Build of configuration obj for project ch57x_ble_uart_mrs_app_only_test ****
make -j8 all 
Memory region         Used Size  Region Size  %age Used
           FLASH:       11636 B       250 KB      4.55%
            XRAM:          8 KB         8 KB    100.00%
             RAM:        1900 B         8 KB     23.19%
   text	   data	    bss	    dec	    hex	filename
  11356	    280	   9812	  21448	   53c8	ch57x_ble_uart_mrs_app_only_test.elf

20:15:52 Build Finished. 0 errors, 0 warnings. (took 1s.133ms)

7,下载&运行

  1. 下载协议栈:CH579BLE_ROM.hex
  2. 下载app部部分 ch57x_ble_uart_mrs_app_only_test.hex
    上电运行:
CH579 build with MRS
CH57x_BLE_LIB_V2.00
Initialized..
Advertising..

附件工程

https://gitee.com/iot-fan/iot-fan_at_cnblogs/tree/master/CH577_CH578_CH579/AN/CH579EVT_2.6_ble_mrs

# CH32F208 MRS蓝牙工程实现

posted on 2022-09-16 15:22  iot-fan  阅读(693)  评论(0编辑  收藏  举报