[经验分享] GD32E230C测试之二:I2C及EEPROM

hujj   2019-3-4 19:12 楼主
    GD32E230C开发板上有一个EEPROM,通过I2C连接进行读写操作,相关的文件主要是i2c.c和at24cxx.c及相应的头文件,从相应的Soft_Drive文件夹将这些文件复制过来。i2c.c内主要有gpio_config()和i2c_config()两个函数,在主函数开始时调用这两个函数进行I2C的初始化,I2C就可以使用了。at24cxx.c内主要使用的是i2c_eeprom_init()、eeprom_page_write()和eeprom_buffer_read()三个函数,前者是初始化函数,后者分别是写和读eeprom的函数。
    我的实验是利用eeprom来保存和恢复之前做的简易日期时间数据,写和读的函数如下:
  1. void date_write(void)
  2. {
  3.         data_buff[0] = year >> 8;
  4.         data_buff[1] = year & 0x00FF;
  5.         data_buff[2] = mon;
  6.         data_buff[3] = day;
  7.         data_buff[5] = hour;
  8.         data_buff[6] = minu;
  9.     data_buff[7] = seco;
  10.         eeprom_page_write(data_buff,0,8);//将日期时间写入EEPROM
  11. }

  12. void date_read(void)
  13. {
  14.     eeprom_buffer_read(data_buff,0,8);
  15.         year = data_buff[0] * 100 + data_buff[1];
  16.         if(year < 1000) year = 2019;
  17.         mon = data_buff[2];
  18.         day = data_buff[3];
  19.         hour = data_buff[5];
  20.         minu = data_buff[6];
  21.         seco = data_buff[7];
  22.         
  23. }


    读操作用在主函数的主循环之前,读取之前保存的日期时间数据。写操作则用在每小时变动时和调整了日期时间之后。经测试读写操作正常,这样开发板上电后可以从上次保存的日期时间起继续计时,若需调整也用不着年月日时分全部重新调整。
    当然这只是实验,并不实用,真正实用还是需要使用相应的计时模块。下图是显示界面:
I2C_EEPROM.jpg


回复评论 (2)

铁电存储速度会更快
专注智能产品的研究与开发,专注于电子电路的生产与制造……QQ:2912615383,电子爱好者群: void
点赞  2019-3-5 08:53
除了铁电存储器,还有一款叫MRAM存储器的,有资料共享可以看一下
存储芯片/MCU/SRAM/PSRAM/DDR/FLASH/MRAM。web.www.sramsun.com  QQ3161422826 TEL:13751192923
点赞  2019-3-5 09:50
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复