Hi, ich habe ein FPGA mit Ft4232h verbunden. Dafür habe ich TXD und RXD verwendet,d.h asynchrone UART . Von meine Terminal Programm in Visual Basic 2008 sende ich ein Byte zum FPGA dann antwortet er mit 512 Byte. ich habe versucht mit 1024 Byte von FPGA zum Ft4232h zu senden. leider schließt sich mein Terminal Programm. Warum kann ich nicht mehr al 512 Byte schicke, obwohl der FIFO 2KByte ist? Ich habe mit mein Osci gemessen ich habe festgestellt dass die Daten jede 15 ms übertragen werden, d.h der FT4232h sendet ein Byte jede 15 ms um die Daten von FPGA zu holen. Kann mir jemand sagen warum so lang dauert? Wie kann ich die Daten-Übertragung erhöhen? Ich habe mir überlegt dass ich auf der Byte der von Ft4232 zu FPGA zu verzichten, aber wie kann der FPGA feststellen dass der Ft4232h bereit ist für die Daten-Übernahme? S. Code: Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick Do While ne < 1 ne = ne + 1 x = 0 Do While x < 1 x = x + 1 BytesWritten = 0 senddaten = 1 Do strwritebuffer = Chr(senddaten) 'ein Byte zum FPGA senden ' Write string data to device FT_Status = FT_Write_String(FT_Handle0, strwritebuffer, 1, BytesWritten) If FT_Status <> FT_OK Then Exit Sub End If If senddaten = 1 Then senddaten = 0 ElseIf senddaten = 0 Then senddaten = 1 End If Loop Until (BytesWritten = 1) Loop '''''''''''''''''''Auslesen die 512 Byte von FPGA i = 0 Wartenaufmehr: 'Get auf number of Byte waiting to be read FT_Status = FT_GetQueueStatus(FT_Handle0, FT_RxQ_Bytes) If FT_Status <> FT_OK Then Exit Sub End If i = i + 1 If i > 2000000 Then Exit Sub End If If FT_RxQ_Bytes < 512 Then GoTo Wartenaufmehr BytesRead = 0 TempStringData = " " Do BytesRead = 0 FT_Status = FT_Read_String(FT_Handle0, TempStringData, FT_RxQ_Bytes, BytesRead) If FT_Status <> FT_OK Then Exit Sub End If Loop Until (FT_RxQ_Bytes = BytesRead) 'Or (fl_Timeout = True) Or (ftFatalError = True) If FT_RxQ_Bytes = BytesRead Then End If Loop End Sub
Hi, --Kann mir jemand sagen warum so lang --dauert? ich habe Latency Timer auf 1 eingestellt, dann habe ich Datenübertragung in 1m erreicht. d.h ich habe die erste Frage gelöst. kann jemand mir sagen was passiert , wenn ich es auf 0 einstelle? ich hab Beschreibung im Datenblatt nicht verstanden! Datenblatt: Latency Timer. This is really a feature of the driver and is used to as a timeout to flush short packets of data back to the PC. The default is 16ms, but it can be altered between 0ms and 256ms. At 0ms latency you get a packet transfer on every high speed microframe. FT_STATUS FT_Read (FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpdwBytesReturned) wenn ich dwBytesToRead auf 1024 einstelle dann hängt mein Programm. Wie kann ich das Buffer von Lesen auf 1024 einstelle? Danke S.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.