
I2C中有七位地址模式和十位地址模式,对于七位地址模式:
再开始时序的第一个字节作为寻址,写入七位地址和一位读写位,下一个字节就是Reg Address了
七位地址最多挂载2^7=128个设备
对于十位地址模式:十位地址,最多就有1024种可能了,其规定再起始时序的开始后,后两个字节都作为寻址,需要有五位作为标准位, 一般是起始时序后的第一个字节的前五位作为标志位,常见11110,表示这是十位地址模式,第6位第7位,和第二个字节的八位,共十位寻址,第8位还是读写位。
SMBus(System Management BUS)是系统管理总线,SMBus是基于I2C改进而来,主要应用于电源管理系统中。
硬件I2C必须要有硬件电路的支持,所以硬件I2C的资源是有限的
结构图:

当我们需要发送数据时,可以把一个字节的数据写到数据寄存器DR中,当移位寄存器没有数据移位时,这个数据寄存器的值就会转移到移位寄存器,再移位的过程中,我们就可以把下一个数据放到数据寄存器里等着了,一旦前一个数据移位完成,下一个数据就可以无缝衔接,继续发送;
当数据由数据寄存器转到移位寄存器时,就会置状态寄存器的TXE位为1;表示发送寄存器为空;当数据从SDA线来,经过数据控制到移位寄存器时,当移位寄存器集齐一个字节的数据后,会转移到数据寄存器中,并且置状态寄存器RXNE非空,这个时候我们就可以把数据从数据寄存器读出。
比较器和地址寄存器是在从机模式下运用的,自身地址寄存器存储的是从机地址,当stm32作为从机,在被寻址时,如果收到的寻址通过比较器判断和自身地址寄存器的值相等,那stm32就作为从机,响应外部主机的召唤。
并且stm32支持同时响应2个从机地址,所以还有双地址寄存器。
帧错误校验计算,当我们发送一个多字节的数据帧时,在这个模块中硬件可以自动执行CRC校验计算。
大多模块都是黑盒模型&

最低0.47元/天 解锁文章
2500

被折叠的 条评论
为什么被折叠?



