Ich versuche derzeit auf dem Blackfin eine SPI Schnittstelle zu realisieren. Es soll ein Master sein und mit den Einstellungen der Spi-Parameter habe ich auch keine Probleme allerdings mit den Pins. Inzwischen vermute ich das ich erst mit dem Port_Fer Register die entsprechenden Pins enablen muss. Das Problem daran ist nun, dass ich nicht weiß wie ich auf das Port_Fer Register zugreifen kann um es zu ändern. Ich verwende eine ursprünglich funktionierende SPI-Schnittstelle welche ich nur vereinfacht habe und welche offenbar auch intern funktioniert. Mein Programm derzeit: void SPI_Test(void) { //Test Selfmade unsigned char *test = malloc(8); memset(test, 0xAA, 8); //Setup //*pFIO_DIR |= PF0; *pFIO_DIR |= PF15; *pFIO_DIR |= PF14; *pFIO_DIR |= PF13; *pFIO_FLAG_C |= PF15; *pSPI_BAUD = 25; *pSPI_CTL = MSTR | TIMOD01 | SPE; //SPI Mode 0 *pSPI_FLG = FLS1 | FLG1; *pSPI_TDBR = 25; *pPORT_MUX = (~(PF0 | PF1 | PF2)); //Write_Status if (*pSPI_CTL & CPHA) { *pSPI_FLG &= ~FLG1; } else { *pFIO_FLAG_C = PF1; } for(dummy=0; dummy<100; dummy++); WaitForSPIF(); *pSPI_TDBR=WRSR; WaitForSPIF(); for(dummy=0; dummy<100; dummy++); tempchar = rbyte(); WaitForSPIF(); *pSPI_TDBR=0; WaitForSPIF(); for(dummy=0; dummy<100; dummy++); tempchar = rbyte(); WaitForSPIF(); *pSPI_TDBR=WRDI; WaitForSPIF(); for(dummy=0; dummy<100; dummy++); tempchar = rbyte(); for(dummy=0; dummy<100; dummy++); if (*pSPI_CTL & CPHA) { *pSPI_FLG |= FLG1; } else { *pFIO_FLAG_S = PF1; } //Disable_SPI(); *pSPI_CTL &= ~SPE; free(test); } Der dazugehörige Header im Anhang Es ist nun der Fall, dass die pointer auf alle Register mit ausnahme von Port_Fer funktionieren. Die möglichkeit direkt auf das Register würde auch noch offenstehen, aber ich nicht wie. Bitte um Hilfe lg Draugluin
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.