BK2461使用中所遇问题与解决方法

 

  • 问题描述:编译工程,编译信息栏出现如下信息:Program Size: data=145.1 xdata=218 code=7887 ;Target not created. ---解决方法:BK2461芯片内存大小为8K,所以代码总量不能大于8K或接近8K。应该删除无用的代码。
  •  问题描述:使用开发板测试低功耗,其他线路都断开了。工作状态下为10mA左右,进入休眠后万用表还是显示6mA左右。为什么没有进入休眠低功耗呢? ---解决方法:开发板内有下载电路,因为芯片程序跑的是外加flash,因此需要通过下载电路才能驱动芯片,因此下载电路消耗了6mA电流左右。
  • 问题描述:调试休眠唤醒时,引脚已做了初始化,还做了休眠配置,如下(P25引脚),P2_WUEN=0x10; P2_WUMOD=0x10;但还是不能唤醒。 ---解决方法:在休眠函数while循环中加入 if(!KEY1){break;};  (KEY1为P25引脚)
  • 问题描述:外设初始化(配置了看门狗)后,看门狗没有被开启。--- 解决方法:在配置看门狗之前把看门狗的外设时钟关闭了,导致配置看门狗时,看门狗不能开启。上电后看门狗只能开启或关闭一次。

  • 使用看门狗时,进入idle、sleep模式下,看门狗“不工作”;只进入idle模式,看门狗可以工作。 --- 解决方法:只进入idle模式,时钟晶振使用的还是外部16M,进入sleep模式,时钟切换为内部RC 32K时钟晶振,复位周期可能变为很久了,所以要重新设置看门狗复位周期
  • 问题描述:工程进入休眠后,按键唤醒,每次都是重启,怀疑是使用杜邦线插拔实现的高低电平,导致干扰,但又不是。----解决方法:是退出休眠后,看门狗的复位周期没有重置,需要再次重置看门狗复位周期。休眠与工作装态下,看门狗使用的时钟源不一样
  • 问题描述:开发板芯片在休眠状态下,烧录更新程序,发现运行现象没有改变。解决方法:休眠状态下更新的程序,要重新上电,才会执行更新后的程序
  • 问题描述:TX模块有4个按键,换掉了其中两个,修改的两个都做了输入初始化,但效果感觉这两个按键很迟钝,按很久才有反应。但原来的两个按键反应还是很快。解决方法:新换的两个引脚没有配置唤醒初始化(如:P2_WUEN=0xx; P2_WUMOD=0xx),要进入休眠时做唤醒初始化
  • 问题描述:查看数据手册,工作状态下时钟为16MHz(开发板使用的外围晶振也是16MHz),休眠状态下为32KHz。测试,工作状态下使用16MHz计算EX_Timer、看门狗时间都比较准确;休眠状态下使用32KHz计算EX_Timer、看门狗都不准确。解决方法:在休眠状态下,使用反推发,计算时钟频率,结果计算为:休眠状态下,时钟大概是20KHz。
  • 问题描述:做TX模块低功耗时,rf_init()函数中 该函数RF_SetupRetrans(1000, 5); 会导致非常大的电流消耗。解决方法:适当修改重传时间,重传次数可以有效降低电流消耗。
  • 问题描述:本来进入休眠后功耗是8uA,增加了一个引脚作为输出(如驱动LED),进入休眠后功耗变为了68uA。解决方法:进入休眠前,没有失能引脚。解决方法:如添加了P24引脚,这进入休眠前使用如下函数关掉引脚 GPIO_DiablePU(2, BIT(4)); GPIO_DiablePD(2, BIT(4));退出休眠后记得再次初始化引脚
  • 问题描述:接收模块做低功耗,如何做到一个频段工作1ms,休眠400ms。解决方法:关键是把空中传输速率改为2Mbps,这样发射频率就可以改到400us左右的间隔
  • 配置内部下拉输入,但配置失败,使用万用表测引脚电压还是高电平
	 /*配置内部下拉,但是配置失败*/
     GPIO_InputSetup(2, BIT(0),0,BIT(0));	/*使能内部下拉*/

     /*配置内部下拉正确方法,因为芯片默认开启了内部上拉*/
     GPIO_DiablePU(2,BIT(0));             /*使能内部下拉,需要先失能内部上拉*/
	 GPIO_InputSetup(2, BIT(0),0,BIT(0));	/*使能内部下拉*/
  • 问题描述:作为发射时,平时进入休眠后,偶尔出现不能唤醒,需要重新上电就可以正常了。解决方法:之前是使用硬件看门狗,即使进入休眠也要定时唤醒喂狗,修改后使用软件看门狗,进入休眠后停掉看门狗,并在进入休眠或唤醒语句加上几个NOP;
  • 使用BK2461做2.4G无线数据发送,两个发射模块使用同样的程序,间隔400us发射;只有一个发射模块工作,接收模块可以正常接收,当两个发射模块同时工作接收模块就不能正常收到数据。解决方法:两个发射模块同时以相同的频率和相同的信道发射数据,会导致数据冲突。程序中加入了每次发射数据后在原来的发射时间间隔上增加了随机的10us左右,接收模块可以正常接收连个发射模块或多个发射模块发射的信息;

 蓝牙广播中的类似问题
Advertising interval  (广播间隔)
设备每次广播时,会在3个广播信道上发送相同的报文。这些报文被称为一个广播事件。除了定向报文以外,*其他广播事件均可以选择“20ms ~ 10.28s”不等的间隔。*  通常,一个广播中的设备会每一秒广播一次。两个相邻广播事件之间的时间称为广播间隔。  
但是,设备周期性的发送广播会有一个问题:由于设备间的时钟会不同程度的漂移,两个设备可能在很长一段时间同时广播而造成干扰。为防止这一情况的发生,除定向广播之外的其他广播类型,发送时间均会被扰动。实现该扰动的方式为,*在上一次广播事件后加入“0 ~ 10ms”的随机延时。* 这意味着,即使两个设备广播间隔相同,并在相同信道及时间点上发送造成了冲突,但它们发送下一个广播事件时也会有很大可能不再冲突。
所以,两个相邻的广播事件的之间的时间间隔(T_advEvent)为:T_AdvEvent = advInterval + advDelay
其中,advInterval 必须是“0.625ms”的整数倍,范围是“20ms ~ 10.24s”之间。对于可扫描非定向广播和不可连接非定向广播这两种广播类型,该值最好不小于100ms,即(160个0.625ms)。advDelay是Link Layer(链接层)分配的一个伪随机数,它的范围为“0 ~ 10ms”。

 

评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值