I2C知识大全系列三 —— I2C驱动之单片机中的I2C

两种方式

单片机中的I2C驱动有两种方式。一种方式是用专用硬件I2C控制器实现,这种方式简单易行,品质也容易控制,只是会增加硬件成本方面的压力。另一种方式是用纯软件方式实现,这种方式几乎无硬件成本方面的考虑。

主要对比:

  • (1)硬件I2C用法比较复杂,模拟IIC的流程更清楚一些
  • (2)硬件I2C速度比模拟快,并且可以用DMA

模拟I2C可以在任何管脚上,而硬件只能在固定管脚上。

硬件I2C

对应芯片上的I2C外设,有相应I2C驱动电路,其所使用的I2C管脚也是专用的,因而效率要远高于软件模拟的I2C;一般也较为稳定,但是程序较为繁琐。硬件(固件)I2C是直接调用内部寄存器进行配置;而软件I2C是没有寄存器这个概念的。

 I2C控制器操作代码STM32系列单片机)

 

收发的三种方式:

  • 中断
  • 轮询
  • DMA

中断和轮询可以收发任意组合。

软件I2C

软件I2C一般是选择单片机中的任意两个空闲GPIO口(管脚复用都选择最基本的GPIO),其中一个口线作为时钟线(SCL),另一个口线作为数据线(SDA),与I2C设备的SCLSDA一一对应连接,用软件控制GPIO口即SCLSDA输出高低电平,模拟I2C总线的时序,从而与I2C设备进行通信。

GPIO模拟I2C程序

起始(start)

时钟线(SCL)高电平,数据线(SDA)从高电平跳变到低电平。代码如下:

结束(stop)

时钟线(SCL)在高电平期间,数据线(SDA)由低电平向高电平跳变。

发送

主机发送一个字节到IIC总线。

主机从IIC总线读取一个字节数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蓝天居士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值