IIC--集成电路总线

目录

一、IIC基础知识

1、设计IIC电路的原因:

2、上拉电阻阻值怎么确定

3、IIC分类

4、IIC协议

二、单片机使用IIC读写数据

1、 IIC发送一个字节数据:

2、IIC读取一个字节数据:


一、IIC基础知识

1、设计IIC电路的原因:

(1) 双总线接口外设一般要设计成开漏输出,一是防短路;二是做线与逻辑,方便仲裁。

(2) 两个从设备一个拉高,一个拉低,就会造成短路。而开漏输出,有上拉电阻限流,这样都不会造成短路。


(3) 第二个原因,就是多设备通信仲裁需要做线与逻辑,开漏输出能做到,如果用推挽输出做线与就会如上面原因,造成短路。

(4) 其实在IIC通信协议中(对于主设备而言),SCL可以配置为推挽输出,因为只需要输出时钟信号,而SDA除了输出数据信号,同时还需要扫描输入的应答信号,这个时候就需要配置为开漏输出;当然,若将两根线都配置为开漏输出,也没有问题,这个时候两根线都需要配置上拉电阻。

2、上拉电阻阻值怎么确定

需要进一步了解,通过计算出来,上拉电阻会根据从机设备多少而变化;

一般I\O端口的驱动能力在2mA-4mA量级。

(1) 阻值不能过小:

        当上拉电阻阻值过小时会导致从VCC输入的电路较大,进而使得MOS管不完全导通(由饱和状态变成放大状态),因为I2C协议规定,端口输出低电平的最高允许值为0.4V,故这样就会使得端口输出的低电平值增大。所以上拉电阻选取时不能低于1KΩ。

(2) 阻值不能过大:

        因为上拉电阻和总线电容之间形成了RC,如果电阻过大会导致总线拉高的时间拉长以及输出阻抗的增大,当输出阻抗增大到可以与负载阻抗抗衡时,输出的高电平会因为分压而减少。

综上所述,建议上拉电阻选择使用1.5K2.2K4.7K

3、IIC分类

硬件IIC:芯片里面把IIC的通讯协议通过电路实现了,有专用的IIC引脚,只需要配置下寄存器就能实现IIC通讯;

软件IIC:根据IIC通讯的时序协议,自己找两个引脚,按照IIC协议来比划一下,搞得跟硬件IIC差不多。

4、IIC协议

        I2C(Inter-Integrated Circuit)是一种串行通信协议,用于在集成电路之间进行数据传输。下面是I2C协议的时序图:

(1) 启动信号:

主控器将SCL线拉高,然后将SDA线拉高,形成一个启动信号。启动信号标志着一次数据传输的开始。

(2) 地址传输:八位设备地址=7位从机地址+读/写地址

主控器发送一个7位或者10位(一般7位)的设备地址,然后加上一个读/写位(R/W)来选择读取或写入操作。设备地址是要与之通信的设备的唯一标识。

(3) 数据传输:

主控器发送数据字节或接收数据字节。数据字节是要传输的实际数据。

(4) 确认信号:

在每个数据字节传输之后,接收器会发送一个应答(ACK)信号。如果接收器成功接收到数据字节,则发送一个低电平的应答信号。如果接收器无法接收到数据字节,则发送一个高电平的非应答(NACK)信号。

(5) 停止信号:

主控器将SCL线拉高,然后将SDA线拉低,形成一个停止信号。停止信号标志着一次数据传输的结束。

(6)字节从高位到低位传输,标准100k bps,快速 400k bps,超快速 1M bps

二、单片机使用IIC读写数据

1、 IIC发送一个字节数据:

void IIC_Send_Byte(u8 txd)
{                        
    u8 t;   

    SDA_OUT();         

    IIC_SCL=0;//拉低时钟开始数据传输

    for(t=0;t<8;t++)
    {              
        //IIC_SDA=txd&0x80;   //获取最高位
        //获取数据的最高位,然后数据左移一位
        //如果某位为1,则SDA为1,否则相反

        if(txd&0x80)
            IIC_SDA=1;
        else
            IIC_SDA=0;

        txd<<=1;       

        delay_us(2);   

        IIC_SCL=1;

        delay_us(2);

        IIC_SCL=0;    

        delay_us(2);
    }     
}    

2、IIC读取一个字节数据:

u8 IIC_Read_Byte(unsigned char ack)
{
    unsigned char i,receive=0;

    SDA_IN();        //SDA设置为输入

    for(i=0;i<8;i++ )
    {
        IIC_SCL=0;

        delay_us(2);

        IIC_SCL=1;

        receive<<=1;

        if(READ_SDA)receive++;   

        delay_us(1);
    }  

    if (!ack)
        IIC_NAck();        //发送nACK
    else
        IIC_Ack();         //发送ACK   

    return receive;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/390855.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day42 一个极简动画效果(复习相关属性)

<!DOCTYPE html> <html><head><title>动画页面</title><style>body {font-family: Arial, sans-serif;background-color: #f2f2f2;margin: 0;padding: 0;}.container {max-width: 800px;margin: 0 auto;margin-top: 100px;padding: 20px;b…

【学网攻】 第(29)节 -- 综合实验二

系列文章目录 目录 系列文章目录 文章目录 前言 一、综合实验 二、实验 1.引入 实验目标 实验设备 实验拓扑图 实验配置 实验验证 文章目录 【学网攻】 第(1)节 -- 认识网络【学网攻】 第(2)节 -- 交换机认识及使用【学网攻】 第(3)节 -- 交换机配置聚合端口【学网攻…

结构体实现位段

位段是结构体的一种&#xff0c; 是一种特殊的结构体。 位段可以自己设定元素的内存大小。不具备平台间的移植性。 位段的定义 下面是一个定义的位段 这里成员后面的数字代表比特位。 int a : 1;代表a只占一个比特位。 位段中的元素只能是int&#xff0c; char&#xff0c;…

C++ vector用法

目录 1. vector&#xff1a; 1.1 vector 说明 1.2 vector初始化&#xff1a; 方式1. 方式2. ​编辑方式3. 方式4. 方式5. 1.3 vector对象的常用内置函数使用&#xff08;举例说明&#xff09; pop_back&#xff08;&#xff09; 2. 顺序访问vector的几种方式&#x…

云计算基础-华为存储实验

存储配置流程 创建硬盘域&#xff08;CK&#xff0c;包括热备CK&#xff09;创建存储池&#xff08;CKG、Extent&#xff09;创建LUN、LUN组、将LUN加入LUN组创建主机、主机组、将主机加入主机组创建映射视图&#xff08;LUN组和主机组的映射&#xff09; 1. 创建CK 创建硬盘…

LEETCODE 167. 两数之和 II - 输入有序数组

class Solution { public:vector<int> twoSum(vector<int>& numbers, int target) {vector<int> result;//双指针 -矩阵// for(int i0;i<numbers.size();i){// for(int jnumbers.size()-1;j>i;j--){// if(numbers[i]numbers[j]target)…

【LLM-RAG】BGE M3-embedding模型(模型篇|混合检索、多阶段训练)

note M3-Embedding联合了3种常用的检索方式&#xff0c;对应三种不同的文本相似度计算方法。可以基于这三种检索方式进行多路召回相关文档&#xff0c;然后基于三种相似度得分平均求和对召回结果做进一步重排。 多阶段训练过程&#xff1a; 第一阶段&#xff1a;第一阶段的自…

(08)Hive——Join连接、谓词下推

前言 Hive-3.1.2版本支持6种join语法。分别是&#xff1a;inner join&#xff08;内连接&#xff09;、left join&#xff08;左连接&#xff09;、right join&#xff08;右连接&#xff09;、full outer join&#xff08;全外连接&#xff09;、left semi join&#xff08;左…

电商小程序08调用缓存

目录 1 将信息存入缓存中2 获取登录信息3 退出登录4 发布预览总结 小程序的登录功能里&#xff0c;如果只是将登录信息保存到全局变量中&#xff0c;存在的问题是如果小程序重新打开&#xff0c;用户的登录状态就丢失了。为了解决这个问题&#xff0c;我们需要用到微搭的缓存的…

初识最短路径

一.最短路径的介绍 最短路径是图论和网络分析中一个重要的概念&#xff0c;它指的是在一个图或网络中连接两个节点或顶点的路径中&#xff0c;具有最小权重总和的路径。这个权重可以表示为路径上边或弧的长度、耗费、时间等&#xff0c;具体取决于问题的背景和应用场景。 如果你…

基于Spring Boot的古典舞在线交流平台设计与实现,计算机毕业设计(带源码+论文)

源码获取地址&#xff1a; 码呢-一个专注于技术分享的博客平台一个专注于技术分享的博客平台,大家以共同学习,乐于分享,拥抱开源的价值观进行学习交流http://www.xmbiao.cn/resource-details/1758349555560165377

Compose 自定义 - 数据转UI的三阶段(组合、布局、绘制)

一、概念 Compose 通过三个阶段把数据转化为UI&#xff1a;组合&#xff08;要显示什么&#xff09;、布局&#xff08;要显示在哪里&#xff09;、绘制&#xff08;如何渲染&#xff09;。 组合阶段 Compisition 界面首次渲染时会将可组合函数转化为一个个布局节点 Layout Nod…

NVIDIA Chat with RTX

NVIDIA在2月13日发布了Chat With RTX&#xff0c;这是一款类似于ChatGPT的免费个性化 AI 聊天机器人&#xff0c;可以在配备 Nvidia RTX 显卡的 PC 上本地运行。它使用Mistral或Llama开放权重LLM&#xff0c;可以搜索本地文件并回答有关它们的问题。本文中我们一起来了解一下Ch…

【网络安全】什么样的人适合学?该怎么学?

有很多想要转行网络安全或者选择网络安全专业的人在进行决定之前一定会有的问题&#xff1a; 什么样的人适合学习网络安全&#xff1f;我适不适合学习网络安全&#xff1f; 当然&#xff0c;产生这样的疑惑并不奇怪&#xff0c;毕竟网络安全这个专业在2017年才调整为国家一级…

Arduino ESP8266/ESP32 TCP/UDP通讯例程

Arduino ESP8266/ESP32 TCP/UDP通讯例程 &#x1f527;需要配合上位机软件&#xff1a;网络调试助手&#xff08;http://www.cmsoft.cn/software.html&#xff09; &#x1f4dd;ESP8266/ESP32 作为TCP客户端使用 //要将ESP8266/32 Arduino TCPClient的调试输出发送到串口&am…

OpenAI首个文生视频模型亮相,你觉得咋样?

2月16日凌晨&#xff0c;OpenAI再次扔出一枚深水炸弹&#xff0c;发布了首个文生视频模型Sora。据介绍&#xff0c;Sora可以直接输出长达60秒的视频&#xff0c;并且包含高度细致的背景、复杂的多角度镜头&#xff0c;以及富有情感的多个角色。 目前官网上已经更新了48个视频d…

在Visual Studio中搭建Dynamo Python开发环境,效率飞一般的增长

最近在学习Dynamo中Python Script的用法&#xff0c;发现这个东西用起来太不友好了&#xff0c;不支持自动缩进&#xff0c;不支持自动填充和提示。用过Visual Studio做二开的都知道&#xff0c;在引用了Revit api以后&#xff0c;就可以自动填充和提示了。 本来英语就不好&am…

UI风格汇:毛玻璃风格风靡的原因解读

Hello&#xff0c;我是大千UI工场&#xff0c;设计风格是我们新开辟的栏目&#xff0c;主要讲解各类UI风格特征、辨识方法、应用场景、运用方法等&#xff0c;本次带来的是毛玻璃风格的解读&#xff0c;有设计需求可以私聊。 一、什么是毛玻璃风格 毛玻璃风格&#xff08;Fros…

Mysql5.6忘记密码,如何找回(windows)

mysql5.6安装 第一步&#xff1a;关闭正在运行的数据库服务 net stop mysql第二步&#xff1a;在my.ini文件当中的[mysqld] 任意一个位置放入 skip-grant-tables第三步&#xff1a;启动mysql服务 net start mysql第四步&#xff1a;服务启动成功后就可以登录了&#xff0c;…

Typora+PicGO+腾讯云COS做图床教程

文章目录 Typora&#xff0b;PicGO&#xff0b;腾讯云COS做图床教程一、为什么使用图床二、Typora、PicGO和腾讯云COS介绍三、下载Typora和PicGOTyporaPicGO 四、配置Typora、PicGO和腾讯云COS腾讯云COS配置PicGO配置Typora配置 Typora&#xff0b;PicGO&#xff0b;腾讯云COS做…