I2C 硬件外设 (并实现读写mpu6050)

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校验计算。

大多模块都是黑盒模型&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值