源代码在附件中,电路硬件有加上拉电阻,程序来源于深圳捷斯威
接的器件是AT24C02,问题肯定出在PB2脚初始化,开发板是TI原厂的LM4F232。I2C的总线要求SDA和SCL信号平时处于高电平,已经附加上拉电阻,但是PB2脚始终是低电平,当然出问题了。那么程序初始化PB2脚为何出错呢??
我看了下你代码,
在初始化代码时增加如下两条:
ROM_GPIOPinConfigure(GPIO_PB2_I2C0SCL);
ROM_GPIOPinConfigure(GPIO_PB3_I2C0SDA);
按照上述说法,出现编译错误:
I2C_eeprom.axf: Error: L6218E: Undefined symbol ROM_GPIOPinConfigure (referred from i2c_eeprom.o).
ROM_GPIOPinConfigure 未定义,如何解决??
经过一晚上的时间,我终于搞清楚了这个问题的原因了。很抱歉之前没经过验证就在回答.
1. 这个问题是因为设置管脚的开漏造成的,当调用GPIOPinTypeI2C函数时,该API函数会设置I2C的两个管脚为开漏模式,SDA设置开漏没有问题,SCL设置开漏就会被拉低。想不通为什么会出现这个问题。这可能是芯片的一个BUG。
2. 如果规避呢,我想到一个办法就是设置SCL管脚为标准管脚,设置SCL的时候可以调用这个API函数,
GPIOPinTypePWM (GPIO_PORTB_BASE, GPIO_PIN_2);
3. 我在数据手册上找到一个地方描述了SCL的情况,在16.2中是这样描述的:
Note that the I2CSCL pin should be set to open drain using the GPIO Open Drain Select (GPIOODR) register.但实际上设置了该管脚为开漏后就会被拉低。这个需要反映下
4. 附件是按照我的更改,在示波器上实际测得的波形。以供参考。

如果有什么问题,你可以直接和我联系,.
QQ:906411450
捷恩斯威的这个程序包实际上是LS3系列的软件稍微修改就当做LM4f程序发出来了,完全没有检验,不光是i2c程序不能使用,而且ssi程序也不能使用,做工程师能这样的吗??