因仑“3+1”工程特种兵精英论坛

标题: LPC54102 I2C速率慢问题求助 [打印本页]

作者: 张衍波    时间: 2015-10-27 18:09
标题: LPC54102 I2C速率慢问题求助
各位大侠,之前在网站发一个寻找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);
}

波形图片如下:


以上,请各位大侠指点一下。转载






欢迎光临 因仑“3+1”工程特种兵精英论坛 (http://bbs.enlern.com/) Powered by Discuz! X3.4