请教CH579M无法启动蓝牙问题

各位大佬们好,我手上买了CH579M芯片打了几块板子,调试的时候烧录了官网给的例程Peripheral,发现BLE调试助手无法搜到蓝牙设备,并且CH579M的Debug串口也只打印了“

CH57x_BLE_LIB_V1.90

Initialized..

Advertising..

根本没搜索到其它蓝牙设备。

本人供职于惠州某电池企业,项目组想用国产方案做一款无线采集设备。请大佬们指点一二,不胜感激。


原理图如下:

icon_jpg.gif无标题.png


高频和低频晶振旁边均不需要外接电容,芯片内置了负载电容。

可以先使用内部32K尝试是否可以搜索到蓝牙设备。

BLE调试助手是否可以搜索到其他设备,如果什么都没有搜索到检查是否为定位和蓝牙功能未开启。


。。




@TECH_Lpc 我改成了内部32K晶振,烧录了Peripheral例程还是搜到不到板子的蓝牙设备。。请教下如何解决

下面是我程序修改的地方。


icon_jpg.gif1665128237275.jpg

icon_jpg.gif7034afffb8f34d24556ac64fd44be76.jpg

icon_jpg.gif1665128289172.png

icon_jpg.gif1665128349816.png



在config.h中有相应的宏可以直接做修改,注释也是提供了。修改后先在官方板上尝试是否成功,然后在你的板子上尝试。

实物请注意芯片的地是完全供地的,电容按照手册来进行配置。


@TECH_Lpc 您说的是RTC用内部32K吧?我看成是mcu主频了。。


是内部32K的调整,32K对于蓝牙的使用会有影响,因此建议先使用内部32K进行尝试验证。同时上述的供地也需要注意。


@TECH_Lpc  我这边查看了config.h头文件,看到的只有CLK_OSC32K宏是关于晶振的而且是RTC而不是MCU主频晶振,不知道哪个宏是关于内部晶振的。。。


/********************************** (C) COPYRIGHT *******************************

* File Name          : CONFIG.h

* Author             : WCH

* Version            : V1.10

* Date               : 2019/11/05

* Description        : 配置说明及默认值,建议在工程配置里的预处理中修改当前值

*******************************************************************************/


/******************************************************************************/

#ifndef __CONFIG_H

#define __CONFIG_H


#defineID_CH5770x77

#defineID_CH5780x78

#defineID_CH5790x79


#define CHIP_IDID_CH579


#ifdef CH57xBLE_ROM

#include "CH57xBLE_ROM.H"

#else

#include "CH57xBLE_LIB.H"

#endif


#include "CH57x_common.h"


/*********************************************************************

【MAC】

BLE_MAC- 是否自定义蓝牙Mac地址 ( 默认:FALSE - 使用芯片Mac地址 ),需要在main.c修改Mac地址定义


【SLEEP】

HAL_SLEEP   - 是否开启睡眠功能 ( 默认:FALSE )

WAKE_UP_RTC_MAX_TIME- 等待32M晶振稳定时间,根据不同睡眠类型取值可分为:睡眠模式/下电模式 -45(默认)

暂停模式-45

空闲模式-5

【TEMPERATION】

TEM_SAMPLE- 是否打开根据温度变化校准的功能,单次校准耗时小于10ms( 默认:TRUE )

【CALIBRATION】

BLE_CALIBRATION_ENABLE- 是否打开定时校准的功能,单次校准耗时小于10ms( 默认:TRUE )

BLE_CALIBRATION_PERIOD- 定时校准的周期,单位ms( 默认:120000 ) 

【SNV】

BLE_SNV                - 是否开启SNV功能,用于储存绑定信息( 默认:TRUE )

BLE_SNV_ADDR        - SNV信息保存地址,使用data flash最后( 默认:0x3EC00 )


【RTC】

CLK_OSC32K- RTC时钟选择,如包含主机角色必须使用外部32K( 默认:0 外部(32768Hz),1:内部(32000Hz),2:内部(32768Hz) )


【MEMORY】

BLE_MEMHEAP_SIZE  - 蓝牙协议栈使用的RAM大小,不小于6K ( 默认:(1024*8) )               


【DATA】

BLE_BUFF_MAX_LEN- 单个连接最大包长度( 默认:27 (ATT_MTU=23),取值范围[27~251] )

BLE_BUFF_NUM- 控制器缓存的包数量( 默认:5 )

BLE_TX_NUM_EVENT- 单个连接事件最多可以发多少个数据包( 默认:1 )

BLE_TX_POWER- 发射功率( 默认:LL_TX_POWEER_0_DBM (0dBm) )

【MULTICONN】

PERIPHERAL_MAX_CONNECTION- 最多可同时做多少从机角色( 默认:1 )

CENTRAL_MAX_CONNECTION- 最多可同时做多少主机角色( 默认:3 )

**********************************************************************/


/*********************************************************************

 * 默认配置值

 */

#ifndef BLE_MAC

#define BLE_MACFALSE

#endif

#ifndef HAL_SLEEP

#define HAL_SLEEPFALSE

#endif

#ifndef WAKE_UP_RTC_MAX_TIME

#define WAKE_UP_RTC_MAX_TIME50

#endif

#ifndef HAL_KEY

#define HAL_KEYFALSE

#endif

#ifndef HAL_LED

#define HAL_LEDFALSE

#endif

#ifndef TEM_SAMPLE

#define TEM_SAMPLETRUE

#endif

#ifndef BLE_CALIBRATION_ENABLE

#define BLE_CALIBRATION_ENABLETRUE

#endif

#ifndef BLE_CALIBRATION_PERIOD

#define BLE_CALIBRATION_PERIOD120000

#endif

#ifndef BLE_SNV

#define BLE_SNVTRUE

#endif

#ifndef BLE_SNV_ADDR

#define BLE_SNV_ADDR0x3EC00

#endif

#ifndef CLK_OSC32K

#define CLK_OSC32K0// 该项请勿在此修改,必须在工程配置里的预处理中修改,如包含主机角色必须使用外部32K

#endif

#ifndef BLE_MEMHEAP_SIZE

#define BLE_MEMHEAP_SIZE(1024*8)

#endif

#ifndef BLE_BUFF_MAX_LEN

#define BLE_BUFF_MAX_LEN27

#endif

#ifndef BLE_BUFF_NUM

#define BLE_BUFF_NUM5

#endif

#ifndef BLE_TX_NUM_EVENT

#define BLE_TX_NUM_EVENT1

#endif

#ifndef BLE_TX_POWER

#define BLE_TX_POWERLL_TX_POWEER_0_DBM

#endif

#ifndef PERIPHERAL_MAX_CONNECTION

#define PERIPHERAL_MAX_CONNECTION1

#endif

#ifndef CENTRAL_MAX_CONNECTION

#define CENTRAL_MAX_CONNECTION3

#endif


extern uint32_tMEM_BUF[BLE_MEMHEAP_SIZE/4];

extern const uint8_t MacAddr[6];


#endif


/******************************* endfile @ config ******************************/




我们家的RTC就是基于低频32K产生的,所以修改CLK_OSC32K = 1进行验证。

修改后查看是否成功,如果不成功,请发送邮件至邮箱lpc@wch.cn,我们这里会详细排查问题。


@TECH_Lpc 好的,谢谢您。我这边改成32k测试一下。


找到问题了。。是我手机搜不到设备的蓝牙,手机型号是荣耀50 SE。。。换另一部手机就可以了


只有登录才能回复,可以选择微信账号登录