查看: 1508|回复: 0
打印 上一主题 下一主题

LPC54102 I2C速率慢问题求助

[复制链接]
跳转到指定楼层
沙发
发表于 2015-10-27 18:09:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠,之前在网站发一个寻找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);
}

波形图片如下:


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

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

快速回复 返回顶部 返回列表