IIC协议保姆级教学

目录

1.IIC协议概述

2.IIC总线传输

3.IIC-51单片机应用

1.起始信号

2.终止信号

3.应答信号

4.数据发送

4.IIC-32单片机应用

用到的库函数:


1.IIC协议概述

  • IIC全称Inter-Integrated Circuit (集成电路总线)
  • 是由PHILIPS公司在80年代开发的两线式串行总线,用于连接微控制器及其外围设备。IIC属于半双 工同步通信方式

特点

  • 简单性和有效性

由于接口直接在组件之上,因此IIC总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组件

  • 多主控(multimastering)

其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当 然,在任何时间点上只能有一个主控。

构成

IIC串行总线一般有两根信号线,一根是双向的数据线SDA,另一根是时钟线SCL,其时钟信号是由主控 器件产生。所有接到IIC总线设备上的串行数据SDA都接到总线的SDA上,各设备的时钟线SCL接到总线 的SCL上。对于并联在一条总线上的每个IC都有唯一的地址。

2.IIC总线传输

IIC总线在传输数据的过程中一共有三种类型信号,分别为:开始信号、结束信号和应答信号。

//起始位,停止位,数据位,速度

这些信号中,起始信号是必需的,结束信号和应答信号

  • 起始信号
  • 终止信号
  • 应答信号

发送器每发送一个字节(8个bit),就在时钟脉冲9期间释放数据线,由接收器反馈一个应答信号。 应答信号为低电平时,规定为有效应答位(ACK,简称应答位),表示接收器已经成功地接收了该字节;

应答信号为高电平时,规定为非应答位(NACK),一般表示接收器接收该字节没有成功。

  • 数据发送的时序

3.IIC-51单片机应用

先确认IO口

sbit scl = P0^1;
sbit sda = P0^3;

1.起始信号

void IIC_Start()
{sda = 1;scl = 1;_nop_();sda = 0;_nop_();
}

2.终止信号

void IIC_Stop()
{sda = 0;scl = 1;_nop_();sda = 1;_nop_();
}

3.应答信号

char IIC_ACK()
{char flag;sda = 1;//就在时钟脉冲9期间释放数据线_nop_();scl = 1;_nop_();flag = sda;_nop_();scl = 0;_nop_();return flag;5.1.3 OLED写命令写命令/数据的代码
}

4.数据发送

void IIC_Send_Byte(char dataSend)
{int i;for(i = 0;i<8;i++){scl = 0;//scl拉低,让sda做好数据准备sda = dataSend & 0x80;//1000 0000获得dataSend的最高位,给sda_nop_();//发送数据建立时间scl = 1;//scl拉高开始发送_nop_();//数据发送时间scl = 0;//发送完毕拉低_nop_();//dataSend = dataSend << 1;}
}

4.IIC-32单片机应用

用到的库函数:

HAL_StatusTypeDef HAL_I2C_Mem_Write(I2C_HandleTypeDef *hi2c,
uint16_t DevAddress,
uint16_t MemAddress,
uint16_t MemAddSize,
uint8_t *pData,
uint16_t Size,
uint32_t Timeout)
  • 参数一:I2C_HandleTypeDef *hi2c,I2C设备句柄
  • 参数二:uint16_t DevAddress,目标器件的地址,七位地址必须左对齐
  • 参数三:uint16_t MemAddress,目标器件的目标寄存器地址
  • 参数四:uint16_t MemAddSize,目标器件内部寄存器地址数据长度
  • 参数五:uint8_t *pData,待写的数据首地址
  • 参数六:uint16_t Size,待写的数据长度
  • 参数七:uint32_t Timeout,超时时间
  • 返回值:HAL_StatusTypeDef,HAL状态(OK,busy,ERROR,TIMEOUT)

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——冒泡排序

一、冒泡排序是什么 冒泡排序&#xff1a; 冒泡排序(Bubble Sort)&#xff0c;又被称为气泡排序或泡沫排序。升序时&#xff1a;它会遍历若干次需要排序的数列&#xff0c;每次遍历时&#xff0c;它都会从前往后依次的比较相邻两个数的大小&#xff1b;如果前者比后者大&#x…

【草料】uni-app ts vue 小程序 如何如何通过草料生成对应的模块化二维码

一、查看uni-app项目 1、找到路径 可以看到项目从 src-race-pages-group 这个使我们目标的查询页面 下面我们将这个路径copy到草料内 2、找到进入页面入参 一般我们都会选择 onload() 函数下的入参 这里我们参数的是 id 二、草料 建议看完这里的教程文档 十分清晰&#xff01…

基于SDN技术构建多平面业务承载网络

随着企业数字化的浪潮席卷各个行业&#xff0c;传统网络架构面临着更为复杂和多样化的挑战。企业正在寻找一种全面适应数字化需求的网络解决方案。随着软件定义网络&#xff08;SDN&#xff09;的发展&#xff0c;“多业务SDN一张网”解决方案为企业提供了一种全新的网络架构&a…

DMA原理和应用

目录 1.什么是DMA 2.DMA的意义 3.DMA搬运的数据和方式 4.DMA 控制器和通道 5.DMA通道的优先级 6.DMA传输方式 7.DMA应用 实验一: 内存到内存搬运 CubeMX配置&#xff1a; ​编辑用到的库函数&#xff1a; 代码实现思路&#xff1a; 实验二: 内存到外设搬运 CubeMX…

redis + celery

首先&#xff0c;部署Redis数据库&#xff1a; 先下载包&#xff1a; wget http://download.redis.io/releases/redis-5.0.7.tar.gz 解压redis包&#xff1a; tar -xvf redis-5.0.7.tar.gz 编译&#xff1a; make sudo make install &#xff08;这样没有指定安装目录&#…

nodejs+vue面向中小学课堂教学辅助软件系统的设计与实现-微信小程序-安卓-python-PHP-计算机毕业设计

主要功能有&#xff0c;管理员通过后台会对此教学辅助进行审核&#xff0c;管理员在还可以进行首页、个人中心、学生管理、教师管理、班级信息管理、科目名称管理、课程信息管理、教学资料管理、作业信息管理、作业提交管理、作业成绩管理、在线考试管理、试题管理、考试管理、…

为什么要使用动态代理IP?数据采集使用动态代理有哪些优势?

随着互联网的普及&#xff0c;数据采集已经成为企业、营销人员和数据分析师的重要工作之一。然而&#xff0c;在采集数据的过程中&#xff0c;经常会遇到一些问题&#xff0c;如IP被封禁、访问受限等。为了解决这些问题&#xff0c;动态代理IP应运而生。那么&#xff0c;为什么…

Stable Diffusion进阶玩法说明

之前章节介绍了Stable Diffusion的入门&#xff0c;介绍了文生图的魅力&#xff0c;可以生成很多漂亮的照片&#xff0c;非常棒 传送门&#xff1a; Stable Diffusion新手村-我们一起完成AI绘画-CSDN博客 那我们今天就进一步讲讲这个Stable Diffusion还能做些什么&#xff0c; …

腾讯云4核8G服务器配置价格表,轻量和CVM标准型S5实例

腾讯云4核8G服务器S5和轻量应用服务器优惠价格表&#xff0c;轻量应用服务器和CVM云服务器均有活动&#xff0c;云服务器CVM标准型S5实例4核8G配置价格15个月1437.3元&#xff0c;5年6490.44元&#xff0c;轻量应用服务器4核8G12M带宽一年446元、529元15个月&#xff0c;腾讯云…

Redis(列表List)

使用LPUSH从头部添加元素&#xff0c;可以一次添加一个或多个。 使用LRANGE 查看列表中的数据&#xff0c;0表示起始位置&#xff0c;-1表示结束位置。 当然也可以使用RPUSH来从尾部添加元素。 可以使用RPOP从尾部删除元素&#xff0c;会返回删除的元素的值。 同理使用LPOP…

瑞吉外卖Day06

1.用户地址 1.1实体类 /*** 地址簿*/ Data public class AddressBook implements Serializable {private static final long serialVersionUID 1L;private Long id;//用户idprivate Long userId;//收货人private String consignee;//手机号private String phone;//性别 0 女…

【完美世界】石昊身上宝术至尊骨、上苍之手和轮回宝术哪个最强

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 完美世界动画中&#xff0c;石昊通过举起天人族的镇教之宝飞仙石&#xff0c;终于补全了第一块至尊骨的天赋宝术-上苍之手。然而&#xff0c;这只是开始&#xff0c;上苍之手的终极奥义还需要他慢慢领悟。 在…