开发环境:
IDE:MKD 5.37
开发板:野火启明RA6M5开发板
MCU:R7FA6M5BH3CFC
EEPROM:AT24C02
一、基础知识
I2C总线是由PHILIPS公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。
主器件用于启动总线传送数据,并产生时钟以开放传送的器件,此时任何被寻址的器件均被认为是从器件.在总线上主和从、发和收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止。
RA6M5芯片的I2C规格如下:
启明RA6M5开发板硬件设计如下:
二、FSP配置
首先使用Renesas RA Smart Configurator软件配置。
I2C master的参数设置如下:
随后点击“Generate Project Content”生成Flex Software代码。
三、I2C test
在Renesas RA Smart Configurator生成的代码中加入I2C的业务代码,主要如下:
uint8_t I2C_Test(void)
{
uint16_t i;
unsigned char DATA_Size = 30;
unsigned char I2c_Buf_Write[33] = {};
unsigned char I2c_Buf_Read[33] = {};
printf("写入的数据\r\n");
for ( i=0; i<DATA_Size; i++ ) {
I2c_Buf_Write[i] =i;
printf("0x%02X ", I2c_Buf_Write[i]);
if (i%16 == 15)
printf("\n");
}
I2C_EE_BufferWrite( I2c_Buf_Write, 0x00 , DATA_Size);
printf("\r\n读出的数据\n");
R_BSP_SoftwareDelay(10U, 1000);
I2C_EE_BufferRead(I2c_Buf_Read, 0x00 , DATA_Size);
R_BSP_SoftwareDelay(10U, 1000);
for (i=0; i<DATA_Size; i++) {
if (I2c_Buf_Read[i] != I2c_Buf_Write[i]) {
printf("0x%02X \n", I2c_Buf_Read[i]);
printf("错误:I2C EEPROM写入与读出的数据不一致\n");
printf("%d\n",i);
return 0;
}
printf("0x%02X ", I2c_Buf_Read[i]);
if (i%16 == 15)
printf("\n");
}
printf("\r\nI2C(AT24C02)读写测试成功\n");
return 1;
}
四、测试
代码编译:
compiling hal_data.c...
compiling r_sci_uart.c...
compiling r_iic_master.c...
compiling pin_data.c...
compiling vector_data.c...
linking...
Program Size: Code=9048 RO-data=1432 RW-data=1408 ZI-data=6084
After Build - User command #1: cmd /c "start "Renesas" /w cmd /c ""D:/Keil_v537/Packs/Renesas/RA_DFP/4.1.0/launcher\rasc_launcher.bat" "4.0.0" -nosplash
".\Objects\I2C.axf" - 0 Error(s), 6 Warning(s).
Build Time Elapsed: 00:00:04
烧入,测试结果如下:
写入的数据
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D
读出的数据
0x00 0x01 0x02 0x03 0x04 0x05 0x06 0x07 0x08 0x09 0x0A 0x0B 0x0C 0x0D 0x0E 0x0F 0x10 0x11 0x12 0x13 0x14 0x15 0x16 0x17 0x18 0x19 0x1A 0x1B 0x1C 0x1D
I2C(AT24C02)读写测试成功
##感谢阅读##
|