0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32G0开发笔记:EEPROM M24C02的使用方法

CHANBAEK 来源:电子技术攻城狮 作者:MakerInChina.cn 2023-01-16 15:19 次阅读

使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为EEPROM M24C02的使用方法。

1 新建项目

  • 建立eeprom项目

PIO的Home页面新建项目,项目名称eeprom,选择开发板为 MonkeyPi_STM32_G070RB,开发框架选择libopencm3;

  • 项目建立完成后在src目录下新建main.c主程序文件;
  • 修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:
1upload_protocol = cmsis-dap
2debug_tool = cmsis-dap

2 编写程序

首先从之前的I2C项目中拷贝sw_i2c库文件夹到当前项目的lib目录下:

image-20220925192507020

本次不使用串口打印,直接使用SEGGER rtt打印,因此将SEGGER RTT也放置在lib目录下,便于调试打印:

1void log(const char* fmt, ...)
2{
3    va_list va;
4    va_start(va, fmt);
5    SEGGER_RTT_vprintf(0,fmt,&va);
6    va_end(va);
7}
2.1 EEPROM 写数据
1static inline bool m24cxx_write_one_byte(uint8_t addr, uint8_t data)
2{
3    uint8_t buffer[2];
4
5    buffer[0] = addr;
6    buffer[1] = data;
7    return sw_i2c_transfer(M24CXX_DEVICE_ADDR, buffer, 2, 0, 0);
8}
2.2 EEPROM 读数据
1static inline bool m24cxx_read_one_byte(uint8_t addr, uint8_t *ptr)
2{
3    return sw_i2c_transfer(M24CXX_DEVICE_ADDR, &addr, 1, ptr, 1);
4}

3 连接硬件进行测试

将EEPROM模块与开发的I2C引脚连接好:

image-20220925192735228

先执行程序进行写入:

1int main(void)
 2{
 3    sys_clock_setup();
 4
 5    log("init sw i2c.\\r\\n");
 6
 7    sw_i2c_init();
 8
 9    log("eeprom read testing.\\r\\n");
10
11    uint8_t addr = 0x01;
12    uint8_t read_data=0;
13    uint8_t write_data = 0x88;
14
15    #if 0
16        m24cxx_read_one_byte(addr,&read_data);
17
18        if(read_data == write_data){
19            log("eeprom write ok\\r\\n");
20        }else{
21            log("ERR:EEPROM write failed.\\r\\n");
22        }
23
24    #endif
25
26    log("eeprom write.\\r\\n");
27
28    m24cxx_write_one_byte(addr, write_data);
29
30    delay_ms(5);//wait write done
31
32    while(1){/*do nothing*/}///!!!not go here.
33    return 0;
34}

然后将读取部分的程序注释打开:

1    #if 1
 2        m24cxx_read_one_byte(addr,&read_data);
 3
 4        if(read_data == write_data){
 5            log("eeprom write ok\\r\\n");
 6        }else{
 7            log("ERR:EEPROM write failed.\\r\\n");
 8        }
 9
10    #endif

将开发板断电后重新上电可以看到测试正确:

image-20220927211659396

注:写入数据根据M24C02的数据手册,其 Write time 为5ms,因此写入后要进行等待其写入完成。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • STM32
    +关注

    关注

    2265

    文章

    10870

    浏览量

    354682
  • 仿真器
    +关注

    关注

    14

    文章

    1016

    浏览量

    83621
  • EEPROM
    +关注

    关注

    9

    文章

    1010

    浏览量

    81395
  • 串口
    +关注

    关注

    14

    文章

    1543

    浏览量

    76157
  • 开发板
    +关注

    关注

    25

    文章

    4933

    浏览量

    97157
收藏 人收藏

    评论

    相关推荐

    帮忙解释下M24C02 PRE脚是干什么用的!

    ST M24C02 PRE脚是干什么用的?我这样对吗?地址A0。用at24c02 程序读写都没问题,但是用M24C02地址都写不进去。M24C02
    发表于 02-06 15:38

    STM32G0开发笔记:FreeRTOS和FreeModbus库使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为FreeRTOS和FreeModbus库使用。
    的头像 发表于 01-16 14:44 5432次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:FreeRTOS和FreeModbus库使用

    STM32G0开发笔记:FreeRTOS和CLI组件使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为FreeRTOS和CLI组件使用。
    的头像 发表于 01-16 14:47 3397次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:FreeRTOS和CLI组件使用

    STM32G0开发笔记:使用FreeRTOS系统的队列Queue

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统的队列Queue。
    的头像 发表于 01-16 14:50 1324次阅读

    STM32G0开发笔记:使用FreeRTOS系统

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为使用FreeRTOS系统。
    的头像 发表于 01-16 15:07 2314次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:使用FreeRTOS系统

    STM32G0开发笔记:使用ADC进行NTC温度采集

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下使用ADC进行NTC温度采集。
    的头像 发表于 01-16 15:12 9099次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:使用ADC进行NTC温度采集

    STM32G0开发笔记:用PWM来实现LED呼吸灯效果

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面使用PWM来实现LED呼吸灯效果。
    的头像 发表于 01-16 15:15 2202次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:用PWM来实现LED呼吸灯效果

    STM32G0开发笔记:SD卡模块的使用方法

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SD卡模块的使用方法
    的头像 发表于 01-19 16:27 2230次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:SD卡模块的<b class='flag-5'>使用方法</b>

    STM32G0开发笔记:SPI接口的基本使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面介绍SPI接口的基本使用。
    的头像 发表于 01-17 10:38 3022次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:SPI接口的基本使用

    STM32G0开发笔记:多通道ADC与DMA的使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为多通道ADC与DMA的使用。
    的头像 发表于 01-17 10:41 6818次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:多通道ADC与DMA的使用

    STM32G0开发笔记:定时器timer的基本使用方法

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为定时器timer的基本使用方法
    的头像 发表于 01-17 10:43 3586次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:定时器timer的基本<b class='flag-5'>使用方法</b>

    STM32G0开发笔记:串口中断的使用

    使用Platformio平台的libopencm3开发框架来开发STM32G0,以下为串口中断的使用。
    的头像 发表于 01-17 10:46 2273次阅读

    STM32G0开发笔记:GPIO接按键的使用方式

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为GPIO接按键的使用方式。
    的头像 发表于 01-17 10:48 1727次阅读

    STM32G0开发笔记:LED灯示例

    使用Platformio平台的libopencm3开发框架来开发STM32G0,下面为LED灯示例。
    的头像 发表于 01-17 10:52 1370次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:LED灯示例

    STM32G0开发笔记:使用libopencm3库

    使用Platformio平台的libopencm3开发框架来开发STM32G0开发环境为VSCode+PIO插件,这里以开发
    的头像 发表于 01-17 10:56 1840次阅读
    <b class='flag-5'>STM32G0</b><b class='flag-5'>开发笔记</b>:使用libopencm3库