IIC

本文详细介绍了IIC通信协议的过程,包括起始信号、终止信号的生成,等待应答信号的检测,以及如何产生应答和不产生应答的信号。通过示例代码解释了如何发送和接收字节数据,强调了数据传输中的关键时序和电平变化。
摘要由CSDN通过智能技术生成

  大致的一个数据传输流程是:主机向SDA线上发送一个起始信号,表示有信号进行传输,此时所有连接到IIC总线上的芯片都处于接收状态,接下来,主机发送想要与其进行数据传输的从机地址信号,所有的从机都会接收到该地址信号并和自己固有的地址信号进行匹配,当配对成功时,接下来就在时钟信号的带动下进行数据传输,数据的传输是按照每8位一个单元进行数据的传输。每一位的传输过程中,在SCL高电平期间,一定要保证SDA数值的稳定,否则会出现出错的情况,SDA数值的改变发生在SCL的低电平期间。最终8位全部传输完毕,从机产生一个应答信号给主机,主机在接收到该应答信号后决定接下来是发送一组新的数据还是终止发送。

//I/O方向设置

#define SDA_OUT() {GPIOB->CRL &= 0X0FFFFFFF;GPIOB->CRL |= 3<<28;} //0011 通用推挽输出,50M

#define SDA_IN() {GPIOB->CRL &= 0X0FFFFFFF;GPIOB->CRL |= 8<<28;} //1000 上拉/下拉输入

 

//I/O操作函数

#define IIC_SCL PBout(6)

#define IIC_SDA PBout(7)

#define READ_SDA PBin(7)

 

其中SDA_IN()、 SDA_OUT()设置了I/O口的方向,也就是SDA是输入那?还是输出那?

IIC_SCL   是SCL输出管脚

IIC_SDA   是SDA输出管脚

READ_SDA  读取SDA输入引脚,等待应答信号时要用。

 

OK!接下来就

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值