(STM32)I2C硬件外设

I2C是同步时序,对硬件依赖性不大,依靠软件也可以非常方便模拟通信。USART串口是异步时序通信,每一位的时间要求非常严格,不能过长或者过短,所以对硬件依赖性较强。

软件I2C比硬件I2C更加灵活。硬件I2C比软件更加节省CPU资源,执行效率高,并且可以实现完整多主机通信,时序波形规整,通信速率快等。

硬件I2C和USART外设一样,写入CR  DR寄存器就可以  硬件自动完成其他时序。读取SR寄存器可以实时监控电路状态。

多主机模式分为固定多主机、可变多主机;固定多主机就是总线挂载设备当中固定数量的主机,当两个主机对总线控制产生冲突,仲裁赢得一方控制总线。可变多主机是总线上挂载的设备当中没有固定哪个设备是主机,当总线空闲,任何一个设备都可以控制主线与其他设备通信,通信完成后释放总线,继续保持从机状态,当多个设备都想要控制总线,产生总线冲突,总线仲裁,失败的一方让出控制权,这个模式就是所有设备一视同仁。

7位寻址和10位寻址在时序上的区别:7位寻址,发送的第一个字节7位地址位,1位读写位。前5位不会出现11110。

10位寻址,发送的第一个字节,前5位是11110,第8位是读写位。第6、7位和下一个字节的8位组成10位寻址位。

SMBus(system management bus)系统管理总线协议,基于I2C总线改进而来的。主要用于电源管理系统。和I2C非常相似。

硬件I2C有总线资源数量限制,此型号SMT32只有2路,引脚是固定的;软件模拟没有限制,只需要复制代码,即可创建新的总线通道,引脚可以随意指定。

由于I2C的弱上拉结构,会导致I2C上拉时出现迟滞现象,频率越快越明显,由于这一现象I2C的最大传输速率受到限制。

 

 SMBALERT是SMBus使用。

发送数据:数据寄存器的数据转移到移位寄存器当中时,状态标志位TXE置位,表示发送寄存器为空。 

接收数据:移位寄存器的数据转移到数据寄存器当中时,状态标志位RXNE置位,表示接收寄存器非空。

 STM32作为从机时,可以写入指定地址到自身地址寄存器当中,为自身指定地址从而被寻址。支持同时响应两个从机地址,写入双地址寄存器即可。

 发送数据帧时,用于CRC校验数据是否出现错误。

 使用硬件外设的时候,GPIO口的模式要配置成复用模式,复用模式下GPIO口输出交给外设。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值