Setup: SDK version 2.0.0
Hardware: ESP-12E
I have connected DS3231 RTC module http://www.ebay.in/itm/252641600523 with ESP-12E as follows
Code: Select all
ESP-VCC -> DS3231-VCC
ESP-GND -> DS3231-GND
ESP-GPIO2 -> DS3231-SDA
ESP-GPIO14 -> DS3231-SCL
I hope my connections are correct as per i2c_master.h
Code: Select all
#define I2C_MASTER_SDA_MUX PERIPHS_IO_MUX_GPIO2_U
#define I2C_MASTER_SCL_MUX PERIPHS_IO_MUX_MTMS_U
#define I2C_MASTER_SDA_GPIO 2
#define I2C_MASTER_SCL_GPIO 14
#define I2C_MASTER_SDA_FUNC FUNC_GPIO2
#define I2C_MASTER_SCL_FUNC FUNC_GPIO14C FUNC_GPIO14
I have following code in user_main.c.
Code: Select all
void user_rf_pre_init(void)
{
}
uint32 ICACHE_FLASH_ATTR
user_rf_cal_sector_set(void)
{
enum flash_size_map size_map = system_get_flash_size_map();
uint32 rf_cal_sec = 0;
switch (size_map) {
case FLASH_SIZE_4M_MAP_256_256:
rf_cal_sec = 128 - 8;
break;
case FLASH_SIZE_8M_MAP_512_512:
rf_cal_sec = 256 - 5;
break;
case FLASH_SIZE_16M_MAP_512_512:
case FLASH_SIZE_16M_MAP_1024_1024:
rf_cal_sec = 512 - 5;
break;
case FLASH_SIZE_32M_MAP_512_512:
case FLASH_SIZE_32M_MAP_1024_1024:
rf_cal_sec = 1024 - 5;
break;
default:
rf_cal_sec = 0;
break;
}
return rf_cal_sec;
}
/******************************************************************************
* FunctionName : user_init
*******************************************************************************/
void user_init(void)
{
uart_reattach();
os_printf("\r\n\r\n============SDK version:%s============\r\n", system_get_sdk_version());
i2c_master_gpio_init();
i2c_master_init();
i2c_master_start();
// write address & direction
i2c_master_writeByte((uint8)(0x68 << 1));
if (!i2c_master_checkAck()) {
os_printf("Error in writing to DS3231 on i2C\r\n");
i2c_master_stop();
return;
}
i2c_master_stop();
}
I am getting print
that means i2c_master_checkAck() is returnnig false.Error in writing to DS3231 on i2C
May I request experts to please let me know why this code is not working.