基于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发送缓存地址指向下个地址;

 

posted @ 2023-11-04 13:41  oTvTo  阅读(381)  评论(0编辑  收藏  举报