模拟IIC基本函数(伪函数实现)

每当主机向从机发送完一个字节的数据,主机总是需要等待从机给出一个应答信号,以确认从机是否成功接收到了数据,从机应答主机所需要的时钟仍是主机提供的,应答出现在每一次主机完成 8 个数据位传输后紧跟着的时钟周期,低电平 0 表示应答,1 表示非应答。/* 主机向从机发送一个SCL时钟脉冲,在SCL高电平期间,如果读取为低电平,表示从机成功收到了,如果为高电平,则表示从机没有回答,则从机接收数据失败*/当主机成功接收到从机发送的数据后,如果希望从机继续发送数据的话,就应向从机ACK,表示让从机继续发送数据。
摘要由CSDN通过智能技术生成

要实现的基本函数有如下这些;

1、I2C_Start:向从机发送起始信号。

2、I2C_Stop:向从机发送停止信号。

3、I2C_WriteByte:向从机写一个字节数据。

4、I2C_WaitAck:主机等待从机应答

5、I2C_ReadByte:向从机读一个字节的数据

6、I2C_Ack:主机向从机Ack

7、I2C_NAck:主机向从机NACK

(1)  I2C_Start:向从机发送起始信号

时序图:

 起始条件为:当 SCL 为高电平时,SDA 由高到低(下降沿)

void I2C_Start(void) //伪代码

{

    SDA输出1;

    SCL输出1;

    延时;   //延时的目的,让SCL时钟脉冲的高电平持续一段时间,至少0.6us以上

   SDA输出0;

   延时;  //延时的目的,让SDA的低电平持续稳定一段时间,这个时间不能少

  SCL输出0;

   延时://延时的目的,让SCL时钟脉冲的低电平持续一段时间,至少1.2us以上

}

通过以上代码就产生了起始信号了。

(2)、I2C_Stop&

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值