我把CH582的接收模拟成一个USB 的HID设备,当接收到2.4G的信号后,通过USB上传到主机,现在在无线接收的位置将数据发送出去代码如下,这样USB主机无法接收到数据:
case RX_MODE_RX_DATA:
{
if(crc == 1)
{
PRINT("crc error\n");
}
else if(crc == 2)
{
PRINT("match type error\n");
}
else
{
//DevEP2_OUT_Deal(16);//
for (int i = 0; i < 16; i++ )
{
pEP2_IN_DataBuf[i] = rxBuf[i];
}
DevEP2_IN_Deal( 16);
GPIOB_InverseBits(GPIO_Pin_18);
}
然而:
修改为如下代码片段则能够接收到数据:
case RX_MODE_RX_DATA:
{
if(crc == 1)
{
PRINT("crc error\n");
}
else if(crc == 2)
{
PRINT("match type error\n");
}
else
{
DevEP2_OUT_Deal(16);//
// for (int i = 0; i < 16; i++ )
// {
// pEP2_IN_DataBuf[i] = rxBuf[i];
// }
// DevEP2_IN_Deal( 16);
// GPIOB_InverseBits(GPIO_Pin_18);
}
已知我的DevEP2_OUT_Deal函数如下,我感觉没什么区别,不知道为什么不能接收?
void DevEP2_OUT_Deal( UINT8 l )
{ /* 用户可自定义 */
UINT8 i;
for ( i = 0; i < l; i++ )
{
pEP2_IN_DataBuf[i] = 0x05;//pEP2_OUT_DataBuf[i]+1;
}
DevEP2_IN_Deal( l );
}