Estoy utilizando la EEPROM M24LR16-E que es un dispositivo I2C:
Estoy utilizando la Junta de Desarrollo Nordic nRF52 para que se implemente la EEPROM.
En el SDKv12 de Nordic, hay una aplicación de ejemplo que utiliza TWI para buscar dispositivos I2C conectados con el microcontrolador. Consulte el fragmento de código a continuación para ver el procedimiento de escaneo.
Cuando ejecuto esto, el M24LR16-E no puede ser detectado. Sin embargo, cuando conecto un sensor de presión barométrica de Bosch (BMP180) al bus I2C, se detectan ambos y se imprimen los códigos de selección de dispositivo correctos.
¿Por qué sucede esto? Sin embargo, las funciones de lectura y escritura que escribí para el M24LR16-E están funcionando. ¿Tiene esto algo que ver con los problemas de tiempo?
Gracias de antemano.
Escaneando el procedimiento del dispositivo I2C:
for (address = 1; address <= 127; address++)
{
err_code = nrf_drv_twi_rx(&m_twi, //twi config structure
address, //device select code
&sample_data,sizeof(sample_data));
if (err_code == NRF_SUCCESS)
{
detected_device = true;
NRF_LOG_INFO("TWI device detected at address 0x%x.\r\n", address);
}
NRF_LOG_FLUSH();
}
if(!detected_device)
{
NRF_LOG_INFO("No device was found.\r\n");
NRF_LOG_FLUSH();
}
También vea la imagen de las salidas (EEPROM y sensor de presión conectados al bus I2C):