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
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.