找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4796|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

stm32驅(qū)動(dòng)AT24C02模擬/固定 I2C兩種方式 而且可以讀寫小數(shù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:341701 發(fā)表于 2018-7-17 19:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
AT24C02 模擬/固定 I2C 兩種方式  而且可以讀寫小數(shù)

單片機(jī)源程序如下:
  1. /**
  2.   ******************************************************************************
  3.   * @file    main.c
  4.   * @author  fire
  5.   * @version V1.0
  6.   * @date    2013-xx-xx
  7.   * @brief   I2C EEPROM(AT24C02)測(cè)試,測(cè)試信息通過USART1打印在電腦的超級(jí)終端
  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  主函數(shù)
  28.   * @param  無
  29.   * @retval 無
  30.   */
  31. int main(void)
  32. {
  33.   
  34.   /* 串口1初始化 */
  35.         USART1_Config();
  36.        
  37.         printf("\r\n 這是一個(gè)I2C外設(shè)(AT24C02)讀寫測(cè)試?yán)?\r\n");
  38.         //LED_GPIO_Config();

  39.         /* I2C 外設(shè)初(AT24C02)始化 */
  40.         I2C_EE_Init();

  41.         printf("\r\n 這是一個(gè)I2C外設(shè)(AT24C02)讀寫測(cè)試?yán)?\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)讀寫測(cè)試
  62.   * @param  無
  63.   * @retval 無
  64.   */
  65. void I2C_Test(void)
  66. {
  67.         u16 i;

  68.         printf("寫入的數(shù)據(jù)\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中順序遞增的數(shù)據(jù)寫入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讀出的數(shù)據(jù)\n\r");
  85.   //將EEPROM讀出數(shù)據(jù)順序保持到I2c_Buf_Read中
  86.     //LED2(ON);   
  87.         I2C_EE_BufferRead(I2c_Buf_Read, EEP_Firstpage, 256);
  88.    //LED2(OFF);
  89.    
  90.   //將I2c_Buf_Read中的數(shù)據(jù)通過串口打印
  91.         for (i=0; i<256; i++)
  92.         {       
  93. ……………………

  94. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

所有資料51hei提供下載:
18、I2C-EEPROM.rar (2.36 MB, 下載次數(shù): 118)


評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏3 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:208271 發(fā)表于 2021-5-26 12:03 | 只看該作者
感謝樓主,是野火的程序,測(cè)試了模擬IIC,可用,是連續(xù)寫入和連續(xù)讀取
回復(fù)

使用道具 舉報(bào)

板凳
ID:81196 發(fā)表于 2021-5-26 16:34 | 只看該作者
你確定你這是硬件IIC使用嗎,穩(wěn)定嗎
回復(fù)

使用道具 舉報(bào)

地板
ID:208271 發(fā)表于 2022-5-17 16:32 | 只看該作者
驗(yàn)證過硬件IIC的程序,沒有問題,可正常讀寫。雖連續(xù)讀和連續(xù)寫
回復(fù)

使用道具 舉報(bào)

5#
ID:1018878 發(fā)表于 2022-6-11 23:30 | 只看該作者
導(dǎo)入庫函數(shù)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表