各位大侠,之前在网站发一个寻找I2C速率能达到3.4MHZ的MCU的帖子,如下:
http://www.amobbs.com/forum.php?mod=viewthread&tid=5624946
网友推荐用NXP的MCU,于是买了LPC54102的开发板来做评估,但是发现I2C的速度还不如STM32的速度。
发现的问题主要是,I2C的SCL上升时间过长,无法达到I2C的FM+模式的要求,而且速度太快之后SCL波形变成了三角波。
以下是初始化部分代码,使用的是LPCOpen库。设置的SCLLOW:SCLHIGH是2:1,速率设置为1MHZ,其余均是使用的默认的设置。
。void i2c0_init()
{
uint32_t memSize, *devMem;
ROM_I2CM_INIT_T i2cmInit;
LPC_IOCON->PIO[0][23] = 0x0781;
LPC_IOCON->PIO[0][24] = 0x0781;
Chip_Clock_EnablePeriphClock(SYSCON_CLOCK_I2C0);
Chip_SYSCON_PeriphReset(RESET_I2C0);
memSize = ROM_I2CM_GetMemSize();
if(memSize > sizeof(drvData))
{
while(1);
}
devMem = drvData;
i2cmInit.pUserData = (void *) &done;
i2cmInit.base = (uint32_t)LPC_I2C0;
i2c0Handle = ROM_I2CM_Init(devMem, &i2cmInit);
if (i2c0Handle == NULL) {
while(1);
}
actualRate = ROM_I2CM_SetClockRate(i2c0Handle,Chip_Clock_GetAsyncSyscon_ClockRate(), 1000000);
NVIC_EnableIRQ(I2C0_IRQn);
}
波形图片如下:
以上,请各位大侠指点一下。转载
|