GPIO实现I2C协议模拟(1)
最近需要用GPIO模拟I2C协议,如果是在Linux下面比较简单,但在Windows下面,是否有没Linux那么简单了。
索性自己对I2C协议还有一些了解,翻了SPEC并结合示波器量出的实际信号分析,总算有些成就,在这里以做记录
I2C是什么,这里不做介绍,网上资料太多.
要用GPIO模拟I2C协议,就是控制GPIO的High与Low,复制出与I2C通信协议一样的波形出来.
由于标准的I2C频率在10K到100kHz之间,所以用GPIO模拟还是需要考虑一个IO动作时间问题.
个人推荐整个模拟动作在驱动里面实现,如果在APP层通过IO驱动提供的IO RW来做,性能上面会慢很多
言归正题
波形的理解.
I2C波形分为开始,发送数据,接收数据, ACK, NACK, STOP这些行为.
SCL为Low时,可以修改SDA的状态,SCL为HIGH时为电平稳定期,同时也是另一端接收时间
开始: SCL为High的时候,SDA由High变为LOW
ACK: SCL为High的时候,SDA为Low
NACK: SCL为High的时候,SDA为High
发送数据: 以8Bit为一个单元,一个BIT一个BIT的发,高位先发,低位后发,
接收数据: 同上
STOP : SCL为High的时候,SDA由Low变为High
Master每发送一个字节后,都需要读 Slave 的回应,ACK表示执行成功,NACK表示Slave没有响应.
Master接收Slave发送的数据,每接收一个,都需要发一次ACK给SLAVE,然后再接收,接收完成后,需要发NACK及STOP给 Slave
后续请看后面章节描述
GPIO实现I2C协议模拟(1)的更多相关文章
- GPIO实现I2C协议模拟(2)
接着上一节继续补充 结合上一节的描述 写Slave的过程如下(BYTE) 读Slave的过程如下(BYTE) 分为两段 第一段 ,写OFFSET,第二段读数据 WORD的方式与BYTE大同异 读行为 ...
- I2C软件模拟协议与电容触摸控制
I2C 与 Touch slide 最近做了一个与触摸滑条相关的测试,利用I2C通讯协议来配置触摸控制芯片的相关寄存器,读取触摸读数,并通过STM Studio动态显示触摸读数的变化过程.这个测试相对 ...
- 模拟I2C协议学习点滴之原理框架
I2C是一种串行总线协议. 目前几种常用的串行总线有UART.SPI和I2C协议.UART协议的总线只有两条,发送(Transmit:TX)和接收(Receive:RX),没有时钟信号,这就要求两位数 ...
- i2c协议
i2c协议 http://blog.csdn.net/g_salamander/article/details/8016698 总线设备驱动模型 http://blog.csdn.net/u01395 ...
- 基于UDP协议模拟的一个TCP协议传输系统
TCP协议以可靠性出名,这其中包括三次握手建立连接,流控制和拥塞控制等技术.详细介绍如下: 1. TCP协议将需要发送的数据分割成数据块.数据块大小是通过MSS(maximum segment siz ...
- i2c协议简要分析(转载)
声明 本文大部分内容为转载,因此标定为转载 源地址: http://www.cnblogs.com/zym0805/archive/2011/07/31/2122890.html http://blo ...
- (原创) 巩固理解I2C协议(MCU,经验)
题外话:这几天天气突然转冷了.今天已是11月23日了,查查黄历,昨天(11月22日)刚好是小雪,一夜温度骤降,果然老祖先的经验有灵验!冬天来了,还是多加加衣服,注意保暖! 1.Abstract ...
- I2C协议(转)
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL. SDA传输数据是大端传输,每次传输8bit,即一字节. 支持多主控(multimastering),任何时间点只能有一 ...
- 硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器(转)
源:硬件和软件兼容i2c协议的24Cxx系列EEPROM存储器 硬件上由于24c01的A0A1A2管脚不允许悬空,故暂时的想法是兼容24c02 ---24c16 使用一个dip8封装的芯片插座,A0 ...
随机推荐
- 转 xshell 图像化展示
http://www.cnblogs.com/kellyseeme/p/7965830.html 限制: 无法显示通过堡垒机登录的机器的图形接界面. 只能显示直接登录的服务到期的图像化界面 Xshel ...
- linux 编程笔记 2
1.使用create建立文件: #include <stdio.h> #include <stdlib.h> #include <fcntl.h> #include ...
- VMware安装CentOS7的详细过程
原文:https://www.jianshu.com/p/ce08cdbc4ddb?utm_source=tuicool&utm_medium=referral 本篇文章主要介绍了VMware ...
- WebSocket协议入门介绍
目录 目录 WebSocket协议是什么 WebSocket是应用层协议 WebSocket与Http的区别 为什么要使用WebSocket 如何使用WebSocket 客户端API 在客户端使用We ...
- 一个基于 easyui, vue 和 maptalks 的简单地图应用
一个基于 easyui, vue 和 maptalks 的简单地图应用 做了一个小应用,结合 easyui , vue 和 maptalks 的简单的地图应用.可以用来画图,什么的. 地址
- pysnmp使用
install yum install python-pysnmp yum install python-pyasn1 or pip install pysnmp pip install pyasn1 ...
- pat甲级1114
1114 Family Property(25 分) This time, you are supposed to help us collect the data for family-owned ...
- 第六十三课、C语言的异常处理
http://www.cnblogs.com/gui-lin/p/6379101.html 一.异常处理 1.异常的概念 (1).程序在运行过程中可能产生异常 (2).异常(Exception)和Bu ...
- flex在众多手机浏览器上的兼容方案(亲测华为手机自带浏览器)
如果项目使用构建工具,可加autoprefixer来处理,[autoprefixer使用指南] 纯手写css兼容代码,需给每个使用的属性加上属性前缀 /*display: flex;写法*/ span ...
- 漫谈 Clustering (5): Hierarchical Clustering
系列不小心又拖了好久,其实正儿八经的 blog 也好久没有写了,因为比较忙嘛,不过觉得 Hierarchical Clustering 这个话题我能说的东西应该不多,所以还是先写了吧(我准备这次一个公 ...