本帖最后由 湛泸骏驰 于 2014-10-24 18:54 编辑
今天用野火的stm32例程,对at24c16进行了读写。在分析iic 的时候发现有很多的NACK 出现
tu11.png (19 KB, 下载次数: 0)
下载附件
2014-10-24 18:54 上传
这样的现象正常吗?以前没有分析过这个呢,今天学习者看了一下逻辑分析仪出来的波形、
中间通信不成功,再次进行写地址,这是必须的吧。。这个分析过程中,有很长的一段都是写完地址后NACK .. 这个中间出现了好几段。
- /**
- * @brief I2C(AT24C02)读写测试
- * @param 无
- * @retval 无
- */
- void I2C_Test(void)
- {
- u16 i;
- printf("写入的数据
");
-
- for ( i=0; i<256; i++ ) //填充缓冲
- {
- I2c_Buf_Write[i] = i;
- printf("0x%02X ", I2c_Buf_Write[i]);
- if(i%16 == 15)
- printf("
");
- }
- //将I2c_Buf_Write中顺序递增的数据写入EERPOM中
- //LED1(ON);
- I2C_EE_BufferWrite( I2c_Buf_Write, EEP_Firstpage, 256);
- //LED1(OFF);
-
- printf("
写成功
");
-
- printf("
读出的数据
");
- //将EEPROM读出数据顺序保持到I2c_Buf_Read中
- //LED2(ON);
- I2C_EE_BufferRead(I2c_Buf_Read, EEP_Firstpage, 256);
- //LED2(OFF);
-
- //将I2c_Buf_Read中的数据通过串口打印
- for (i=0; i<256; i++)
- {
- if(I2c_Buf_Read[i] != I2c_Buf_Write[i])
- {
- printf("0x%02X ", I2c_Buf_Read[i]);
- printf("错误:I2C EEPROM写入与读出的数据不一致
");
- return;
- }
- printf("0x%02X ", I2c_Buf_Read[i]);
- if(i%16 == 15)
- printf("
");
- }
- printf("I2C(AT24C02)读写测试成功
");
- }
复制代码
一周热门 更多>