基于CH592的2.4G程序说明_Mouse篇(CH592)
CH592Mouse程序讲解
1、根据自身需求以及成本考虑是否需要开启DCDC节省功耗,开启后功耗可降低至不开启时的50%-60%左右,以下为硬件设计所需添加的电容及功率电感参数:
(电感可选用WCH开发板上所使用的22uH电感:顺络SPH202012H220MT或者 YNR2016-220)
2、TMOS系统初始化,凡是程序中一切带Tmos前缀的函数及变量均需要放在初始化之后才可调用,否则会造成程序卡死,
3、鼠标初始化定时器
4、鼠标数据传向接收器端的填包速度(定时器中断传输速度),1000对应1ms/包传输速度即1Khz,2000对应2khz
5、DMA初始化,通过DMA实现数据收发,
6、2.4G通讯参数初始化,
7.1、设备端配对绑定任务,
7.2、绑定回调函数,
①gDeviceId为绑定时双方协商后给出的对方ID号,后续可通过此ID进行数据的准确传达;
②当对方的mac地址符合7.1中的bound.peerInfo时,那么在绑定阶段被本方获取到时就会立即进入RF绑定回调;
③当pSta->status=0时,代表连接绑定成功,会产生一次中断,进入一次2.4G回调函数;
当pSta->status=0x17(对应图中的bleTimeout),会产生一次中断,进入一次2.4G回调函数;在产生此超时中断之后, pSta->status会在底层自动转为0x01(对应下图中的FAILURE),后续会持续进入2.4G回调,进行绑定回连操作。
7.3、RF通讯产生的中断回调,
8、2.4G数据发送接口函数:
当使用者需要发送一包数据给对方时,可调用以下函数,其中,
①通过判断(pDMATxGet->Status & STA_DMA_ENABLE)标志,可知当前发送缓存是否占满(是否满足发送条件);
②定义了一个指针*p去获取当前发送队列的DMA填包地址;
③p->type,这里可以理解为id号,我们RF是通过ID进行身份辨认以及数据精准收发的,gDeviceId是在7.2节绑定时通过绑定回调得到的参数;
④将pDMATxGet->Status = STA_DMA_ENABLE;置位,告知底层有数据要发送,在底层发送完成之后会将标志自动置0;
⑤发送完数据,pDMATxGet发送缓存地址指向下个地址;
9、2.4G接收数据函数:
当RF接收到对方发来的数据时,会产生一次RF中断,进入2.4G回调RF_ProcessCallBack中的if( sta & RF_STATE_RX )判断,
同时这包数据会存储到DMA当前的地址中,可以依靠下方这个函数读取数据,其中,
①当读取(pDMARxGet->Status&STA_DMA_ENABLE)为0时,代表缓存中有数据可读取,非0代表无数据;
②*pLen为当前DMA所指向数据地址的有效数据长度,返回值为当前DMA所指向数据的真实地址;
10、定时器0填充数据处,最终可将传感器数据填充到这里即可完成鼠标最基础的数据补充,当前为CH592+CH592通讯,因此最高上报率只有1k;