CH582F作为从机,数量有几十个,定时读取传感器数据;CH582M做主机,每隔30分钟就去连接从机并获取从机数据。
初步思路是:采用白名单的方式,把从机的MAC做成一个列表,CH582M主机逐个根据MAC地址连接并读取数据。
请问:
1)这种情况下,从机需要处于什么状态?如果是在休眠可以被主机连接吗?
2)有没有类似的例程可以参考的?
3)从机不需要记录状态,是否可以每次获取传感器数据后,将数据保存在断电保持区,然后进入shutdown模式。但是这样还能被主机唤醒吗?
谢谢了!
CH582F作为从机,数量有几十个,定时读取传感器数据;CH582M做主机,每隔30分钟就去连接从机并获取从机数据。
初步思路是:采用白名单的方式,把从机的MAC做成一个列表,CH582M主机逐个根据MAC地址连接并读取数据。
请问:
1)这种情况下,从机需要处于什么状态?如果是在休眠可以被主机连接吗?
2)有没有类似的例程可以参考的?
3)从机不需要记录状态,是否可以每次获取传感器数据后,将数据保存在断电保持区,然后进入shutdown模式。但是这样还能被主机唤醒吗?
谢谢了!
1、数量有几十个,则不方便做同时连接,因为对RAM资源消耗比较大,可以采取轮询的方式进行连接并获取从机传递的数据。
主机与从机连接是通过MAC地址,如主机连接A从机,并接收到A从机传输过来的最后一个数据后,A从机可以给主机一个标志,主机进行断开当前蓝牙连接并修改待连接的MAC地址(B从机)。由于MAC地址已经被修改,则不会再次连接A从机,进行连接其他设备如B从机,连接B从机后获取数据,获取完成后根据标志进行断开的判断并修改待连接的MAC地址(C从机)。
2、开启Sleep可以连接,睡眠由协议栈管理,应用层只需要处理唤醒的状态即可;
3、直接参考Central和Peripheal的例程,用户程序需要自行修改;
4、唤醒包含两种:GPIO唤醒和TMOS任务唤醒。睡眠包含四种:常用的是Sleep和Shutdown。从机如果长时间不使用可以进行Shutdown方式的睡眠,功耗更低,但是唤醒后会复位,因此无法连接蓝牙。根据TMOS任务或者外部GPIO中断进行唤醒并切换Shutdown睡眠为Sleep模式的睡眠,然后连接主机进行数据传输。
“开启Sleep可以连接” ===》也就是说,从机从Shutdown切换为Sleep模式后,不需要再做什么操作,等待下一次主机主动连接获取数据就行了。
是这个意思吗?
建议使用CH582进行实际的使用来验证该情况,开启睡眠通过宏的方式进行开启,开启后烧录至芯片使用手机进行搜索。
提供一份博客进行参考:
CH573芯片Sleep说明(RTC程序说明) - SweetTea_lllpc - 博客园 (cnblogs.com)