Gast
#1933598
Hi, ich versuche SPI zum laufen zu bekommen. Aber es kommt weder CLK
noch sointein Signal raus. Messen tu ich mit Logicanalyzer. Der Codee
wird auch ausgeführt, bin schrittweise durchgegangen. Hab ich noch ne
Einstellung uebersehen?
Mein Code:
//einstellen des Modes
PERIPHSEL0 = 0x6902; // parallel port: mode 6, serial port1: mode
2
// und init des SPI
void spi_init(void){
int i;
SYS_PRCR = SYS_PRCR & ~0x0080; //take out of reset
IDLE_PCGCR = IDLE_PCGCR & ~0x0002; //enable clock
SPI_REG_CCR = SPI_REG_CCR & ~0x8000; //disable clock
SPI_REG_CDR = 0x0363; //clk=115200 hz
SPI_REG_CCR = SPI_REG_CCR | 0x8000; //enable clock
SPI_REG_DCR1 = 0x0000;
SPI_REG_DCR2 = 0x0000;
for(i=0; i<0xFFF; i++) { }
}
// und senden der Daten
void spi_tx(Int16 value){
unsigned short i;
//8 bit write
SPI_REG_CMD1 = 0x0000; //1 character
SPI_REG_DAT2 = value << 8;
SPI_REG_DAT1 = 0x0000;
SPI_REG_CMD2 = 0x003A; //CS0, 8 bits per character, write
i=0;
while(SPI_REG_STAT1 & 0x0002 == 0) { if(i++ == 0xFFFF) {break;} }
//wait for CC=1
i=0;
while(SPI_REG_STAT1 & 0x0001 != 0) { if(i++ == 0xFFFF) {break;} }
//wait for BUSY=0
}