Gast
#3963087
Hallo mikrocontroller Community,
Ich versuche seit einiger Zeit den TWI Bus in gang zu bekommen.
Der Controller ist ein SAM4E.
Mein erstes Ziel ist einfach mal eine start condition im Oszi zu sehen.
Mein Code sieht so aus:
void i2c_init (void)
{
MATRIX->CCFG_SYSIO |= (1 << 4) | (1 << 5); //PB4 und PB5 aktivieren
= 0x30
pio_set_peripheral (PIOB, PIO_PERIPH_A, (PIO_PB4A_TWD1 |
PIO_PB5A_TWCK1)); //TWD1 PB4 zuweisen
//pio_set_peripheral (PIOB, PIO_PERIPH_A, PIO_PB5A_TWCK1); //TWCK1
PB5 zuweisen
pmc_enable_periph_clk ( ID_TWI1 ); //TWI1 mit Takt versorgen
TWI1->TWI_CR = (TWI_CR_SVDIS | TWI_CR_MSEN); //Slave Mode Disable |
Master Mode Enable
TWI1->TWI_MMR = (TWI_MMR_DADR(0x48) | TWI_MMR_MREAD); //Adresse
die angesprochen werden soll (TempSensor) + Master soll lesen
}
Die i2c_init wird einmal beim start ausgeführt.
Ist dies soweit korrekt oder habe ich schon hier einen Fehler gemacht.
In der Main wird dann der Startbefehl gesendet
TWI1->TWI_CR = TWI_CR_START;
Vielleicht kann mir ja jemand behlflich sein.
Schonmal im Vorraus vielen Dank.
PS. beide Signale sind nach dem i2c_init auf high