www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ft4232h FPGA


Autor: Sabine Mühller (zizo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Sabine Mühller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.