Windows下I2C总线的GPIO模拟.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Windows下I2C总线的GPIO模拟   摘要:简要介绍了I2C总线操作和基于Windows内核模式驱动的用户态I/O端口访问,分析了Windows平台下GPIO管脚模拟I2C总线的可行性,讲解了编程实现过程,连接I2C接口的安全芯片进行了验证。   关键词:I2C总线;GPIO管脚;Windows;内核模式驱动   中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2017)01-0100-04   Abstract: I2C bus operations and user-mode I/O port access using Windows kernel mode driver are briefly introduced in this paper. And a feasibility analysis on simulating I2C bus with GPIO pins under Windows is made. Then we do a programming impelmentation to the simulating method, and verify the software by accessing an I2C-interfaced security chip.   Key words: I2C bus; GPIO pins; Windows; kernel mode driver   1 背景   I2C?线是Philips公司推出的两线式串行总线,用于嵌入式系统连接各种低速外围设备,如RTC、EEPROM、传感器、安全芯片等。许多单片机、嵌入式芯片等都带有I2C主控器,其采用的操作系统如嵌入式Linux等均带有I2C驱动程序,编程中可直接使用。对于不含I2C主控器的芯片,为了满足定制系统设计需求,一般也有大量的GPIO管脚,可用于软件模拟I2C总线。   Intel公司的X86系列CPU和配套的桥接芯片,除了用于桌面PC,还广泛用于网关、收银、视频等各种嵌入式服务器。这类服务器一般采用Windows Server操作系统,不带有I2C主控器或不提供I2C驱动程序。为了实现软件授权和保护,这类嵌入式服务器首先会选择管脚少、性价比高的I2C接口的安全芯片。为了满足这种需求,一种方法是采用USB转I2C的专用芯片,但这将增加硬件成本和软件复杂度。   基于I2C总线的简单性,可选用桥接芯片的GPIO管脚来模拟I2C主控器。GPIO管脚通过X86的I/O指令即可完全控制;但普通应用程序在Windows下无法直接访问I/O端口,可通过内核模式驱动程序来实现。在Windows平台下通过GPIO管脚模拟I2C总线,将是一种简单有效、低成本的解决方法。本文就这个模拟过程进行探讨。   2 I2C总线的读写   I2C总线通过时钟和数据两根线即可实现完善的同步数据传输。当发送数据时,一个设备作为主机,另一个设备作为从机。主设备为数据传输产生时钟信号。I2C通讯协议要求在时钟线(SCL, Serial Clock Line)处于低电平时,数据线(SDA, Serial Data Line)才能变化。协议中每个从设备都有一个地址,会一直监视总线上的主设备要初始化数据传输时发出的地址并匹配。   总线的工作流程如下:   空闲:当总线上没有数据通讯发生时,SCL和SDA通过上拉电阻呈高电平。   开始:SCL为高时,SDA由高变低,这时数据传输开始。   地址:主设备发送地址信息,包含7位的从设备地址和1位的读写位(表明数据流的方向)。发送完一个字节后,从设备会发送一位的认可位(ACK)。   数据:根据方向位,数据在主设备和从设备之间传输。数据一般以8位传输,高位在前。接收器上用一位的ACK表明一个字节收到了。传输可被终止或重新开始。   停止:当SCL为高时,SDA由低变高,这时数据传输结束,总线重新进入空闲状态。   一次完整的数据传输时序如图1所示。   标准I2C总线的传输速率是100KHz,通过线与逻辑实现慢速设备等待。I2C总线的这些特性允许主设备的功能通过两个GPIO管脚模拟而实现。   3 Windows下的I/O端口访问   端口I/O指令允许X86 CPU与系统中的其他硬件设备通信。对于硬件设备的低层次直接控制,C函数_inp()和_outp()(用X86处理器的IN和OUT指令实现)允许从端口读入或向一个端口写。但在Windows应用程序中插入_inp()或者_outp(),将导致特权指令异常消息,并给出终止或调试出错应用程序的选择。Windows的体系结构决定了应用程序不能直接通过IN和OUT指令访问硬件。否则,应用程序可以

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档