查看: 1492|回复: 1

[分享] 记录自己第一次在KL26下写的I2C

[复制链接]

该用户从未签到

11

主题

56

帖子

0

中级会员

Rank: 3Rank: 3

积分
256
最后登录
2016-1-21
发表于 2015-5-6 11:32:27 | 显示全部楼层 |阅读模式
使用的是MKL26Z的I2C1,用它去驱动TPS65185电源芯片。先把学习到的I2C的写下来。
I2C.C
extern void i2c1_init(void)
{

        SIM_SCGC4 |= SIM_SCGC4_I2C1_MASK;

  //MTMS1  /* set PTA13 1 */
        PORTA_PCR13  |= PORT_PCR_MUX(1);
        FGPIOA_PSOR |= 1 << 13;
        FGPIOA_PDDR |= 1 << 13;

        /* configure GPIO for I2C1 function */
        PORTC_PCR10 |= PORT_PCR_MUX(2); //SCL
  PORTC_PCR11 |= PORT_PCR_MUX(2); //SDA

  I2C1_C1 = 0x80U;         /* Clear control register */
        I2C1_F  =(I2C_F_MULT(0x00) | I2C_F_ICR(0x27));

}


extern unsigned char i2c_read_byte(void)
{
     return I2C1_D;
}

extern void i2c_start(void)
{
    i2c_set_master_mode();
    i2c_set_tx_mode();
}

extern void i2c_stop(void)
{
    i2c_set_slave_mode();
    i2c_set_rx_mode();
}

extern void  i2c_wait(void)
{    // wait flag
           while((I2C1_S & I2C_S_IICIF_MASK)==0)  
                          ;
                 // clear flag
     I2C1_S |= I2C_S_IICIF_MASK;
}
       

extern unsigned int i2c_get_ack(void)
{
    if((I2C1_S & I2C_S_RXAK_MASK) == 0)
        return true;
    else
        return false;
}



I2C.H

#ifndef  __I2C_H_
#define  _I2C_H_

#include "IO_Map.h"


#define i2c_set_tx_mode()     I2C1_C1 |= I2C_C1_TX_MASK
#define i2c_set_rx_mode()     I2C1_C1 &= ~I2C_C1_TX_MASK
#define i2c_set_slave_mode()  I2C1_C1 &= ~I2C_C1_MST_MASK
#define i2c_set_master_mode() I2C1_C1  |=  I2C_C1_MST_MASK
#define i2c_give_nack()       I2C1_C1 |= I2C_C1_TXAK_MASK
#define i2c_give_ack()        I2C1_C1 &= ~I2C_C1_TXAK_MASK
#define i2c_repeated_start()  I2C1_C1|= 0x04
#define i2c_write_byte(data)   I2C1_D= data


extern void i2c1_init(void);

extern unsigned char i2c_read_byte(void);

extern void i2c_start(void);

extern void i2c_stop(void);

extern void  i2c_wait(void);

extern unsigned int i2c_get_ack(void);

#endif

回复

使用道具 举报

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

    连续签到: 1 天

    [LV.1]初来乍到

    59

    主题

    2888

    帖子

    10

    金牌会员

    Rank: 6Rank: 6

    积分
    6020
    最后登录
    2020-9-28
    发表于 2015-5-12 14:45:33 | 显示全部楼层
    非常感谢你关于Kinetis的经验分享 !
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

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

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

    GMT+8, 2025-7-23 21:06 , Processed in 0.079445 second(s), 20 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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