完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
硬件平台:CC2541
软件环境:IAR for 8051 v8.20.2 协议栈版本:1.4.0 最近一个项目中,用了CC2541的广播模式(单一模式,不带从机或主机)。我是按照SimpleBLEBroadcaster的示例工程做的。 对广播数据的操作如下: /* 关闭广播 */ initial_advertising_enable = FALSE; GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable ); /* 更新广播数据 */ GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData ); /* 打开广播 */ initial_advertising_enable = TRUE; GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable ); 虽然advertData[ ]的数据改变了,但是实际广播出来的数据没有任何变化,后来更改为更新数据之后,10ms再打开广播,还是不起作用。请帮我查看一下问题所在。 下面贴出初始化部分的代码: /* Setup the GAP Broadcaster Role Profile */ [ /* Device starts advertising upon initialization */ uint8 initial_advertising_enable = TRUE; /* By setting this to zero, the device will go into the waiting state after being discoverable for 30.72 second, and will not being advertising again until the enabler is set back to TRUE */ uint16 gapRole_AdvertOffTime = 0; uint8 advType = GAP_ADTYPE_ADV_SCAN_IND; // use scannable unidirected advertisements /* Set the GAP Role Parameters */ GAPRole_SetParameter( GAPROLE_ADVERT_ENABLED, sizeof( uint8 ), &initial_advertising_enable ); GAPRole_SetParameter( GAPROLE_ADVERT_OFF_TIME, sizeof( uint16 ), &gapRole_AdvertOffTime ); GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof( scanRspData ), scanRspData ); GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData ); GAPRole_SetParameter( GAPROLE_ADV_EVENT_TYPE, sizeof( uint8 ), &advType ); ] /* Set advertising interval */ [ uint16 advInt = DEFAULT_ADVERTISING_INTERVAL; GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MIN, advInt ); GAP_SetParamValue( TGAP_LIM_DISC_ADV_INT_MAX, advInt ); GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MIN, advInt ); GAP_SetParamValue( TGAP_GEN_DISC_ADV_INT_MAX, advInt ); ] /* Setup a delayed profile startup */ osal_set_event( smartTag_TaskID, ST_START_DEVICE_EVT ); |
|
相关推荐
5 个讨论
|
|
我今天试了一下,在中间加了100ms延时,再更新内容,还是不行。我之前用从机+广播模式,那时候是正常的,最近项目想把从机取消掉,我就参照着SimpleBLEBroadcaster示例程序修改。
广播事件类型改为GAP_ADTYPE_ADV_NONCONN_IND,这个是以前有从机模式的时候默认的,也还是不行。 还有一部分初始化的代码,请看一下,有没有缺什么东西: void osalInitTasks( void ) [ uint8 taskID = 0; tasksEvents = (uint16 *)osal_mem_alloc( sizeof( uint16 ) * tasksCnt ); osal_memset( tasksEvents, 0, ( sizeof( uint16 ) * tasksCnt ) ); /* LL Task */ LL_Init( taskID++ ); /* Hal Task */ Hal_Init( taskID++ ); /* HCI Task */ HCI_Init( taskID++ ); #if defined ( OSAL_CBTIMER_NUM_TASKS ) osal_CbTimerInit( taskID ); taskID += OSAL_CBTIMER_NUM_TASKS; #endif /* OSAL_CBTIMER_NUM_TASKS */ /* GAP Task */ GAP_Init( taskID++ ); /* Profiles */ GAPRole_Init( taskID++ ); /* Application */ SmartTag_Init( taskID ); ] |
|
|
|
|
|
为了造福大家,我还是自己回答自己吧!有用到的也可以来看看。 官方例程SimpleBLEBroadcaster,只用到了广播模式。以上的方法不正确。 正确做法: GAPRole_SetParameter( GAPROLE_ADVERT_DATA, sizeof( advertData ), advertData ); GAP_UpdateAdvertisingData( smartTag_TaskID, TRUE, sizeof( advertData ), advertData ); |
|
|
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
683 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
599 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1054 浏览 1 评论
739 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
524 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
161浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
125浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
126浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
122浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
168浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 19:47 , Processed in 1.101770 second(s), Total 75, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号