iic的介绍

iic是用半双工的方式,由两个串口一个sda和scl,一个数据一个时钟

其他spi,UASRT的需要(ch340)电平转换芯片,如果用iic不需要电平转换,硬件实现简单。支持多设备

mcu一个挂载数据一个挂载时钟,都是共用两根信号线,而且可链接多个iic设备,最多可链接127个iic设备。速度不是很快

主机相当于一个mcu,而从机相当于设备

一个iic总线只使用两条总线线路,一条串行数据线(sda)用于表示数据,串行时钟线(scl)用于数据收发。每个设备都有独立地址

主机可以利用设备地址进行不同设备直接访问

(通过独立地址)

总线接上拉电阻接到vcc,sda和scl都是链接到vcc

如果iic空闲时候,会输出高阻态(可以借鉴gpio的四种输出模式1.开漏2.推挽这两个都是用mos管也是类似高阻态)(相当于断路,由于电阻过大,电流过不去)

当所有设备都空闲时,都会输出高阻态,由上拉电阻把总线拉成高电平

多个主机同时使用总线时,为了防止数据冲突,会使用仲裁方式决定哪个设备占用总线

仲裁方式可以比如单片机里的中断优先级,看哪个比较优先

三种传输模式:标准传输为100kb/s,快速模式为400kb/s,高速模式为3.4mb/s,大部分不支持高速模式

硬件iic和软件iic有什么区别?

硬件iic:对于芯片外设有驱动电路,有的原理图芯片标注串口,a9和a10=uart1,有的引脚对应的驱动电路

软件iic:使用普通gpio口,模拟iic的功能

硬件效率比软件快,软件是可以通过gpio口,软件模拟寄存器的工作方式,从而不受引脚限制

而硬件不行,但是硬件iic是直接通过内部寄存器进行配置,实际io口可以看芯片手册,固件iic端口是固定的

区分硬件iic和软件iic:

硬件iic用法比较复杂一些,模拟iic更加清晰

硬件iic比模拟iic快,并且可以用dma

模拟iic用非指定引脚,而硬件iic只能指定引脚

 

你可能感兴趣的:(单片机,stm32)