基于CH592的2.4G程序说明_Dongle篇(CH9160)
CH9160Dongle程序说明
RF收发控制器在新版2.4G通讯库的加持下,目前可以做到8000+Hz的空中交互速度,
搭配CH9160Dongle的高速USB2.0,可实现最高8k的USB上报率,注意点:如果使用最高8k通讯的2.4G程序时,需控制交互包包长在5-7字节以内,超过后通讯速率会打折扣。
这里简单介绍下程序中的各部分的接口含义以及用法:
1、串口调试初始化,
2、CH9160初始化,
3、与Mouse一样,需要使用Tmos完成任务管理,需对Tmos进行初始化,凡是程序中一切带Tmos前缀的函数及变量均需要放在初始化之后才可调用,否则会造成程序卡死,
4、主循环处理,
5.1、RF参数初始化,
5.2、RF收发DMA初始化,DMA收发缓存队列是头接尾循环调用的,
6.1、RF收发状态回调,
6.2、上电后前三秒可绑定任意设备,
6.3、程序中设置的超过三秒执行这个任务,此时也就是上电后超过3s后回连符合存储的mac地址的设备,
6.4、RF绑定状态回调,
①gDeviceId为绑定时双方协商后给出的对方ID号,后续可通过此ID进行数据的准确传达;
②当对方的mac地址符合SpeedList中的peerInfo时,那么在绑定阶段被Dongle获取到时就会立即进入RF绑定回调;
③当pSta->status=0时,代表连接绑定成功,会产生一次中断,进入一次2.4G回调函数;
当pSta->status=0x17(对应图中的bleTimeout),会产生一次中断,进入一次2.4G回调函数;在产生此超时中断之后, pSta->status会在底层自动转为0x01,后续会持续进入2.4G回调,进行绑定回连操作。
7、当RF接收到对方发来的数据时,会产生一次RF中断,进入2.4G回调RF_ProcessCallBack中的if( sta & RF_STATE_RX )判断,
同时这包数据会存储到DMA当前的地址中,可以依靠下方这个函数读取数据,其中,
①当读取(pDMARxGet->Status&STA_DMA_ENABLE)为0时,代表缓存中有数据可读取,非0代表无数据;
②*pLen为当前DMA所指向数据地址的有效数据长度,返回值为当前DMA所指向数据的首地址;
8、当使用者需要发送一包数据给对方时,可调用以下函数,其中,
①通过判断(pDMATxGet->Status & STA_DMA_ENABLE)标志,可知当前发送缓存是否占满(是否满足发送条件);
②定义了一个指针*p去获取当前发送队列的DMA填包地址;
③p->type,这里可以理解为id号,我们RF是通过ID进行身份辨认以及数据精准收发的,gDeviceId是在绑定时通过绑定回调得到的参数;
④将pDMATxGet->Status = STA_DMA_ENABLE;置位,告知底层有数据要发送,在底层发送完成之后会将标志自动置0;
⑤发送完数据,pDMATxGet发送缓存地址指向下个地址;