查看: 5214|回复: 8

[已解决] 求助:kinetis L25 I2C通信(已解决)

[复制链接]

该用户从未签到

4

主题

16

帖子

0

新手上路

Rank: 1

积分
20
最后登录
1970-1-1
发表于 2014-1-24 21:07:11 | 显示全部楼层 |阅读模式
void I2C_Init()
{
  SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;
  SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;
  PORTC_PCR8 = PORT_PCR_MUX(2) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
  PORTC_PCR9 = PORT_PCR_MUX(2) | PORT_PCR_PE_MASK | PORT_PCR_PS_MASK;
  I2C0_F = 0x1f;
  I2C0_C1 = I2C_C1_IICEN_MASK;
}
这是I2C的初始化
 while(1)
{
    I2C0_C1 |= I2C_C1_TX_MASK;
    I2C0_C1 |= I2C_C1_MST_MASK;
    I2C0_D = 0x1C;
    //while((I2C1_S & I2C_S_IICIF_MASK) == 0);
    I2C0_S|=I2C_S_IICIF_MASK;
    I2C0_D = 0x00;
    //while((I2C1_S & I2C_S_IICIF_MASK) == 0);
    I2C0_S|=I2C_S_IICIF_MASK;
    I2C0_C1 |= I2C_C1_RSTA_MASK;
    I2C0_D = 0x1D;
    //while((I2C1_S & I2C_S_IICIF_MASK) == 0);
    I2C0_S|=I2C_S_IICIF_MASK;
    c = I2C0_D;
    I2C0_C1 &= ~I2C_C1_TX_MASK;
    I2C0_S|=I2C_S_IICIF_MASK;
    I2C0_C1 &= ~I2C_C1_MST_MASK; 
}
在示波器中为什么看不见引脚的电平跳变?
我知道答案 目前已有8人回答
回复

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-1-25 09:47:27 | 显示全部楼层

    RE:求助:kinetis L25 I2C通信

    没有开启PORTC的时钟
    SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    16

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    1970-1-1
     楼主| 发表于 2014-1-25 11:41:32 | 显示全部楼层

    回复:求助:kinetis L25 I2C通信

    回复第 2 楼 于2014-01-25 09:47:27发表:
    没有开启PORTC的时钟
    SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;
     
    那个官网,在启动的时候就已经把ABCDE端口的时钟打开了,我把SIM_SCGC5 |= SIM_SCGC5_PORTC_MASK;加进去还是没有在示波器和逻辑分析仪中看见I2C通信的波形
     
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2014-1-25 15:12:27 | 显示全部楼层

    RE:求助:kinetis L25 I2C通信

    例程用的是PC10?我看8 9默认功能是CMP0_IN2,应该先把这个关闭了。
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2018-7-2 06:04
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2014-1-26 09:49:35 | 显示全部楼层

    回复:求助:kinetis L25 I2C通信

    飞思卡尔官网KL25芯片例程包KL25-SC中有i2c函数的,你可以参考一下。
    你可以在如下路径找到i2c文件:
    E:\KL25 Sample Code\kl25_sc_rev10\klxx-sc-baremetal\src\drivers\i2c
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    7

    帖子

    0

    新手上路

    Rank: 1

    积分
    22
    最后登录
    1970-1-1
    发表于 2014-2-17 14:31:00 | 显示全部楼层

    回复:求助:kinetis L25 I2C通信(已解决)

    楼主能否分享下原因
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4

    主题

    16

    帖子

    0

    新手上路

    Rank: 1

    积分
    20
    最后登录
    1970-1-1
     楼主| 发表于 2014-3-15 14:17:31 | 显示全部楼层

    回复:求助:kinetis L25 I2C通信(已解决)

    回复第 6 楼 于2014-02-17 14:31:00发表:
    楼主能否分享下原因
    while(1)
    {
        I2C0_C1 |= I2C_C1_TX_MASK;
        I2C0_C1 |= I2C_C1_MST_MASK;
        I2C0_D = 0x1C;
        //while((I2C1_S & I2C_S_IICIF_MASK) == 0);
        I2C0_S|=I2C_S_IICIF_MASK;
        I2C0_D = 0x00;
        //while((I2C1_S & I2C_S_IICIF_MASK) == 0);
        I2C0_S|=I2C_S_IICIF_MASK;
        I2C0_C1 |= I2C_C1_RSTA_MASK;
        I2C0_D = 0x1D;
        //while((I2C1_S & I2C_S_IICIF_MASK) == 0);
        I2C0_S|=I2C_S_IICIF_MASK;
        c = I2C0_D;
        I2C0_C1 &= ~I2C_C1_TX_MASK;
        I2C0_S|=I2C_S_IICIF_MASK;
        I2C0_C1 &= ~I2C_C1_MST_MASK; 

    }
    在while循环中 
    2C0_D = 0x1C;
      I2C0_S|=I2C_S_IICIF_MASK;
      I2C0_D = 0x00;

    这之间几乎没有时间间隔,上次的数据还没有发送完,下个要发的数据就已经写进缓存了
     
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    145

    主题

    4926

    帖子

    0

    金牌会员

    Rank: 6Rank: 6

    积分
    9267
    最后登录
    1970-1-1
    发表于 2014-3-19 15:21:52 | 显示全部楼层

    RE:求助:kinetis L25 I2C通信(已解决)

    感谢楼主的经验分享。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    0

    主题

    1

    帖子

    0

    新手上路

    Rank: 1

    积分
    34
    最后登录
    2016-8-11
    发表于 2014-11-13 23:33:46 | 显示全部楼层
    楼主那是在这几句之间加延时吗?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 06:02 , Processed in 0.108084 second(s), 29 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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