RT-Thread 之AT24C02调试
2023-12-25 11:24:57
一、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
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!