树莓派python gpio 模仿iic_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
后续请看后面章节描述
树莓派python gpio 模仿iic_GPIO实现I2C协议模拟(1)相关推荐
- 树莓派python gpio 模仿iic_Adafruit的树莓派教程:GPIO配置
概览 树莓派最令人兴奋的特点之一是它有一个GPIO连接器可以用来接其他的硬件设备. GPIO连接器实际上是由许多不同类型的接口组成的: 真正的GPIO(General Purpose Input Ou ...
- 树莓派python gpio 模仿iic_树莓派高级GPIO库,wiringpi2 for python使用笔记(五)i2c读取测试...
wiringpi2显然也把i2c驱动带给了Python,手头上正巧有一个DS3231的模块,上边带了一个DS3231 RTC(实时时钟),与一片24C32,两个芯片均为iic总线设备,与树莓派接线如下 ...
- 树莓派python gpio 模仿iic_树莓派-用GPIO虚拟I2C
前言: 非常不幸,树莓派没用多久,I2C接口无法detect. 抱着试一试的心理,到群里问了问,结果被人喷曰:"现在钱多人傻的人真多,什么都不懂,还玩树莓派". 我心想,难道树莓派 ...
- 树莓派python gpio图形_树莓派GPIO功能学习
前言 树莓派现在越来越火,网上树莓派的资料也越来越多.树莓派的学习可以分为linux系统学习和linux驱动学习,利用树莓派制作LED流水灯应该算是驱动学习吧.树莓派来自国外,国外嵌入式开源领域具备良 ...
- 树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED
开题:[好东西,值得研究!] 标题:树莓派2代B model 上手初体验,不用显示器,Python GPIO 点亮一颗LED [知识普及] 1,树莓派各版本对比: 2,树莓派2代BModel 主板,图 ...
- SylixOS 基于STM32平台的GPIO模仿I2C总线的驱动开发流程
2019独角兽企业重金招聘Python工程师标准>>> 概述 本文档以STM32F767平台为例,详细介绍SylixOS上GPIO模仿I2C总线的驱动开发流程. 初始化 GPIO模仿 ...
- 树莓派python控制gpio_树莓派的GPIO控制
陈拓chentuo@ms.xab.ac.cn 2018.06.09/2018.06.10 从网上下载了几张精美的图片,感谢图片的制作者! 0. 概述 本文介绍树莓派 Zero W的GPIO控制,并用L ...
- 利用Python实现键盘操控小车、通过树莓派GPIO使用python操控小车(树莓派小车、树莓派+Python+LN298操控小车)
(树莓派小车.树莓派+Python+LN298操控小车) 一.Python代码获取键盘实时键位 二.树莓派自带GPIO控制电机 大功告成!编写不易,大家成功后点个关注or赞谢谢~~ 一.Python代 ...
- 树莓派4B GPIO介绍及编程
1. 树莓派GPIO引脚对照表 2. GPIO引脚用途 3. GPIO编程 1. 树莓派GPIO引脚对照表 注:本表格适用于各版本,并且兼容26Pin的树莓派B,树莓派B为26 ...
最新文章
- angular2 step by step #1 - environment setup
- 【剑指offer-Java版】30最小的K个数
- 商人过河 java_商人过河问题(二)java实现
- 纯css实现responsive list -- 魔力calc
- centos 对已有卷扩容_centos7 逻辑卷扩容
- 可访问范围 与 visual 或 abstract “修饰符”
- 模拟银行自动提款系统python
- python 抓网卡数据包_Python选择网卡发包及接收数据包
- C#程序在线升级代码---webservice
- ReactRouter的实现
- 科学解释成功者成功的秘诀
- POI报表入门,excel,使用事件模型解析百万数据excel报表
- 湖北湖南广州计算机科学大学排行,校友会2018中国大学计算机类专业排名
- 图神经网络(GNN)资源帖视频及必读论文
- 面试复盘系列:从象棋提升之道趣说面试提升之法
- php predis连接超时,如何解决redis连接超时问题
- 这些优质的教育类公众号您知道么,非常实用!
- EditText相关设置
- centos7 下mono安装
- 利用 sqlplus spool 实现oracle 导出 csv 文件