系统采用60HZ的速率传输,在传输4-5帧后就会丢掉20帧的数据;采用120HZ的速率传输,在传输4-5帧后就会丢掉40帧的数据。截图如下(每组数据的第三位为帧号,可以看到从132帧跳到了172帧,且传输4帧后从175帧跳到了215帧)
硬件为Freescale公司的MKL25Z128VLH4芯片和Atmel公司的SAMA5D31微控制器,两者之间的连接方式为USB连接。 KL25作为发送端,其数据发送过程调用的函数均为系统本身生成,发送端整个过程为: 1、调用 USB_Class_Mems_Send_Data 函数用于发送数据; 2、USB_Class_Mems_Send_Data 函数调用 USB_Desc_Get_Endpoints 函数返回非控制端点信息 3、USB_Class_Mems_Send_Data 函数调用 USB_Class_Send_Data 函数在收到指令时调用设备发送数据 4、USB_Class_Send_Data 函数调用 USB_DCI_Send_Data 函数配置控制器通过设置BDT在发送端点发送数据 SAMA5D31微控制器作为接收端,过程为: 1. 打开设备 sprintf(strbuf,"/dev/hmcd-usb%d", 0); fd0 = open(strbuf, O_RDONLY); 2. 设置频率(通过控制模式向下发送到MCU) ret=ioctl(fd0,USB_HMCD_START_SINK_120HZ,NULL); //USB_HMCD_START_SINK_120HZ=0x64 3. 进入while(1)连续读取数据 count = read(fd0, inbuffer,460);//inbuffer[500]={0}; 从fd0中读取460字节数据放到inbuffer中,count返回实际读到字节 4.在A5中显示发送的数据 5.while(1)循环结束,关闭设备//死循环不关闭
整个发送和接收过程中没有设置定时的部分,但是数据掉帧很稳定,无法查明是哪里出现了问题,特此求助,谢谢!
|