打印
[Kinetis]

KL26Z的I2C问题

[复制链接]
821|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
fuyinpeng|  楼主 | 2015-8-18 11:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用官方的程序读24C02是没有问题的,但我接了加速度传感器后就一直卡在写数据的  i2c0_Wait();里,
初始化
   // SIM_SCGC5 = SIM_SCGC5_PORTE_MASK;
   
    SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK; //Turn on clock to I2C` module
  
    /* configure GPIO for I2C1 function */
//    PORTE_PCR24 = PORT_PCR_MUX(5);
//    PORTE_PCR25 = PORT_PCR_MUX(5);
       
    PORTB_PCR2 = PORT_PCR_MUX(2);
    PORTB_PCR3 = PORT_PCR_MUX(2);       

    I2C0_F  = 0x12;       // set MULT and ICR:  For bus speed of 24MHz, 0x12 should give 400 kHz
    I2C0_C1 = I2C_C1_IICEN_MASK;       /* enable IIC */
用的PB2和PB3。有时候第一个写寄存器值可以通过,但会卡在第二个写,有时第一个写就卡住了。不知道哪里的问题,读写24C02都没问题的。求大神们指点哦!
  

相关帖子

沙发
FSL_TICS_Jeremy| | 2015-8-19 09:22 | 只看该作者
既然可以正常读写24C02,说明代码对应24C02读写时序是没有问题的,但是涉及到加速度传感器的I2C读写时序的话,需要楼主对比
加速度传感器的时序与示波器捕获的时序,看看两者是否是相符的

使用特权

评论回复
板凳
fuyinpeng|  楼主 | 2015-8-19 09:38 | 只看该作者
FSL_TICS_Jeremy 发表于 2015-8-19 09:22
既然可以正常读写24C02,说明代码对应24C02读写时序是没有问题的,但是涉及到加速度传感器的I2C读写时序的 ...

用ST的读24c02的程序可以读加速度的,主要是手头没示波器,很纳闷哪里出的问题。

使用特权

评论回复
地板
fuyinpeng|  楼主 | 2015-8-19 11:58 | 只看该作者
本帖最后由 fuyinpeng 于 2015-8-19 12:08 编辑

读24c02是用的开发板上的引脚,
PORTE_PCR24 = PORT_PCR_MUX(5);
PORTE_PCR25 = PORT_PCR_MUX(5);
我接在这两个引脚也不行,确定地址没错。后来我就用PB2、PB3了。但一直卡在等待处
void I2C0WriteRegister(unsigned char SlaveAddr, unsigned char u8RegisterAddress, unsigned char u8Data)
{
  /* send data to slave */
  IIC0_StartTransmission(SlaveAddr,MWSR);
  i2c0_Wait();

  I2C0_D = u8RegisterAddress;
  i2c0_Wait();

  I2C0_D = u8Data; //就是这里的等待
  i2c0_Wait();

  i2c0_Stop();

  Pause(1);
}
当我把两个I2C从机接在一起时,24C02也不能写了,也停在等待那里。

使用特权

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

本版积分规则

9

主题

58

帖子

1

粉丝