各位大佬们好,我手上买了CH579M芯片打了几块板子,调试的时候烧录了官网给的例程Peripheral,发现BLE调试助手无法搜到蓝牙设备,并且CH579M的Debug串口也只打印了“
CH57x_BLE_LIB_V1.90
Initialized..
Advertising..
”
根本没搜索到其它蓝牙设备。
本人供职于惠州某电池企业,项目组想用国产方案做一款无线采集设备。请大佬们指点一二,不胜感激。
原理图如下:
各位大佬们好,我手上买了CH579M芯片打了几块板子,调试的时候烧录了官网给的例程Peripheral,发现BLE调试助手无法搜到蓝牙设备,并且CH579M的Debug串口也只打印了“
CH57x_BLE_LIB_V1.90
Initialized..
Advertising..
”
根本没搜索到其它蓝牙设备。
本人供职于惠州某电池企业,项目组想用国产方案做一款无线采集设备。请大佬们指点一二,不胜感激。
原理图如下:
高频和低频晶振旁边均不需要外接电容,芯片内置了负载电容。
可以先使用内部32K尝试是否可以搜索到蓝牙设备。
BLE调试助手是否可以搜索到其他设备,如果什么都没有搜索到检查是否为定位和蓝牙功能未开启。
。。
@TECH_Lpc 我改成了内部32K晶振,烧录了Peripheral例程还是搜到不到板子的蓝牙设备。。请教下如何解决
下面是我程序修改的地方。
7034afffb8f34d24556ac64fd44be76.jpg
在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。。。换另一部手机就可以了