IIC 通讯驱动软件开发

1. 摘要

本笔记主要介绍基于中断模式的IIC通讯软件在飞思卡尔Kv4x系列MCU上的开发应用。 以一片24LC128EEPROMKv46F256VLH15 MCU之间的通讯为测试开发硬件平台.微信

2. IIC 简介

Philips 开发了一个简单的双向两线总线实现有效的IC之间控制,这个总线就称为 Inter IC I2C 总线。全部符合I2C总线的器件组合在了一个片上接口,使器件之间直接经过I2C 总线通信这个设计概念解决了不少在设计数字控制电路时遇到的接口问题。I2C 总线实际上已经成为一个国际标准在超过100 种不一样的IC上实现并且获得不少家公司的许可. SDASCL 都是双向线路 都经过一个电流源或上拉电阻链接到正的电源电压。当总线空闲时这两条线路都是高电平 链接到总线的器件输出级必须是漏极开路或集电极开路才能执行线与的功能。I2C总线上数据的传输速率在标准模式下可达100kbit/s ,在快速模式下可达400kbit/s 在高速模式下可达3.4Mbit/sSDA线上的数据必须在时钟的高电平周期保持稳定数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。ide

IIC的一些特征:测试

1), 只要求两条总线线路一条串行数据线SDA 一条串行时钟线SCLspa

2), 每一个链接到总线的器件均可以经过惟一的地址和一直存在的简单的主机 /从机关系软件设定地址主机能够做为主机发送器或主机接收器..net

3), 它是一个真正的多主机总线 若是两个或更多主机同时初始化数据传输能够经过冲突检测和仲裁防止数据被破坏设计

4), 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s 快速模式下可达400kbit/s高速orm

模式下可达3.4Mbit/s接口

5) 链接到相同总线的IC数量只受到总线的最大电容400pF限制.ip

I2C 总线术语的定义ci


3. 硬件框图

硬件是基于kv46F256VLH15 MCU 24LC128之间的通讯。MCU为主器件,EEPROM为从器件,采用7位地址寻址模式。

4. 软件开发

系统采用8M 晶振,PLL倍频输出为144M144M/6 = 24M IIC 模块时钟, IIC波特率为100kbits/s

4.1 IIC 模块的初始化(主模式)

  • 开启IIC 模块时钟

  • 配置硬件管脚映射

  • 配置I2CFrequency Divider register I2C_F

  • 使能IIC模块和IIC中断

  • 根据datasheet 验证配置的参数是否符合datasheet要求,如不符合在调整

主要有IIC 波特率, SDA保持时间,SCL开始保持时间,SCL中止保持时间。

4.2 Interrupt Service Routing Diagram


5. 测试

5.1 EEPROM 测试

EEPROM 0x0100地址写一个字节的0x55. 从机7位地址为0b 1010 000, 写操做,7位地址后R/W应为0

蓝色探针为时钟SCL 黄色探针为SDA信号。

从波形能够应该能够看出总线上的数据为: 启动信号,0xA0, 0x01, 0x00,0x55, 中止信号。

5.1.1 启动信号测试


5.1.2 从机地址测试

波特率为100k,因此一位的时间为大约10us,每一个字节8+1 位响应位 9位。从下图能够看出发送完启动位后,发送从机地址+RW 位总共大概92.8us.


5.1.3 EEPROM 写入地址测试 0x01, 0x00.



5.1.4 写入EEPROM数据测试 0x55


5.1.5 中止信号测试


5.1.6 总体波形


5.2 读EEPROM 测试

EEPROM 0x0100地址读取一个字节检测上面写入的是否正确. 从机7位地址为0b 1010000,

蓝色探针为时钟SCL 黄色探针为SDA信号。读操做与写操做有不一样。

从波形能够应该能够看出总线上的数据为: 启动信号,0xA0, 0x01, 0x00,从新启动信号,0Xa1,0x55,中止信号。


5.2.1 从机地址+W


5.2.2 读取EEPROM地址



5.2.3 从新启动信号


5.2.4 从机地址+R


5.2.5 读取的数据


最后一个字节数据主机不发送ACK,准备发送中止信号。

5.2.6 中止信号


6 总结

从以上的波形中能够看出软件能够很好的实现IIC的驱动。本驱动只实现了主模式,7位地址操做,

若有须要能够稍加修改应用于10位地址模式,没有实现从模式的驱动。

7 参考文献

I2C –busspecification Version 2.1 January 2001

24LA128 数据手册

FreescaleKv4x MCU 数据手册.



本文分享自微信公众号 - 嵌入式程序猿(InterruptISR)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。

相关文章
相关标签/搜索