今天捣鼓了一下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;
}
}
}
}
/**
* @}
*/
/**
* @}
*/
效果图:
|