当前位置: 首页 > news >正文

STM32开发(USART:IIC总线)

一、IIC总线基础概念

                              UART总线
PC端(CPU)                 <---------- ->    开发板(STM32U575RIT6)IIC总线
主控芯片(STM32U575RIT6)    <----------->    传感器驱动芯片(SHT20/SI7006空气温湿度传感器)

1、IIC总线是什么

1. IIC总线,也叫IIC总线,中文名字为集成电路总线
2. IIC总线是飞利浦公司早期设计一款串行、同步、半双工总线
3. IIC总线有IIC_SCL时钟线,IIC_SDA数据线,VCC电源线,GND接地线
4. IIC总线的时钟线和数据线都需要外接上拉电阻
5. IIC总线的通讯速率:低速(100Kbps),中速(400Kbps),高速(3.4Mbps)
6. IIC总线的应用场景:OLED屏等等
7. IIC总线支持主从机模式(Master/Slaver),支持多主机多从机的模式,一般使用单主机多从机的模式主机:主动发起数据通信或主动终止数据通信的设备从机:被动发起数据通信或被动终止数据通信的设备
8. 每个使用IIC总线协议的设备都具有自己唯一的7位设备地址

2、IIC总线的硬件连接

1、IIC总线有:VCC电源线,SCL时钟线,SDA数据线,GND接地线SCL时钟线:用于将挂载在IIC总线上的设备时钟同步SDA数据线:用于挂载在IIC总线上的设备进行数据传输
2、IIC总线的SCL时钟线和SDA数据线上都会外接上拉电阻外接上拉电阻的作用:1.保证在没有使用IIC总线进行数据通信的时候,让让IIC总线的时钟线和数据线都处于高电平2.外接上拉电阻,在一定程度上可以稳定电路,减少IIC总线数据传输的损耗

1)单主机多从机模式

主机:STM32U575RIT6
从机1:E2PROM(设备地址为0x10)
从机2:A/D模数转换器(设备地址为0x20)
从机3:时钟日历(设备地址为0x30)
从机4:空气温湿度传感器SHT20(设备地址为0x40)问题:主机想要获取从机4的数据(主机想要和从机4进行数据通信)此时存在4个从机设备,主机如何找到从机4空气温湿度传感器?
解释:每个挂载在I2C总线上的设备,都有一个自己唯一的7位设备地址(7位从机地址)此时,主机会向挂载在I2C总线上的每个从机设备发送想要通信的从机的设备地址直到对应从机获取到主机发送的从机地址,并和自己的从机地址作比较,相等就进行通信,不相等就不进行通信7位从机地址不是理论上的内存地址(不占用内存空间),只是一个标识符(数字、ID号)

2)多主机多从机模式

主机1:STM32U575RIT6(设备地址为0x01)
主机2:STM32MP157AAA(设备地址为0x02)从机1:E2PROM(设备地址为0x10)
从机2:A/D模数转换器(设备地址为0x20)
从机3:时钟日历(设备地址为0x30)
从机4:空气温湿度传感器SHT20(设备地址为0x40)举例:
直接编程控制U5,U5先给MP157A发送数据(命令:让MP157A回复数据),当MP157A收到命令后,就会回复数据给U5主机:STM32U575RIT6从机:STM32MP157AAA1、STM32U575RIT6 -> STM32MP157AAA (U5是发送器,MP157A是接收器)2、STM32MP157AAA -> STM32U575RIT6 (MP157A是发送器,U5是接收器)得到:主机和从机都可以担任发送器和接收器的角色,只是区别在于一个是主动、一个是被动

二、IIC总线的时序逻辑图

1、起始信号和终止信号

起始信号(S):当SCL时钟线处于高电平时,SDA数据线产生一个下降沿信号,标志IIC总线通讯开始
终止信号(P):当SCL时钟线处于高电平时,SDA数据线产生一个上升沿信号,标志IIC总线通讯结束注意:起始信号和终止信号只能由主机产生,时钟信号最好由主机产生当产生起始信号后,此时IIC总线处于占用状态,IIC总线的SCL时钟线处于低电平状态当产生终止信号后,此时IIC总线处于空闲状态,IIC总线的SCL时钟线处于高电平状态

2、数据传输信号

数据传输信号:1. 接收数据信号:当SCL时钟线处于高电平时,要求SDA数据线上的数据稳定(不能发生变化),便于读取2. 发送数据信号:当SCL时钟线处于低电平时,允许SDA数据线上的数据变化,此时发送数据,不能读取IIC总线传输数据时,数据的最小单位为一字节(8位)
时钟周期:一个高电平 + 一个低电平组成的时钟信号的时间
想要完成一次最小单位的数据收发,至少需要8个时钟周期(一次完整的数据收发至少需要29个时钟周期)

3、应答信号

主机每过1个时钟周期(每到低电平),向IIC总线发送1bit数据,IIC总线的最小传输单位为1字节,
完成一个最小单位的数据发送,需要8个时钟周期,接收端在第9个周期时,向发送端回复应答信号注意:当IIC总线每完成一次最小单位的数据传输时,接收器必须在第9个时钟周期回复应答信号情况1:主机发,从机收主机:发送器从机:接收器当主机发送完1个字节(8位)的数据后,发送器和接收器的角色发生变化从机:发送器主机:接收器从机回复应答信号情况2:主机收,从机发主机:接收器从机:发送器当从机发送完1个字节(8位)的数据后,发送器和接收器的角色发生变化主机:发送器从机:接收器主机回复应答信号

4、寻址信号(一种特殊的数据信号)

寻址信号:就是主机发送的用于寻找需要通信的从机的地址信号1、寻址信号一定由主机发送,并且必须跟在起始信号后
2、由于从机地址是7位的,不满足IIC总线最小传输单位要求(最小为8位,1个字节),所以需要帮忙添加1位,凑成8位数据才可以发送
3、R/W:主机的读写标志位W(0):写标志位,代表主机需要向IIC总线上写入数据R(1):读标志位,代表主机需要从IIC总线上读取数据假设从机的设备地址为:0x40
主机发,从机收:寻址信号为:(0x40 << 1) | 0主机收,从机发:寻址信号为:(0x40 << 1) | 1

三、IIC总线的协议格式

        IIC总线的组成部分:起始信号,寻址信号,数据信号,应答信号,非应答信号,终止信号

1、发送一个字节数据的协议格式

2、发送多个字节数据的协议格式

3、接收一个字节数据的协议格式

4、接收多个字节数据的协议格式

5、向地址不连续寄存器写入数据

6、总结

1.不论是发送还是接收,都需要先发送从机地址,找到从机,确认目标从机在线
2.不论是发送还是接收,都需要确认从机中的目标寄存器,是否可读,是否可写
3.只有找到从机,并确认从机中的目标寄存器可以进行读或写,才正式开始发送或接收数据
4.当主机接收数据时,终止信号前必须先发送非应答信号,告诉从机停止发送数据以上都是由主机和从机的特性决定的:
主机:主动发起数据通信或主动结束数据通信的设备,具备主动性
从机:被动发起数据通信或被动结束数据通信的设备,具备被动性
只有主机给从机发送非应答包(NACK),从机才会停止数据传输
如果主机不给从机发送非应答包,从机会一直发送数据信号,影响后续的数据传输

四、分析温湿度传感器的芯片手册

1、查找SHT20手册的目的

SHT20/SI7006芯片:支持空气温度和空气湿度的检测需要到芯片手册中查找什么信息?1、找到SHT20/SI7006这个从机的从机地址2、找到存储空气温度数据和空气湿度数值的寄存器地址3、找到当前空气温湿度传感器支持的检测精度4、找到是否存在将空气温湿度模拟量和空气温湿度数字量进行转换的公式5、当前空气温湿度传感器的工作环境范围

2、SHT20芯片的基本信息

3、SHT20的工作环境


4、设备地址及读写标志位

5、通讯协议格式

6、寄存器地址

7、测试精度设置

8、温湿度测量所需时间

9、模数转换公式


文章转载自:

http://2Gx5ZPJ6.fykqh.cn
http://6bYJUJ7E.fykqh.cn
http://gZyzohiA.fykqh.cn
http://FcVpso2t.fykqh.cn
http://GHpC0ucZ.fykqh.cn
http://WoKNK3w2.fykqh.cn
http://yni8zKXU.fykqh.cn
http://uVersDMM.fykqh.cn
http://tKaet9NL.fykqh.cn
http://e0LyO6zu.fykqh.cn
http://rllvNGGu.fykqh.cn
http://0mQNUa6x.fykqh.cn
http://kshf0LoY.fykqh.cn
http://QuLCVCKQ.fykqh.cn
http://wvRIakBp.fykqh.cn
http://wjIl9dTh.fykqh.cn
http://DuJupuCp.fykqh.cn
http://gCvdjw6T.fykqh.cn
http://hbz92grB.fykqh.cn
http://vLgtU0cQ.fykqh.cn
http://nO5Hcgv9.fykqh.cn
http://vVYidKgr.fykqh.cn
http://hI0J40xO.fykqh.cn
http://5rKxeWQc.fykqh.cn
http://1Sjvnvq5.fykqh.cn
http://N0GflFJK.fykqh.cn
http://u0tlvkrJ.fykqh.cn
http://bfpenP6v.fykqh.cn
http://RcM4LL2m.fykqh.cn
http://poOMPYCe.fykqh.cn
http://www.dtcms.com/a/379461.html

相关文章:

  • Spring框架中用到的设计模式
  • 从源码和设计模式深挖AQS(AbstractQueuedSynchronizer)
  • 四、计算机网络与分布式系统(中)
  • 半导体学习笔记
  • 深入解析Dart虚拟机运行原理
  • 一文教您解决Ubuntu ModuleNotFoundError: No module named ‘_tkinter‘问题
  • 部署合约常见的问题
  • Python快速入门专业版(二十三):for循环基础:遍历字符串、列表与range()函数(计数案例)
  • MySQL 非空约束(NOT NULL):看似简单,却决定数据质量的关键细节
  • 【笔记】悬架减振器的阻尼带宽
  • C++:迭代器失效问题(vector为例)
  • TDengine 选择函数 TAIL() 用户手册
  • 在Linux系统中清理大文件的方法
  • oracle里的int类型
  • 【开关电源篇】整流及其滤波电路的工作原理和设计指南-超简单解读
  • 第五章 Logstash深入指南
  • 猫狗识别算法在智能喂食器上的应用
  • 数据库事务详解
  • Linux学习:基于环形队列的生产者消费者模型
  • size()和length()的区别
  • Windows系统下安装Dify
  • 企业云环境未授权访问漏洞 - 安全加固笔记
  • sv时钟块中default input output以及@(cb)用法总结
  • 广谱破局!芦康沙妥珠单抗覆罕见突变,一解“少数派”的用药困境
  • Guli Mall 25/08/12(高级上部分)
  • 彩笔运维勇闯机器学习--随机森林
  • Python 面向对象实战:私有属性与公有属性的最佳实践——用线段类举例
  • 使用deboor法计算三次B样条曲线在参数为u处的位置的方法介绍
  • 认识HertzBeat的第一天
  • AUTOSAR进阶图解==>AUTOSAR_EXP_ApplicationLevelErrorHandling