| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> IIC总线 -> 正文阅读 |
|
[嵌入式]IIC总线 |
1.概念 ? ? ? ? IIC总线是PHLIPS公司在八十年代初推出的一种串行的半双工同步总线,主要用于连接整体电路。 ? ? ? ? 同一块板子两个芯片之间的通信是通过IIC总线进行的(stm32mp157a <-----IIC----->SI7006 ? ? ? ? IIC总线为两线制,只有双跟双向信号线,一根是数据线SDA,另一根是时钟线SCL。 ? ? ? ? IIC硬件结构简单,接口连接方便,成本较低,因此在各个领域得到了广泛的应用。 ? ? ? ? IIC总线传输速率 ,低速:100k,中速:400k,全速:3.4M。 ? ? ? ? IIC总线需要接两个上拉电阻,这两个上拉电阻作用在IIC总线为空闲状态时保持高电平。 ???????? ?2.IIC总线硬件连接 ? ? ? ? ?IIC总线支持多主机多从机模式,同一时刻,只能有一个主机和一个从机进行通信。 ? ? ? ? 在实际开发中,大多数使用单片机多从机模式进行通信。 ? ? ? ? 挂接到每一个IIC总线上所有的设备,每一个从机都有自己唯一的七位从机地址。 ? ? ? ? 在总线上,发送数据的叫做发送器,接收数据的叫做接收器 ? ? ? ? 主动发起数据通信的叫做主机,只能被动接收数据的叫做从机。 ? ? ? ? 时钟信号是由主机产生的,作用给从机,,保证总线上传输数据同步。 3.IIC硬件电路图 ? ?4.IIC时序 ? ? ? ? a.起始信号 ???????? ?????????备注:起始信号和终止信号都是由主机产生的,起始信号产生之后,总线处于占用状态, 终止信号产生之后,总线处于空闲状态 起始信号:在SCL为高电平期间,SDA(数据线)从高电平到低电平的变化(下降沿) ? ? ? ? b.停止信号 ????????停止信号:在SCL为高电平期间,SDA(数据线)从低电平到高电平的变化(上升沿) ? ? ? ? c.数据传输 ???????? ?????????1>IIC总线传输时,时钟信号在高电平期间,数据线上的数据必须保持稳定(接收器可以从总线上读取数据), 2>时钟信号在低电平期间,数据线上的数据允许发生变化(发送器可以向数据线上写数据) ? ? ? ? d.应答信号和非应答信号 ???????? ?????????1.每一个字节必须保证是8位的长度,数据传送时,先发送高位,在发送低位,一帧数据=8位数据位+1位应答位=9位 2.发送器在发送完8位的数据位之后,接收器必须在第9个时钟周期,返回一个应答信号(0),或者非应答信号(1) 在第9个时钟低电平期间,接收器向数据线上写入数据 在第9个时钟高电平期间,发送器从数据线上读取数据 如果读到的是高电平,代表是非应答信号 如果读到的是低电平,代表是应答信号 ? ? ? ? e.寻址 ???????? ?????????1.IIC总线上传输数据是广义的,既可以是地址信号,也可以是数据信号 2.主机在起始信号产生之后,必须要传送一个7位的从机地址,第8位是数据传输的方向位 3.用0表示主机发送数据(写),用1表示主机接收数据(读) 5.框图 ????????? 6.IIC协议 ? ? ? ? a.主机给从机发送一个字节 ???????? ? ? ? ? b.主句给从机发送多个连续字节 ????????? ? ? ? ? c.从机给主机发送一个字节 ????????? ? ? ? ? d.从机给主机发送多个连续字节 ????????? 7.GPIO模拟IIC协议 ????????? 8. 分析si7006 ????????通过框图可知,分析si7006芯片手册需要做以下几个步骤: 1.si7006从机地址 2.找到采集温度湿度命令码 3.初始化si7006芯片,初始化的值,写到哪一个寄存器中 4.读取温湿度芯片IIC协议 5.采集温湿度数字量转换为模拟量公式 ? ? ? ? a.从机地址 ???????? ?????????从机地址 + 写 : 0x40 << 1 | 0, 从机地址 + 读 : 0x40 << 1 | 1 ? ? ? ? b.温度湿度命令码 ???????? ? ? ? ? ?c.温度湿度转换公式 ???????? ? ? ? ? ?d.si7006寄存器初始化 ???????????????? 代码 IIC.c文件
main.c文件
|
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:15:13- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |