Estoy teniendo un problema para conseguir I2C que se ejecuta con una PIC32MX795F512L. No fue reconocer la dirección de bytes que se envían, así que me puse un analizador lógico en SDA y SCL y consiguió la traza se muestra a continuación:
Las dos excursiones en la línea SCL son los únicos que se producen. Así que no entiendo por qué sólo hay dos, en lugar de uno por poco más el inicio y parada de condiciones. Esto es evidente por qué nunca veo ningún tipo de reconocimiento.
También, SCL es baja todo el tiempo antes de que estos secuencia empieza, y yo esperaba que fuera alto y luego se ir baja con SDA alto para indicar una condición de inicio. He comprobado que tengo pullups en ambos SCL y SDA.
El código que estoy utilizando es directamente de Microchip I2C código de ejemplo. Aquí es la parte pertinente:
// Start the transfer to write data to the EEPROM
if( !StartTransfer(FALSE) )
{
while(1);
}
// Transmit all data
Index = 0;
while( Success && (Index < DataSz) )
{
// Transmit a byte
if (TransmitOneByte(i2cData[Index]))
{
// Advance to the next byte
Index++;
// Verify that the byte was acknowledged
if(!I2CByteWasAcknowledged(EEPROM_I2C_BUS))
{
DBPRINTF("Error: Sent byte was not acknowledged\n");
Success = FALSE;
}
else
{
Success = TRUE;
}
}
else
{
Success = FALSE;
}
}
// End the transfer (hang here if an error occured)
StopTransfer();
if(!Success)
{
while(1);
}
Se pone a la I2CByteWasAcknowledged llamada y se produce un error. Alguien tiene alguna sugerencia sobre cómo obtener I2C en un PIC32 a trabajar con el Periférico de la Biblioteca de código?