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

发布时间:2023-08-23  

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

1 新建项目

  • 建立eeprom项目

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


  • 项目建立完成后在src目录下新建main.c主程序文件;

  • 修改下载和调试方式,这里开发板使用的是DAPLink仿真器,因此修改platformio.ini文件如下:

1upload_protocol = cmsis-dap2debug_tool = cmsis-dap

2 编写程序

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

本次不使用串口打印,直接使用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引脚连接好:

先执行程序进行写入:


1int main(void)

 2{

 3    sys_clock_setup();

 4

 5    log("init sw i2c. ");

 6

 7    sw_i2c_init();

 8

 9    log("eeprom read testing. ");

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 ");

20        }else{

21            log("ERR:EEPROM write failed. ");

22        }

23

24    #endif

25

26    log("eeprom write. ");

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 ");

 6        }else{

 7            log("ERR:EEPROM write failed. ");

 8        }

 9

10    #endif

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

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

文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>