1、在RT-Thread Studio中添加软件包的方式 使用I2C操作AT24C64。
2、需要配置I2C外设,则第一步需要打开board.h,找到I2C配置,如下图所示:
3、根据I2C Config进行相应步骤配置
3.1 打开RT-Thread Settings,找到"软件模拟I2C"配置项,对齐进行配置,如下图所示:
3.2 然后在"使用I2C设备驱动程序"中,勾选"使用GPIO模拟I2C",然后保存如下图所示:
3.3 在board.h中定义使用I2C宏,以及引脚配置,此处我使用的是I2C1,所对应的引脚为PB6,PB7,引脚需要对应相应原理图确定,如下图所示:
4、然后再打开"RT-Thread Settings",然后点击添加软件包–》搜索你需要使用I2C操作的软件包名,譬如此处我使用的的是AT24C64,软件包安装成功之后,会在左侧多出一个packages文件夹如下图所示:
5、安装完软件包之后,就可以使用软件包提供的的函数进行操作:
#define AT24CXX_ADDR (0xA0 >> 1) //A0 A1 A2 connect GND
#define I2C_NAME "i2c1"
at24cxx_device_t at24c64_dev ;
void at24c64_Config(void)
{
at24c64_dev = at24cxx_init(I2C_NAME,AT24CXX_ADDR);
if(at24c64_dev == RT_NULL)
{
LOG_E("at24cxx_init failed\n");
return ;
}
}
void at24c64_WriteData(rt_uint32_t writeAddr , rt_uint8_t *data,rt_uint32_t len)
{
rt_err_t res ;
res = at24cxx_check(at24c64_dev);
if(res == RT_ERROR)
{
LOG_E("at24cxx_check error!\n");
return ;
}
res = at24cxx_write(at24c64_dev, writeAddr, data, len);
if(res == RT_ERROR)
{
LOG_E("at24cxx_write failed!\n");
return ;
}
}
void at24c64_ReadData(rt_uint32_t readAddr , rt_uint8_t *data,rt_uint32_t len)
{
rt_err_t res ;
res = at24cxx_check(at24c64_dev);
if(res == RT_ERROR)
{
LOG_E("at24cxx_check error!\n");
return ;
}
res = at24cxx_read(at24c64_dev, readAddr, data, len);
if(res == RT_ERROR)
{
LOG_E("at24cxx_read failed!\n");
return ;
}
}
//在main函数调用上面函数即可
rt_uint8_t buf[10] = {'\0'};
at24c64_Config(); //at24c64
at24c64_WriteData(0,(rt_uint8_t *)"world",5);
rt_thread_mdelay(2000);
at24c64_ReadData(0,buf,5);
rt_kprintf("buf == %s\n",buf);
6、使用以及运行结果