------------------------------------------------------------------------------------------------------------------------------------
在使用蓝牙从机的时候,从机与主机设备在建立之前一直是出于广播数据状态,在从机中广播包含有广播数据和扫描回复数据,这两个内容的总长度都是31个字节;对于广播的内容格式, 蓝牙规定是按照 1byte长度 + 1byte类型 + n字节内容的方式循环放。BLE设备每次广播时,会在3个广播信道上发送相同的报文,这些报文被称为一个广播事件。两个相邻广播事件之间的时间称为广播间隔。广播间隔是针对从机设备来说的,广播间隔决定了从机设备的广播频率。实际广播间隔时间为32~16448,单位是0.625ms,所以实际的广播间隔时间是(32~16448)0.625ms。
这次利用CH582开发板进行更新蓝牙广播间隔的操作,对于广播间隔,当减少广播间隔时,可以使得广播频率增高,在建立连接过程速度加快,但是这样也会使得芯片功耗增大。当增大广播间隔,使得广播频率降低,建立连接的速度也会减慢,此时芯片功耗也会降低。因此可以在程序中进行修改, 当有需求连接时,可以将广播间隔改小一点,可以快速的建立连接,当长时间不需要连接时,可以把广播间隔改大,降低芯片的功耗。
在CH582的从机例程中,写一个更新广播间隔的tmos任务函数,在修改广播间隔参数时,需要重启广播,才能生效。
第一步:先关闭广播
第二步:修改设置广播间隔参数
第三步:在广播 GAPROLE_WAITING(广播停止)状态产生后,然后立刻开启广播. 不能关闭广播后立刻开启广播.
要先关闭广播,然后在停止广播的状态( GAPROLE_WAITING)产生后才能再去使能广播,不能刚执行完关闭广播,就去开启广播,否则会导致立刻开启失败,如当前在广播状态,执行关闭广播,然后立刻执行开始广播,这时候开始广播是不会调用成功的 因为这里只是设置协议栈状态机标识位,实际上广播并没有立刻停止,要等协议栈轮询处理后,才会真正关闭,如果现在去启动广播,协议栈会认为当前已经在广播状态。
在Peripheral_Init初始化中,添加更新广播间隔参数的事件任务启动,其中里面的Update_time的参数设置,就可以修改延时多久进入更新广播间隔参数事件。
可以通过仪器观察整个更新的过程,一开始的广播间隔时间在50ms左右,更新后广播间隔在500ms
标签:芯片,间隔,蓝牙,更新,开发板,广播,CH582 From: https://www.cnblogs.com/ZYL-FS/p/18521662