因为漏看了一个Technical Update文档,花了3天时间才搞定R32C157的I2C控制器!
M16C系列单片机的片上I2C控制器,可以方便地产生START、STOP和RESTART三种总线状态。根据文档TN-16C-130E/AE记述,M16C系列单片机的片上I2C控制器,在产生START、STOP和RESTART之前,需要先对STSPSEL位清零,并等待0.5个I2C时钟周期。
如果不这样做,现象是SCL先拉低,随后几十个ns SDA会拉低。这个总线状态会被MCU识别为STOP。
教训就是:不要自以为很熟悉瑞萨的片子,就可以不看文档。