找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3954|回复: 4
打印 上一主题 下一主题
收起左侧

stm32驱动AT24C02模拟/固定 I2C两种方式 而且可以读写小数

[复制链接]
跳转到指定楼层
楼主
ID:341701 发表于 2018-7-17 19:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
AT24C02 模拟/固定 I2C 两种方式  而且可以读写小数

单片机源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   I2C EEPROM(AT24C02)测试,测试信息通过USART1打印在电脑的超级终端
  8.   ******************************************************************************

  9.   ******************************************************************************
  10.   */
  11.   
  12. #include "stm32f10x.h"
  13. #include "bsp_usart1.h"
  14. #include "bsP_i2c_ee.h"
  15. #include "bsP_led.h"
  16. #include <string.h>

  17. #define  EEP_Firstpage      0x00
  18. u8 I2c_Buf_Write[256];
  19. u8 I2c_Buf_Read[256];
  20. void I2C_Test(void);

  21. //void *memcpy(void *dest, const void *src, size_t n);

  22. long double cal_p[6]={0.1, 1.1, 3.1, 4.02, 6.3, 0.01};
  23. long double cal_test[6]={0};
  24. uint8_t cal_flag = 0xaa;

  25. uint8_t k;

  26. /**
  27.   * @brief  主函数
  28.   * @param  无
  29.   * @retval 无
  30.   */
  31. int main(void)
  32. {
  33.   
  34.   /* 串口1初始化 */
  35.         USART1_Config();
  36.        
  37.         printf("\r\n 这是一个I2C外设(AT24C02)读写测试例程 \r\n");
  38.         //LED_GPIO_Config();

  39.         /* I2C 外设初(AT24C02)始化 */
  40.         I2C_EE_Init();

  41.         printf("\r\n 这是一个I2C外设(AT24C02)读写测试例程 \r\n");       
  42.                   
  43.         //I2C_Test();
  44.   
  45. /*-------------------------------------------------------------------*/
  46.   
  47.   printf("\r\n start to write \r\n");       
  48.   I2C_EE_BufferWrite((void*)cal_p, 1, sizeof(cal_p));
  49.   //I2C_EE_BufferWrite((void*)cal_p, 1, sizeof(cal_p));
  50.   
  51.   printf("\r\n start to read \r\n");
  52.   I2C_EE_BufferRead((void*)cal_test, 1, sizeof(cal_test));
  53.        
  54.   for( k=0; k<6; k++ )
  55.     printf("%LF\r\n", cal_test[k]);

  56.   while (1)
  57.   {      
  58.   }
  59. }

  60. /**
  61.   * @brief  I2C(AT24C02)读写测试
  62.   * @param  无
  63.   * @retval 无
  64.   */
  65. void I2C_Test(void)
  66. {
  67.         u16 i;

  68.         printf("写入的数据\n\r");
  69.    
  70.         for ( i=0; i<=255; i++ ) //填充缓冲
  71.   {   
  72.     I2c_Buf_Write[i] = i;

  73.     printf("0x%02X ", I2c_Buf_Write[i]);
  74.     if(i%16 == 15)   
  75.         printf("\n\r");   
  76.    }

  77.   //将I2c_Buf_Write中顺序递增的数据写入EERPOM中
  78.    //LED1(ON);
  79.         I2C_EE_BufferWrite( I2c_Buf_Write, EEP_Firstpage, 256);
  80.         //LED1(OFF);   
  81.   
  82.   printf("\n\r写成功\n\r");
  83.    
  84.    printf("\n\r读出的数据\n\r");
  85.   //将EEPROM读出数据顺序保持到I2c_Buf_Read中
  86.     //LED2(ON);   
  87.         I2C_EE_BufferRead(I2c_Buf_Read, EEP_Firstpage, 256);
  88.    //LED2(OFF);
  89.    
  90.   //将I2c_Buf_Read中的数据通过串口打印
  91.         for (i=0; i<256; i++)
  92.         {       
  93. ……………………

  94. …………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码

所有资料51hei提供下载:
18、I2C-EEPROM.rar (2.36 MB, 下载次数: 113)


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏3 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:208271 发表于 2021-5-26 12:03 | 只看该作者
感谢楼主,是野火的程序,测试了模拟IIC,可用,是连续写入和连续读取
回复

使用道具 举报

板凳
ID:81196 发表于 2021-5-26 16:34 | 只看该作者
你确定你这是硬件IIC使用吗,稳定吗
回复

使用道具 举报

地板
ID:208271 发表于 2022-5-17 16:32 | 只看该作者
验证过硬件IIC的程序,没有问题,可正常读写。虽连续读和连续写
回复

使用道具 举报

5#
ID:1018878 发表于 2022-6-11 23:30 | 只看该作者
导入库函数
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表