RT-Thread 之AT24C02调试

发布时间:2023年12月25日

一、RT-Thread Settings配置

1.打开配置界面

在这里插入图片描述

2.添加软件包

首先点开软件包里面的外围库与驱动程序,再点开AT24CXX驱动库。
在这里插入图片描述
在这里插入图片描述

二、添加与修改宏定义

第1步 在board.h打开#define BSP_USING_I2C1,并且修改对应的IO口。例如本人开发板的BSP_I2C1_SCL_PIN 为PB10,BSP_I2C1_SDA_PIN 为PB11(根据自己的硬件去进行修改)。
在这里插入图片描述
在这里插入图片描述
第2步 在 #include <at24cxx.h>修改芯片宏定义,本人开发板是at24c02(根据自己的硬件去进行修改)。

在这里插入图片描述

三、编写AT24C02用户层代码与测试

1.具体线程测试代码如下

#include <rtthread.h>
#include <rtdevice.h>
#include <at24cxx.h>
#define AT24CXX_ADDR (0xA0 >> 1)                      //A0 A1 A2 connect GND
#define I2C_NAME "i2c1"
at24cxx_device_t at24c02_dev ;
void at24c02_Config(void)
{
    at24c02_dev = at24cxx_init(I2C_NAME,AT24CXX_ADDR);
    if(at24c02_dev == RT_NULL)
    {
        rt_kprintf("at24cxx_init failed\n");
        return ;
    }
}

void at24c02_WriteData(rt_uint32_t writeAddr , rt_uint8_t *data,rt_uint32_t len)
{
    rt_err_t res ;
    res = at24cxx_check(at24c02_dev);
    if(res == RT_ERROR)
    {
        rt_kprintf("at24cxx_check error!\n");
        return ;
    }

    res = at24cxx_write(at24c02_dev, writeAddr, data, len);
    if(res == RT_ERROR)
    {
        rt_kprintf("at24cxx_write failed!\n");
        return ;
    }
}
void at24c02_ReadData(rt_uint32_t readAddr , rt_uint8_t *data,rt_uint32_t len)
{
    rt_err_t res ;
    res = at24cxx_check(at24c02_dev);
    if(res == RT_ERROR)
    {
        rt_kprintf("at24cxx_check error!\n");
        return ;
    }

    res = at24cxx_read(at24c02_dev, readAddr, data, len);
    if(res == RT_ERROR)
    {
        rt_kprintf("at24cxx_read failed!\n");
        return ;
    }
}
在main函数调用上面函数即可
//rt_uint8_t buf[10] = {'\0'};
//at24c02_Config();       //at24c02
//at24c02_WriteData(0,(rt_uint8_t *)"world",5);
//rt_thread_mdelay(2000);
//at24c02_ReadData(0,buf,5);
//rt_kprintf("buf == %s\n",buf);



2.应用层代码测试结果

通过用户层代码at24c02_WriteData(0,(rt_uint8_t *)“world”,5);将数据写入EEPROM,再通过 at24c02_ReadData(0,buf,5);将数据读出来,再通过串口将数据打印到串口助手显示,具体的结果如下图所示。
在这里插入图片描述

文章来源:https://blog.csdn.net/HEbo_123/article/details/132795108
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。