基于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;

 


 

posted on 2023-11-04 09:26  ZDeST  阅读(388)  评论(0编辑  收藏  举报