ADUC7026 UART und FT232R

OP (Firma: FH Köln) #1068084
Lesenswert?
• ▲
▼
Hallo
Ich bin neu hier im Forum und hoffe das einer von euch mir helfen kann.
Ich habe ein kleines Board mit einem aduc7026 prozessor und einem FT232R 
Baustein um die uart schnittstelle auf usb zu konvertieren. Nun versuche 
ich
Kommunikation zwischen meinem PC und meinem Controller herzustellen. 
Leider nur mit begrenzem erfolg. Sowohl in die eine wie auch in die 
andere Richtung bekomme ich Daten(auch immer die selben) 
bedauerlicherweise aber nicht die die ich bekommen sollte. Ich habe mal 
das PC und das Controller Programm zumindest die wichtigen teile dran 
gepackt.

PC: Programm

ftStatus = FT_CreateDeviceInfoList(&iNumDevs);
  FT_Open(0, &ftHandle);

  // Einsteller der Baud Rate auf 9600
  ftStatus = FT_SetBaudRate(ftHandle, 9600);
        //Einstellung der Schnittstelle
  ftStatus = FT_SetDataCharacteristics(ftHandle, FT_BITS_8, 
FT_STOP_BITS_1,FT_PARITY_NONE);

    FT_GetStatus(ftHandle,&RxBytes,&TxBytes,&EventDWord);
    if (RxBytes > 0) {
      ftStatus = FT_Read(ftHandle,RxBuffer,RxBytes,&BytesReceived);
      printf("%d",RxBuffer[0]);


    TxBuffer[0]=i;
    TxBuffer[1]=i+1;
    TxBuffer[2]=i+2;
    TxBuffer[3]=i+3;
    TxBuffer[4]=i+4;
    i++;

    ftStatus = FT_Write(ftHandle, TxBuffer,4/* sizeof(TxBuffer)*/, 
&BytesWritten);

Controller:

    int udiv0;
    GP1CON = 0x11;

    switch (POWCON & 0x03) {
        case 0: udiv0 = 0x88; break;  // HCLK = 41.78MHz; UART 9600 kbps
        case 1: udiv0 = 0x44; break;  // HCLK = 20.89MHz; UART 9600 kbps
        case 2: udiv0 = 0x22; break;  // HCLK = 10.45MHz; UART 9600 kbps
        case 3: udiv0 = 0x11; break;  // HCLK =  5.22MHz; UART 9600 kbps
        default:udiv0 = 0x88; break;  // HCLK = 41.78MHz; UART 9600 kbps
    }

    COMCON0 = 0x80;
    COMDIV0 = udiv0;
    COMDIV1 = 0x0;
    COMCON0 = 0x03;
    COMDIV2 = 0x0;

    GP1CON = 0x00000011;
    GP1DAT = 0xFF000000;

    if(0x01==(COMSTA0 & 0x01))
    {
    //  for(i=0;i<3;i++)
    //  {
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[0]=COMRX;
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[1]=COMRX;
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[2]=COMRX;
        while(!(0x001==(COMSTA0 & 0x01))) {}
           rt[3]=COMRX;
    //  }

Ich bin noch ziemlich unerfahren was Mikrocrontroller an geht und hoffe 
das jemand von euch mir helfen kann. Vieleicht gibt es ja auch gute 
Programmbeispiele die ich bislang nicht gefunden habe. Ich bin für jeden 
Rat dankbar :)

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.