[活动专区] 【AutoChips 7801x MCU评测报告】+24C02

[复制链接]
768|1
 楼主| Cjy_JDxy 发表于 2020-6-8 14:29 | 显示全部楼层 |阅读模式
今天测试了一下AT24C02.
代码:
  1. /*************<include>****************/
  2. #include "i2c.h"
  3. #include "gpio.h"
  4. #include "timer.h"

  5. /*************<macro>******************/


  6. /*************<enum>*******************/


  7. /*************<union>******************/


  8. /*************<struct>*****************/


  9. /*************<variable>***************/


  10. /*************<prototype>**************/


  11. /**
  12. * [url=home.php?mod=space&uid=555622]@prototype[/url] main(void)
  13. *
  14. * @param[in] void
  15. * @return         void
  16. *
  17. * [url=home.php?mod=space&uid=247401]@brief[/url]           main entry.
  18. *                         main函数.
  19. */
  20. int main(void)
  21. {
  22.         InitDelay();
  23.         InitDebug();
  24.        
  25.         LED_Init();
  26.         KEY_Init();
  27.         TIM_InitHw();
  28.         I2C_InitHw();
  29.        
  30.         while(1)
  31.         {
  32.                 KEY_ScanInput();
  33.         }
  34. }

  35. /*************<end>********************/
  1. void KEY_ScanInput(void)
  2. {
  3.         if (g_scanKeyTime >= SCAN_KEY_INTVL)
  4.         {
  5.                 g_scanKeyTime = 0;
  6.                
  7.                 /*上次**KEY6状态为释放且当前KEY6按下,进行二次确认并重新**KEY6状态.*/
  8.                 if ((g_getKey6Sts == KEY_RELEASE) && (GET_KEY6_STS() == KEY_PRESS))
  9.                 {
  10.                         mdelay(10);
  11.                         if (GET_KEY6_STS() == KEY_PRESS)
  12.                         {
  13.                                 g_getKey6Sts = KEY_PRESS;
  14.                                 /*写入数据.*/
  15.                                 I2C_WrDataToAT24C();
  16.                         }
  17.                 }
  18.                 /*上次**KEY6为按下且当前KEY6释放,更新**KEY6状态,以保证每次按键动作有效性.*/
  19.                 else if ((g_getKey6Sts == KEY_PRESS) && (GET_KEY6_STS() == KEY_RELEASE))
  20.                 {
  21.                         g_getKey6Sts = KEY_RELEASE;
  22.                 }
  23.                
  24.                 /*上次**KEY7状态为释放且当前KEY7按下,进行二次确认并重新**KEY7状态.*/
  25.                 if ((g_getKey7Sts == KEY_RELEASE) && (GET_KEY7_STS() == KEY_PRESS))
  26.                 {
  27.                         mdelay(10);
  28.                         if (GET_KEY7_STS() == KEY_PRESS)
  29.                         {
  30.                                 g_getKey7Sts = KEY_PRESS;
  31.                                 /*读取数据.*/
  32.                                 I2C_RdDataFromAT24C();
  33.                         }
  34.                 }
  35.                 /*上次**KEY7为按下且当前KEY7释放,更新**KEY7状态,以保证每次按键动作有效性.*/
  36.                 else if ((g_getKey7Sts == KEY_PRESS) && (GET_KEY7_STS() == KEY_RELEASE))
  37.                 {
  38.                         g_getKey7Sts = KEY_RELEASE;
  39.                 }
  40.         }
  41. }
  1. /**
  2. * @prototype I2C_WrDataToAT24C(void)
  3. *
  4. * @param[in] void
  5. * @return         void
  6. *
  7. * @brief           写数据到EEPROM.
  8. */
  9. void I2C_WrDataToAT24C(void)
  10. {
  11.         g_wrAT24CDataBuf[0] = 0x00;//写入地址
  12.         for (uint8_t ii = 0; ii < 8; ii++)
  13.         {
  14.                 g_wrAT24CDataBuf[ii + 1] = ii;
  15.                 printf("%d ", g_wrAT24CDataBuf[ii + 1]);
  16.         }printf("\r\n");
  17.         I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 9, ENABLE);
  18. }

  19. /**
  20. * @prototype I2C_RdDataFromAT24C(void)
  21. *
  22. * @param[in] void
  23. * @return         void
  24. *
  25. * @brief           从EEPROM读取数据.
  26. */
  27. void I2C_RdDataFromAT24C(void)
  28. {
  29.         g_wrAT24CDataBuf[0] = 0x00;//读取地址
  30.         I2C_MasterBurstWrite(I2C0, AT24C02_DEV_ADDR, g_wrAT24CDataBuf, 1, DISABLE);
  31.         I2C_MasterBurstRead (I2C0, AT24C02_DEV_ADDR, g_rdAT24CDataBuf, 8);
  32.         for (uint8_t ii = 0; ii < 8; ii++)
  33.         {
  34.                 printf("%d ", g_rdAT24CDataBuf[ii]);
  35.         }printf("\r\n");
  36. }

效果图:
1.jpg
yljon 发表于 2020-6-8 15:35 | 显示全部楼层
佩服楼主有这么多时间可以玩这些板子
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:绿水本无忧因风皱面,青山原不老为雪白头。

553

主题

3530

帖子

20

粉丝
快速回复 在线客服 返回列表 返回顶部