STM32G0开发笔记-Platformio+libopencm3-EEPROM M24C02使用

使用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,因此写入后要进行等待其写入完成;

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值