普通IO口模拟实现I2C通信及应用解析
2014-08-20 14:54
417 查看
根据I2C通信规范(具体可以参考“浅谈I2C总线”),通过普通IO端口模拟可以实现单片机(主设备)与从设备的I2C通信,其中SCL通过IO口延时高低电平变化实现,SDA根据SCL状态变化产生开始信号,结束信号,以及实现发送接收数据等,以下是相关代码
需要注意模拟SCL采用的延时需要根据从设备的特性来调整,延时时间不能小于从设备的最小SCL间隔时间
既然已经通过IO端口实现了I2C通信,那么,我们就可以用以上代码实现单片机与相应从设备I2C的通信了,以EEPROM 24C04为例,以下是读取和写入EEPROM数据相关函数的代码
需要注意不同的从设备要根据应用电路调整相应的从设备地址。
采用IO口来模拟I2C通信,一般仅用于单片机没有I2C功能的情况下,如果单片机本身具有I2C功能,还是应该通过配置单片机相应的寄存器,通过中断来实现I2C通信,因为模拟SCL采用的延时就是一个空等待,对于整个操作系统来说,这是一个资源浪费,同时还有可能会影响到其他任务的运行。
需要注意模拟SCL采用的延时需要根据从设备的特性来调整,延时时间不能小于从设备的最小SCL间隔时间
既然已经通过IO端口实现了I2C通信,那么,我们就可以用以上代码实现单片机与相应从设备I2C的通信了,以EEPROM 24C04为例,以下是读取和写入EEPROM数据相关函数的代码
需要注意不同的从设备要根据应用电路调整相应的从设备地址。
采用IO口来模拟I2C通信,一般仅用于单片机没有I2C功能的情况下,如果单片机本身具有I2C功能,还是应该通过配置单片机相应的寄存器,通过中断来实现I2C通信,因为模拟SCL采用的延时就是一个空等待,对于整个操作系统来说,这是一个资源浪费,同时还有可能会影响到其他任务的运行。
相关文章推荐
- 普通IO口模拟实现SPI通信及应用解析
- MSP430FG439上实现IO模拟UART以及移植要点解析
- 51单片机普通IO口模拟IIC总线的程序实现
- 51单片机普通IO口模拟IIC总线的程序实现
- gec210 i2c程序io模拟方式实现
- MSP430FG439上实现IO模拟UART以及移植要点解析
- 笔记四:linux下IO口模拟实现I2C协议
- 服务器应用:实现Linux与宿主机之间的通信
- 数据结构之应用"栈(Stack)"实现: 解析算术表达式及计算
- 模拟I2C总线多主通信研究与软件设计
- Winpcap 包应用,实现不同IP网段之间通信,自定信息格式,加密。
- Enterprise Library深入解析与灵活应用(1):通过Unity Extension实现和Policy Injection Application Block的集成(转)
- 解析Cookie欺骗实现过程及具体应用[zt]
- 数据结构习作之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java) (技术含量少许)
- 解析Cookie欺骗实现过程及具体应用
- [转]Enterprise Library深入解析与灵活应用(2): 通过SqlDependency实现Cache和Database的同步
- [原创]Enterprise Library深入解析与灵活应用(1):通过Unity Extension实现和Policy Injection Application Block的集成
- 使用" 参数化基类" 和" 成员函数指针" 模拟实现虚函数--在实际中的应用
- [零基础学JAVA]Java SE应用部分-31.Java IO操作(05)IO操作实例讲解之实现简单MIS 推荐
- 数据结构之应用 "栈(Stack)" 实现: 解析算术表达式及计算求值 (C#/Java)