推广 热搜: csgo  vue  angelababy  2023  gps  新车  htc  落地  app  p2p 

I2C总线规范与I2C器件C51读写程序(一)

   2023-07-15 网络整理佚名790
核心提示:I2C总线规范可以参考有关资料,本文仅给出有关硬件操作的基本概念。发送器:发送数据到总线上的器件接收器:从总线上接收数据的器件主机在向从机写一字节后接收从应答,再进行后续操作(一般不考虑从应答位的具体值,仅在应答检测时用于判断从器件是否完成其内部写周期)*当从器件完成内部写周期后将发送一个应答信号(从应答)给主器件,以便可以继续进行下一次读操作3、I2C器件C51读写程序

1.I2C总线简介:

I2C总线是一种两线串行总线,它提供了一个小型网络系统,该系统为总线上的电路共享公共总线。 总线上的设备包括单片机、液晶驱动器、上层设备等。 自从提出I2C总线规范以来,I2C设备得到了广泛的应用。 I2C器件的应用大大减少了电路之间的布线,减小了电路板的尺寸,降低了硬件成本,提高了系统的可靠性。

2.I2C规范:

I2C总线规范可以参考相关资料,本文仅给出硬件操作的基本概念。

2.1. I2C总线术语解释:

发送器:向总线发送数据的设备

接收器:从总线接收数据的设备

主设备:发起数据传输并产生时钟信号的设备

从设备:由主设备寻址的设备

2.2. I2C总线时序定义:

起始位:当SCL=1时,SDA上有一个下降延迟

停止位:当SCL=1时,SDA上有上升沿延迟

*主设备​​向从设备发送停止信号,作用是使从设备处于就绪状态(或已知状态)

从机响应:SDA=0

*写入数据时,响应设备在第9个时钟周期将SDA线拉低,表示已接收到8位数据,可以继续接收。 主机向从机写入一个字节后,接收从机响应,然后进行后续操作(一般不考虑从机响应位的具体值,仅用于判断从机设备是否完成其操作)响应检测期间的内部写周期)

主站响应:SDA=0(使用)

* 读取数据时,主机每收到从机发送的一个字节数据(不是最后一个),就会返回主机响应ACK(SDA=0)。

到最后一个字节(SDA=1)时返回,无响应

当从机工作在读模式时,向主机发送一个8位数据后,释放SDA线并监听响应信号,一旦收到主机的响应信号,从机就继续发送数据; 如果主设备没有发送响应信号,从机停止传输数据并等待停止信号,则主设备必须向从机发送停止信号,使其进入待机电源模式,并将设备置于待机状态。已知状态

响应检测:使用响应检测读命令测试从机是否结束(通过从机响应来识别)

*当从设备完成内部写周期后,会向主设备发送响应信号(从设备响应),以便下一次读操作可以继续

3.I2C设备C51读写程序

3.1. 数据定义说明:

sbit sda=P0^0; //I2C设备SDA数据线

sbit scl=P0^1; //I2C设备SCL时钟线

# nops() {_nop_();_nop_();_nop_();_nop_();_nop_();} //nop指令号定义

乌查尔; //设备从机地址

乌查尔; //设备子地址

乌查*; //发送/接收数据缓冲区

乌查尔; //发送/接收数据的数量

注意:您可以在您的应用程序中修改上述值以适应您的演示设计

3.2. 子函数说明:(私有函数,不可调用)

void (void) //发送起始位

void (void) //发送停止位

void (bit ) //主要响应

说明:=1:ack主响应; =0:无响应

void (uchar c) //发送单个字节

uchar(void) //接收单个字节

注意:该函数需要与主响应一起使用

3.3. 模块功能说明:(I2C外部接口函数,可由应用程序调用)

void (uchar ,uchar c) //发送单字节数据到设备,不带子地址

无效(uchar,uchar,uchar *buf,uchar num)

//发送多字节数据到带有子地址的设备

void (uchar ,uchar *buf) // 从不带子地址的设备读取单字节数据

无效(uchar,uchar,uchar *buf,uchar num)

//从子寻址设备读取多个字节的数据

 
反对 0举报 0 收藏 0 打赏 0评论 0
 
更多>同类资讯
推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报
Powered By DESTOON