打印
[资料分享与下载]

Kinetis L46开发板之硬件I2C配置

[复制链接]
864|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
quray1985|  楼主 | 2015-8-13 10:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C 总线支持任何IC 生产过程(CMOS、双极性)。通过串行数据(SDA)线和串行时钟 (SCL)线在连接到总线的器件间传递信息。每个器件都有一个唯一的地址识别(无论是微控制器——MCU、LCD 驱动器、存储器或键盘接口),而且都可以作为一个发送器或接收器(由器件的功能决定)。LCD 驱动器只能作为接收器,而存储器则既可以接收又可以发送数据。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机(见表1)。主机是初始化总线的数据传输并产生允许传输的时钟信号 的器件。此时,任何被寻址的器件都被认为是从机。
这次我使用的是KL46的硬件I2C,与之相对应的还有软件I2C,硬件I2C效率高。比软件模拟出来的I2C好很多。
首先第一步,我要选定作为硬件I2C的管脚,我这里选择了I2C0模块的PTE24和PTE25作为I2C的SCL和SDA,如下面数据手册的截图:

初始化的代码如下:
void hal_i2c0_init(I2C_MemMapPtr p) //Acelerometro

{

SIM_SCGC4 |= SIM_SCGC4_I2C0_MASK;//打开I2C0的时钟

SIM_SCGC5 |= SIM_SCGC5_PORTE_MASK;//打开PTE的时钟

PORTE_PCR24 = PORT_PCR_MUX(5);//把PTE24复用为SCL

PORTE_PCR25 = PORT_PCR_MUX(5);//把PTE25复用为SDA

p->F = 0x14; // baudrate

p->C1 = 0x80; // enable IIC

}


相关帖子

沙发
quray1985|  楼主 | 2015-8-13 10:59 | 只看该作者
打开时钟的这里我就不多说了。
管脚复用这里大家要注意一下。通过数据手册的管脚复用表,我们可以知道I2C的复用脚是ALT5模式,也就是把PORTx_PCRn中的8~10位配置成101(也就是MUX)Alternative 5模式,例如把PTE24设为SCL的例子是: PORTE_PCR24 = PORT_PCR_MUX(5);,如下面的数据手册的图:

PORTx_PCRn寄存器的MUX位;

接下来就是,对MPU6050配置了;在配置中,需要I2C的协议通信。下面就有几个子函数了;
首先是I2C开始,源代码:
void i2c_start(I2C_MemMapPtr p)

{

p->C1 |= I2C_C1_MST_MASK;

p->C1 |= I2C_C1_TX_MASK;

}

这里就是对I2Cx_C1寄存器的配置了,主要配置MST和TX这两位,MST是设置I2C是主模式还是从模式对这位写1就是主模式,写0就是从模式。TX是设置发送还是接受,对这位写1就是发送模式,写0就是接受模式。如参考手册的截图:


接下来就是写一个字节的函数了:

使用特权

评论回复
板凳
quray1985|  楼主 | 2015-8-13 11:00 | 只看该作者
void i2c_write_byte(I2C_MemMapPtr p, uint8 data)

{

p->D = data;

}
读一个字节的函数
uint8 i2c_read_byte(I2C_MemMapPtr p)

{

return p->D;

}

对这位写就是发送数据了,读就是接受数据了
停止函数
void i2c_stop(I2C_MemMapPtr p)

{

p->C1 &= ~I2C_C1_MST_MASK;

p->C1 &= ~I2C_C1_TX_MASK;

}



使用特权

评论回复
地板
quray1985|  楼主 | 2015-8-13 11:00 | 只看该作者
这个就是对I2Cx_C1的MST和TX这两位写0。
下面的几个函数我就不多说了,大家可以去看参考手册,E文也不是很难看懂。
下面测试图:






使用特权

评论回复
5
FSL_TICS_Jeremy| | 2015-8-13 13:25 | 只看该作者
谢谢楼主分享!

使用特权

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

本版积分规则

156

主题

1488

帖子

5

粉丝