打印
[技术问答]

M451 I2C

[复制链接]
1457|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
M451 的I2C中有一个超时计数器,由I2C_TOCTL来控制,但在使用中发现,只要使能了该计数器,定时溢出标志TOIF会一直置位,大家有没遇到过的?还有该计数器的时钟源是哪里来的呢?是跟通信速率有关吗?
沙发
Rooney30| | 2016-7-6 16:22 | 只看该作者
是不是得和其他的一起搭配使用才行呢?

使用特权

评论回复
板凳
anobodykey|  楼主 | 2016-7-6 17:11 | 只看该作者
Rooney30 发表于 2016-7-6 16:22
是不是得和其他的一起搭配使用才行呢?

看手册的话,是单独使用的,

这里面显示超时模块的时钟源是PCLK但这个计数应该很快吧,我这里PCLK时钟为72MHz,I2C通信速率为100K,这个很容易就超时吧,之前我在检测到超时时添加了打印信息的输出,如下:
void I2C1_IRQHandler(void)
{
    uint32_t u32Status;

    u32Status = I2C_GET_STATUS(I2C_EEPROM);

    if(I2C_GET_TIMEOUT_FLAG(I2C_EEPROM))
    {
        /* Clear I2C0 Timeout Flag */
                printf("time out.\n");
        I2C_ClearTimeoutFlag(I2C_EEPROM);
    }
    else
    {
        if(s_I2CHandlerFn != NULL)
            s_I2CHandlerFn(u32Status);
    }
}

会一直输出time out,但是去掉打印信息I2C的读写流程是不受影响的(虽然使能了超时计数器)。但是如果在检测到超时那里增加I2C_STOP()函数,读写就会失败(因为进入了I2C_STOP)。所以搞不清这个超时计数器到底起没起作用。。。

使用特权

评论回复
地板
ofsummer| | 2016-7-6 21:45 | 只看该作者
i2c还有超时定时器,是不是这个芯片的i2c也有bug?

使用特权

评论回复
5
xuhanquan| | 2016-9-19 10:23 | 只看该作者
你好,官方提供的BSP包里的I2C源程序还得修改才能用吗

使用特权

评论回复
6
huangcunxiake| | 2016-9-19 14:58 | 只看该作者
不会有BUG吧,这个问题也太明显了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

240

帖子

0

粉丝