我用你們的CH375評估板連別人的光纖光譜儀,采數(shù)據(jù),一次采樣有4096字節(jié)(2048點) 現(xiàn)在不知道是程序問題還是375速度不夠,感覺64字節(jié)的包和包之間丟數(shù)據(jù),請問該怎樣辦?
圖A是正確的數(shù)據(jù),光纖光譜儀連計算機軟件時用bushound抓的 圖B用375A評估板的接收程序如下 void Read_Usb_Data( void ) // 讀取數(shù)據(jù) { unsigned char i,len,s; len=0x40; while(len==0x40){ toggle_recv(tog_1); s=issue_token( ( 0x82 << 4 ) | DEF_USB_PID_IN ); if(s==USB_INT_SUCCESS) { /* SETUP階段DATA0操作成功 */ len=rd_usb_data(buffer); for( i=0;i!=len;i++ ) printf("%02x ",(unsigned short)buffer[i]); tog_1=tog_1 ? 0:1; } else if ( s==USB_INT_RET_NAK ){ mDelaymS(2); } } }
圖C用375A評估板的程序如下,我縮短了包和包之間的單片機處理時間,效果好許多如圖C 但是曲線還是不連續(xù) void Read_Usb_Data( void ) // 讀取數(shù)據(jù) { unsigned char i,len,s; unsigned char j; unsigned int k,lena; len=0x40; lena=0x0; k=0x0; while(len==0x40){ toggle_send(tog_1); s=issue_token( ( 0x82 << 4 ) | DEF_USB_PID_IN ); tog_1=tog_1 ? 0:1; if(s==USB_INT_SUCCESS) { /* SETUP階段DATA0操作成功 */ toggle_recv(tog_1); len=rd_usb_data(buffer); for( i=0;i!=0x40;i++ ) { DATA_BUFFER[k]=(unsigned short)buffer[i]; k++; } tog_1=tog_1 ? 0:1; lena=lena+len; } else if ( s==USB_INT_RET_NAK ){ mDelaymS(2); } } for( k=0;k!=lena;k++ )printf("%02x ",(unsigned short)DATA_BUFFER[k]); } 請問怎樣改程序能進一步加快,包和包之間的時間?。?/p>