打印
[技术问题解答]

IIC与EEPROM传输

[复制链接]
1884|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
spgs0622|  楼主 | 2015-2-9 14:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本人使用的单片机是MKE04Z128,想用IIC模块与EEPROM进行数据传输,但是在向MST置1从而产生开始信号时,查看IIC控制寄存器值时,发现MST始终为0,用示波器抓SCL和SDA信号时,始终没有信号,麻烦各位大神找找原因,程序初始化如下:

void I2C_Init(void)
{     
         SIM_SCGC |= SIM_SCGC_I2C1_MASK;
         I2C1_C1 = 0x00;
         SIM_PINSEL1 &= (uint32_t)~(uint32_t)0x400u;
         //I2C1_FLT = (I2C_FLT_STOPF_MASK | I2C_FLT_STARTF_MASK | I2C_FLT_FLT(0x00));
         
          I2C1_A1 = 0x00;          //(7-1) AD[7:1], 从机地址
          I2C1_F =  (I2C_F_MULT(0x02) | I2C_F_ICR(0x03));          //(7-6) MULT[1:0],I2C增频因子, 00mul=01,01mul=02,10mul=04
                            //(5-0) ICR[5:1],I2C时钟速率
          //I2C1_F =0x00;
          I2C1_S1 = I2C_S_IICIF_MASK | I2C_S_ARBL_MASK;          //清除TCF、ARBL、I2CIF标志位   【1001 0010】 ?
                            //(7)   TCF,发送完成标志  R
                            //(6)   IAAS,地址被选择标志位 R/W
                            //(5)   BUSY,总线忙标志   R
                            //(4)   ARBL,仲裁丢失标志位  R/W
                            //(2)   SRW,从机读写标志位  R
                            //(1)   I2CIF,I2C中断标志位  R/W
                            //(0)   RXAK,接收应答标识  R
     I2C1_C1 = 0x80;         //(7)   I2CEN,I2C使能位【1000 0000】
                            //(6)   I2CIE,中断使能位
                            //(5)   MST,主机/从机模式选择位   0-从机,1-主机
                            //(4)   TX,接收/发送模式选择位    0-接收,1-发送
                            //(3)   TXAK,发送应答使能位
                            //(2)   RSTA,重新开始     
     asm ("NOP");                //防止I2C1D被优化
     asm ("NOP");
     asm ("NOP");
}

void I2C_Start(void)
{
        I2C1_S1 |= I2C_S_IICIF_MASK;        // 清除中断标志
            
        I2C1_C1 |= I2C_C1_TX_MASK;          // TX = 1,传输模式为发送模式
       
        I2C1_C1 &= (uint32_t)~(uint32_t)I2C_C1_TXAK_MASK;          // TXAK = 0,接收完一个字节后发送应答到总线

        I2C1_C1 &= (uint32_t)~(uint32_t)I2C_C1_MST_MASK;
       
               
        asm ("NOP");
        asm ("NOP");
        asm ("NOP");
        asm ("NOP");
       
        I2C1_C1 |= I2C_C1_MST_MASK;        //MST:0->1,产生开始信号,且设定为主机模式
       
        asm ("NOP");
        asm ("NOP");
        asm ("NOP");
        asm ("NOP");
        asm ("NOP");

}

相关帖子

沙发
FSL_TICS_Jeremy| | 2015-2-10 09:26 | 只看该作者
你好,我先建议采用官方的I2C例程试试。
FRDM-KE04开发板例程包
http://www.freescale.com/zh-Hans ... ab=Design_Tools_Tab

使用特权

评论回复
板凳
spgs0622|  楼主 | 2015-2-10 11:05 | 只看该作者
FSL_TICS_Jeremy 发表于 2015-2-10 09:26
你好,我先建议采用官方的I2C例程试试。
FRDM-KE04开发板例程包
http://www.freescale.com/zh-Hans/webapp/ ...

我去官网看了,感觉好麻烦,都不是我想要的,请问你那边有没有现成的IIC案例,能不能分享下,谢谢!!!

使用特权

评论回复
地板
spgs0622|  楼主 | 2015-2-10 11:39 | 只看该作者
FSL_TICS_Jeremy 发表于 2015-2-10 09:26
你好,我先建议采用官方的I2C例程试试。
FRDM-KE04开发板例程包
http://www.freescale.com/zh-Hans/webapp/ ...

你好,我用8位的单片机9S08GT8A的都可以,现在用MKE04却不行,帮忙请教下,谢谢!

使用特权

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

本版积分规则

4

主题

20

帖子

0

粉丝