När jag försöker generera ett START condition så händer absolut ingenting, varken i registren eller fysiskt på pinnarna.
Jag har satt PINSEL så att pinnarna kopplas till I2C1.
PINMODE_OD är satt så att pinnarna är open-drain.
Det finns 4.7k pull-up:er externt.
Power-control biten för för I2C1 är på.
Klockningen är på med halva CPU-klockan (dvs 50 MHz) och bussen är uppsatt för 400 kHz.
Konfigureringen:
Kod: Markera allt
PINSEL1_bit.P0_19 = 3; // Pin function SDA1
PINSEL1_bit.P0_20 = 3; // Pin function SCL1
PINMODE_OD0_bit.P0_19 = 1; // SDA as open drain
PINMODE_OD0_bit.P0_20 = 1; // SCL as open drain
PCONP_bit.PCI2C1 = 1; // Enable power and clock
PCLKSEL1_bit.PCLK_I2C1 = 2; // I2C clock = 50 MHz
I2C1CONSET_bit.I2EN = 1;
I2C1SCLH = 125; // 50% Low/High SCL clock, 400 kHz
I2C1SCLL = 125;
Kod: Markera allt
I2C1CONCLR_bit.SIC = 1;
I2C1CONSET_bit.STA = 1; // Generate START condition
while( !(I2C1CONSET_bit.SI) ); // Wait for status change
I2C1CONCLR_bit.STAC = 1;
Jag måste ha missat något, men vad?