打印
[活动专区]

【AT-START-F407测评】+ AT24C04

[复制链接]
574|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
今天捣鼓了一下AT24C04
硬件I2C查询方式。
SCL:PB6
SDA:PB7
代码:
#include "at32f4xx.h"
#include "at32f4xx_i2c_ex.h"
#include "stdio.h"       
#include "string.h"       
#include "at32_board.h"

/** @addtogroup AT32F407_StdPeriph_Examples
  * @{
  */

/** @addtogroup EEPROM_Poll
  * @{
  */

/* Private typedef -----------------------------------------------------------*/
/* Private define ------------------------------------------------------------*/
/* Private macro -------------------------------------------------------------*/
#define BUF_SIZE      12


/* Private variables ---------------------------------------------------------*/
u8 write_buf1[BUF_SIZE] = {0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10, 0x11, 0x12};
u8 write_buf2[BUF_SIZE] = {0x10, 0x20, 0x30, 0x40, 0x50, 0x60, 0x70, 0x80, 0x90, 0xA0, 0xB0, 0xC0};
u8 read_buf[BUF_SIZE] = {0};

/* Private function prototypes -----------------------------------------------*/
/* Private functions ---------------------------------------------------------*/

/**
  * [url=home.php?mod=space&uid=247401]@brief[/url]  Main program
  * @param  None
  * @retval None
  */
int main(void)
{
  int i = 0, Flag = 0;

  AT32_Board_Init();
  
  UART_Print_Init(115200);

  I2Cx_Init(I2C_PORT);
  
  printf("I2C EEPROM demo(Polling).\r\n");               

  while(1)
  {
    /* Wait for Key BUTTON_KEY1_DOWN press before starting write */
    if(AT32_BUTTON_Press() == BUTTON_WAKEUP)
    {
      switch(Flag)
      {
        /* Write buffer 1*/
        case 0:
        {
          I2C_EE_WriteBuffer(I2C_PORT, 0, write_buf1, BUF_SIZE, 1000);
         
          printf("Write buffer 1!\r\n");
        }break;
        
        /* Read buffer 1*/
        case 1:
        {
          I2C_EE_ReadBuffer(I2C_PORT, 0, read_buf, BUF_SIZE, 1000);
        
          for(i = 0; i < BUF_SIZE; i++)
          {      
            printf("%X ",read_buf[i]);
          }
         
          printf("\r\n");
        }break;
        
        /* Write buffer 2*/         
        case 2:
        {
          I2C_EE_WriteBuffer(I2C_PORT, 0, write_buf2, BUF_SIZE, 1000);
         
          printf("Write buffer 2!\r\n");
        }break;
        
        /* Read buffer 2*/
        case 3:
        {
          I2C_EE_ReadBuffer(I2C_PORT, 0, read_buf, BUF_SIZE, 1000);
        
          for(i = 0; i < BUF_SIZE; i++)
          {      
            printf("%X ",read_buf[i]);
          }
         
          printf("\r\n");
        }break;  
        
        default:
        {
          Flag = 0;
        }break;        
      }
      
      Flag++;
      
      if(Flag == 4)
      {
        Flag = 0;
      }
    }
  }   
}

/**
  * @}
  */

/**
  * @}
  */
  
效果图:


使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

426

主题

3386

帖子

7

粉丝