先加软件包
下面两个参数根据实际情况修改
修改board.h里面的引脚定义
添加驱动
/********EEPROM掉电保存*********/
uint8_t IIC2_WriteBuffer_Test[16], IIC2_ReadBuffer_Test[16];
void iic_write_test(void)//iic写
{
uint16_t i;
for(i=0; i<16; i++)
IIC2_WriteBuffer_Test[i] = rand();
if(at24cxx_write(i2c2_bus, 0, IIC2_WriteBuffer_Test, 16) == RT_EOK)
rt_kprintf("\r\n EEPROM 24C64 Write Test OK \r\n");
else
rt_kprintf("\r\n EEPROM 24C64 Write Test False \r\n");
}
void iic_read_test(void)//iic读
{
uint16_t i;
at24cxx_read(i2c2_bus, 0, IIC2_ReadBuffer_Test, 16);
for(i=0; i<16; i++)
rt_kprintf("0x%02X ",IIC2_ReadBuffer_Test[i]);
if(memcmp(IIC2_WriteBuffer_Test,IIC2_ReadBuffer_Test,16) == 0 ) /* check date */
rt_kprintf("\r\n EEPROM 24C64 Read Test OK\r\n");
else
rt_kprintf("\r\n EEPROM 24C64 Read Test False\r\n");
}
void iic_rw_test(void)
{
i2c2_bus = at24cxx_init(M24C64_I2C_BUS_NAME,0x50);//必须为0x50
if (!i2c2_bus)
{
rt_kprintf("at24cxx_init %s failed!\n", M24C64_I2C_BUS_NAME);
return;
}
iic_write_test();
rt_thread_mdelay(200);
iic_read_test();
}
MSH_CMD_EXPORT(iic_rw_test, test iic M24C64);
void iic_read(int argc, char**argv)//iic读
{
if(argc != 2)
{
rt_kprintf("Only one parameter bytes num can be entered\r\n");
return;
}
else
{
uint8_t byte_num = atoi(argv[1]);
uint8_t testbuffer[byte_num];
at24cxx_read(i2c2_bus, 0, testbuffer, byte_num);
rt_kprintf("read EEPROM 24C64:\n");
for(uint8_t i=0; i<byte_num; i++)
rt_kprintf("%c",testbuffer[i]);
rt_kprintf(" read complete\n");
}
}
MSH_CMD_EXPORT(iic_read, iic M24C64 read: <bytes>);