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

深圳罗湖外贸网站建设怎么做网站网站

深圳罗湖外贸网站建设,怎么做网站网站,wordpress 门窗主题,设计网页的基本流程IIC协议详解 一、IIC协议简介二、IIC总线结构图三、IIC通信流程详解1. 空闲状态 : 双高空闲2. 起始信号(START): 时高数下开始3. 停止信号(STOP): 时高数上结束4. 数据传输格式 : 时高数稳,时低数变5. 应答信号 四、写…

IIC协议详解

    • 一、IIC协议简介
    • 二、IIC总线结构图
    • 三、IIC通信流程详解
      • 1. 空闲状态 : 双高空闲
      • 2. 起始信号(START): 时高数下开始
      • 3. 停止信号(STOP): 时高数上结束
      • 4. 数据传输格式 : 时高数稳,时低数变
      • 5. 应答信号
    • 四、写操作流程
    • 五、读操作流程
    • 六、IIC代码(STM32)详解
      • 1. 初始化函数
      • 2. 写数据函数(主写从)
    • 七、小结
    • 八、常见问题

一、IIC协议简介

IIC(I²C)是由飞利浦公司提出的一种串行通信协议,仅用两根线:

  • SDA:串行数据线
  • SCL:串行时钟线

它是一种半双工、多主机、主从通信协议,每个从设备都有唯一的地址。数据传输速度支持:

  • 标准模式:100kbps
  • 快速模式:400kbps
  • 高速模式:3.4Mbps

二、IIC总线结构图

两条总线连接主从设备,SDA和SCL均需上拉电阻保持高电平(空闲状态)。

三、IIC通信流程详解

1. 空闲状态 : 双高空闲

SDA 和 SCL 都为高电平时为空闲状态

2. 起始信号(START): 时高数下开始

在 SCL 为高电平时,SDA 从高变低,表示通信开始。

3. 停止信号(STOP): 时高数上结束

在 SCL 为高电平时,SDA 从低变高,表示通信结束。

4. 数据传输格式 : 时高数稳,时低数变

  • 数据按字节(8位)发送
  • 每个字节后跟一个应答位(ACK)
  • 传输过程中,SDA 数据需在 SCL 高电平期间稳定
    当SCL为高电平时,便会获取SDA数据值,其中SDA数据必须是稳定的(若SDA不稳定就会变成起始/停止信号)。
    当SCL为低电平时,便是SDA的电平变化状态。
    若主从机在传输数据期间,需要完成其它功能(例如一个中断),可以主动拉低SCL,使I2C进入等待状态,直到处理结束再释放SCL,数据传输会继

5. 应答信号

I2C总线上的数据都是以8位数据(字节)进行的,当发送了8个数据后,发送方会在第9个时钟脉冲期间释放SDA数据,当接收方接收该字节成功,便会输出一个ACK应答信号,当SDA为高电平,表示为非应答信号NACK,当SDA为低电平,表示为有效应答信号AC

  • ACK:SDA 被接收方拉低,表示接收成功
  • NACK:SDA 保持高电平,表示接收失败或结束

四、写操作流程

  1. 主机发送起始信号
  2. 发送从机地址 + 写方向(最低位,第八位为0)
  3. 等待从机应答ACK
  4. 发送寄存器地址和数据
  5. 每发送1字节都需从机应答
  6. 最后发送停止信号

五、读操作流程

  1. 主机发送起始信号
  2. 发送从机地址 + 写方向(0)
  3. 等待应答,发送寄存器地址
  4. 发送重新开始信号(重复START): 主机要改变通信模式(主机将由发送变为接收,从机将由接收变为发送),所以主机重新发送一个开始start信号,然后紧跟着发送一个从机地址,注意此时该地址的第8位为1,表明将主机设置成接收模式,开始读取数据
  5. 发送从机地址 + 读方向(1)
  6. 接收数据,每接收一个字节主机需发送 ACK
  7. 最后一个字节发 NACK + 停止信号

六、IIC代码(STM32)详解

1. 初始化函数

void I2C_Config(void)
{GPIO_InitTypeDef GPIO_InitStructure;I2C_InitTypeDef I2C_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);  // 开启GPIOB时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1, ENABLE);   // 开启I2C1时钟GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; // SCL = PB6, SDA = PB7GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;        // 复用开漏输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOB, &GPIO_InitStructure);                 // 初始化GPIOBI2C_InitStructure.I2C_Mode = I2C_Mode_I2C;             // I2C模式I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;     I2C_InitStructure.I2C_OwnAddress1 = 0x00;              // 本机地址I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;            // 打开应答I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit; I2C_InitStructure.I2C_ClockSpeed = 100000;             // 100kHz速率I2C_Init(I2C1, &I2C_InitStructure);I2C_Cmd(I2C1, ENABLE);  // 使能I2C
}

2. 写数据函数(主写从)

void I2C_SendData(uint8_t slaveAddress, uint8_t* pBuffer, uint16_t numByteToWrite)
{I2C_GenerateSTART(I2C1, ENABLE);  // 产生起始信号while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_MODE_SELECT));I2C_Send7bitAddress(I2C1, slaveAddress, I2C_Direction_Transmitter); // 发地址+写方向while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED));while (numByteToWrite--){I2C_SendData(I2C1, *pBuffer++);  // 发送数据while (!I2C_CheckEvent(I2C1, I2C_EVENT_MASTER_BYTE_TRANSMITTED)); // 等待发送完成}I2C_GenerateSTOP(I2C1, ENABLE); // 发送停止信号
}

七、小结

名称描述
SDA数据线(双向)
SCL时钟线(主机控制)
STARTSDA下降沿 + SCL高,表示开始
STOPSDA上升沿 + SCL高,表示结束
ACK/NACK接收方对字节的响应

八、常见问题

  • 为什么要加上拉电阻?
    因为SDA/SCL为开漏结构,无法主动输出高电平。
  • 为什么要重复发送START?
    切换读写模式或设备地址时,需发START而不是STOP。
http://www.dtcms.com/a/513168.html

相关文章:

  • 4.5.更新数据
  • 网站新闻更新怎么设计wordpress标题调用标签
  • HPjtune.jar 使用教程(附下载与调优步骤)​
  • 松江网站建设培训费用视频制作软件哪个好用
  • QCResUNet:体素级与受试者级联合的分割质量预测|文献速递-文献分享
  • 020网站建设合同范本邢台公司网站建设
  • 软考 系统架构设计师系列知识点之杂项集萃(177)
  • 做网站如何通过流量赚钱重庆建个网站需要多少钱?
  • AI进化论 —— LeNet 论文学习
  • 银河麒麟Kylin申威SW64系统安装 rpcbind-1.2.5-2.p01.ky10.sw_64.rpm 方法
  • 太原做网站排名几十张照片合成视频
  • 徐州企业建站模板房天下搜房网官网
  • 华为OD机试C卷 - 会议室占用时间段 - 区间合并 - (Java C++ JavaScript Python)
  • 网站建设百度推广开户静态网页模板源代码
  • 共享虚拟主机做网站够用么如何从零开始做网站
  • 网站收录很好没排名南京奥美广告公司
  • 【学习系列】SAP RAP 14:行为定义-Save Options
  • STM32H743-ARM例程25-USB_VCP
  • A星寻路算法
  • 网站换代理天津市建设工程管理信息网
  • 项目开发手册-开发流程
  • 图像基础知识
  • 温岭自适应网站建设wordpress体育直播
  • Wincc报表自动导出Excel文件并以时间方式命名
  • 网站建设代运营方案给我一个网站图片
  • 网站价格明细表哪个网站做兼职有保障
  • 东莞市网站建设平台小型企业网站开发价格
  • 郑州市城乡建设局网站centos7 wordpress 安装
  • 做论坛网站需要哪些前置审批网站做那个效果好
  • 通过pandas merge_asof模糊匹配,快速计算财务同比指标