嵌入式实验---实验六 I2C传输实验

news2024/11/24 5:35:23

一、实验目的

1、掌握STM32F103I2C传输程序设计流程;

2、熟悉STM32固件库的基本使用。

二、实验原理

1、本案例利用I/O端口通过KEY01按键来控制STM32F103R6向24C02写入“hello”,通过另外一个按键KEY02来控制STM32F103R6从24C02读取“hello”(对应十六进制为“68 65 6c 6f”),并通过一个I2C模拟器显示相关信息。同时,用户可以通过USMART控制在24C02的任意地址写入和读取数据。

三、实验设备和器材

电脑、Keil uVision5软件、Proteus 8 Professional软件

四、实验内容和步骤

4.1 代码开发

按照书本中实验流程在Keil中完成I2C传输实验的代码开发;

4.2 原理图设计

在Proteus中完成原理图的设计,如图7所示。

图7 I2C传输实验原理图

五、实验记录和实验结果

5.1 实验效果记录(附照片即可)

5.2 实验效果说明

在I2C模拟器上显示相应的写入和读取信息,通过仿真环境验证这些操作的正确性。用户能够清楚地看到数据在STM32F103R6和24C02之间的正确传输和存储。写入数据“Hello”,读出“68 65 6c 6f”的十六进制表示。

六、实验预习要求

  1. 实验前认真阅读本实验指导;
  2. 熟悉书本中相关操作及相关器件。
  3. 完成5.1和5.2内容。

七、思考题

1. I2C通信传输的特点

  1. 双线制:I2C通信使用两根线路:串行数据线(SDA)和串行时钟线(SCL)。这种双线制简化了硬件连接,使得设备之间的通信更为简便和可靠。

  1. 主从结构:在I2C通信中,总是存在一个主设备(Master)和一个或多个从设备(Slave)。主设备负责发起通信、生成时钟信号和控制总线访问,而从设备则被动响应主设备的指令。

  1. 多主机制:I2C协议支持多主设备,即在同一条总线上可以连接多个主设备,但每个时刻只能有一个主设备处于活跃状态。这种机制允许设备根据优先级来进行总线访问。

  1. 地址寻址:每个I2C设备都有一个唯一的7位或10位地址,用于在总线上标识自己。主设备通过发送目标设备的地址来选择要与之通信的从设备。

  1. 同步传输:I2C通信是同步的,即传输的时钟信号(SCL线)由主设备生成和控制。数据线(SDA线)上的数据传输依赖于时钟信号的节拍,数据的传输速率取决于时钟频率和总线负载。

  1. 协议灵活性:I2C协议支持多种数据传输模式,如标准模式(100 kbit/s)、快速模式(400 kbit/s)、高速模式(3.4 Mbit/s)和超高速模式(5 Mbit/s)。这种灵活性允许在不同需求下调整通信速率。

  1. 应用广泛:由于其简单、可靠和灵活的特性,I2C通信协议被广泛应用于各种电子设备和系统中,如传感器、存储器(如EEPROM)、显示屏、ADC(模数转换器)等。

2、使用I2C通信的配置流程

  1. 硬件连接:确保正确连接I2C总线的物理线路。一般来说,需要连接至少两根线:SDA(数据线)和SCL(时钟线)。这些线需要连接到微控制器或者处理器的对应引脚,通常称为SDA和SCL引脚。

  1. 引脚配置:在使用的开发环境中,确保配置了正确的引脚功能以及电气特性,如输入/输出模式、上拉电阻等。这通常通过相关的开发工具或者硬件配置文件来完成。

  1. I2C控制器初始化:在程序中初始化微控制器或者处理器的I2C控制器。这通常包括设置I2C时钟速率、配置I2C控制器为主设备或从设备,以及启用I2C功能。

  1. 地址选择:对于每个连接的I2C从设备,确定其唯一的I2C地址。主设备在进行通信时,需要知道要访问的从设备的地址。

  1. 数据传输:使用I2C协议进行数据传输。这包括发送开始条件、发送设备地址、发送数据或请求数据等操作,具体操作顺序和格式依赖于I2C协议的要求和设备的通信需求。

  1. 错误处理与调试:实现适当的错误处理机制,以应对可能出现的通信错误,如总线冲突、设备无响应等。调试时可以使用适当的工具或者调试输出来检查通信是否正常。

  1. 应用程序集成:将I2C通信集成到具体的应用程序中。这可能涉及到数据处理、设备控制、传感器数据采集等具体任务,确保I2C通信与应用程序的其他部分协调工作。

  1. 测试和验证:在实际硬件或者仿真环境中测试I2C通信的功能和稳定性。验证数据的正确性、传输的稳定性以及通信的实时性。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

机器学习:线性回归模型学习路线

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

乳腺癌患者的生存分析:从传统方法到DeepSurv

一、引言 乳腺癌作为全球女性中最常见的癌症之一,其早期诊断和治疗对于提高患者生存率至关重要。随着医学技术和数据分析方法的不断发展,乳腺癌患者的生存分析逐渐成为研究的热点。通过生存分析,我们可以更好地理解疾病进展、预测患者预后&am…

【Oracle】实验二 体系结构、存储结构与各类参数

【实验目的】 理解Oracle体系结构了解初始化参数文件以及初始化参数的含义掌握查看三类数据字典视图和动态性能视图的方法 【实验内容】 如何查看初始化参数?有哪几种方法?初始化参数文件有几种?默认的保存位置在哪里?在SQL*Pl…

L57---112.路径总和(广搜)---Java版

1.题目描述 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。叶子节点 是指…

DVWA 靶场 Weak Session IDs 通关解析

前言 DVWA代表Damn Vulnerable Web Application,是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序,旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

https://curl.trillworks.com不能用的解决方法

gitee源码:https://gitee.com/Project0ne/curlconverter 首先打开上面的链接 然后下载文件 下载文件到本地 然后安装node.js(Node.js official website.)不会的自行百度,这里不做过多赘述。 在curlconverter文件夹下面打开终端(在文件夹下面右键-在终端打开) 输入 npm…

文本分析-中文停用词集合(结合百度停用词表、哈工大停用词表、四川大学机器智能实验室停用词库、中文停用词表等)

将这4个停用词表进行组合并去重。 # _*_coding:utf-8 _*_import os #得到当前文件路径 current_pathos.getcwd() #获取文件列表 list_fileos.listdir(current_path) #用来存储停用词 temp_stopwords[] for file in list_file:file_tailfile.split(.)[-1]#只要txt格式的文件if f…

Kylin系列:架构和高级功能详解

目录 一、Kylin的架构 1.1 总体架构概述 1.2 数据源 1.3 元数据存储 1.4 构建引擎 1.5 存储引擎 1.6 查询引擎 1.7 用户接口 二、Kylin的高级功能 2.1 多维立方体(Cube) 2.1.1 Cube的定义 2.1.2 Cube的构建 2.2 查询优化 2.3 数据模型和星型模式 2.3.1 数据模…

我做了个Hexo博客

最近花了两个周末的时间边学变做Hexo博客,最终成品地址如下: https://blog.mybatis.io 下面先说说做博客的经过,想做Hexo博客一开始是因为看到了 hexo-theme-icarus 主题,这个主题样式如下: 首页 内容页 这个主题是…

字节豆包全新图像Tokenizer:生成图像最低只需32个token,最高提速410倍

ChatGPT狂飙160天,世界已经不是之前的样子。 更多资源欢迎关注 在生成式模型的迅速发展中,Image Tokenization 扮演着一个很重要的角色,例如Diffusion依赖的VAE或者是Transformer依赖的VQGAN。这些Tokenizers会将图像编码至一个更为紧凑的隐…

AI味太重怎么办?1个超简单的方法就能解决

我们知道随着GPT技术的迅速发展,解决了我们大部分写作的难题。但是很多小伙伴想必都会遇到同样的问题,就是写出来的文章太正式-我们叫这“AI味”。 这AI味让人感觉内容虽然条理清楚,但就是缺了点人情味,读起来不够亲切。 其实&a…

獭崎酱酒:传承百年酱香,品味经典之选

在中国白酒文化中,酱香型白酒以其独特的风味和精湛的酿造工艺,一直受到广大酒友的青睐。而在众多酱香型白酒品牌中,獭崎酱酒以其传承百年的酱香工艺和高品质的产品,成为了众多酒友心中的经典之选。    | | | |–|–| | | | 百…

几何内核开发-实现自己的NURBS曲线生成API

我去年有一篇帖子,介绍了NURBS曲线生成与显示的实现代码。 https://blog.csdn.net/stonewu/article/details/133387469?spm1001.2014.3001.5501文章浏览阅读323次,点赞4次,收藏2次。搞3D几何内核算法研究,必须学习NURBS样条曲线…

L56---226.翻转二叉树(广搜)---Java版

1.题目描述 2.思路和知识点 (1)按照每层来划分, 第一层是2^0( 1) 第二层是2^1(2,3) 第三层是2^2 (4,5,6,7) 第n层是2^(n-…

栅格数据重心迁移变化分析

目前网络上大多是针对矢量重心迁移进行计算,或把栅格转矢量在进行计算,可以不用怎么麻烦,可以直接利用栅格进行得出多期数据的重心,然后进行变化分析等方面的分析。 矢量数据可以通过下面方式进行重心计算: 使用ArcGIS…

谷歌学术内容爬取

最近面临导师灵魂拷问: “你怎么知道你提出的这个方法前人都没有提出过呢?” “你相比于之前的方法,创新点究竟在哪里?” 好吧,为了彻底杜绝这样的问题,开始学习使用谷歌学术。先来学习下关键词检索 哈哈…

qt基本窗口类(QWidget,QDialog,QMainWindow)

1.三个基本窗口类 1.1QWidget 所有窗口的基类 可以内嵌到其他窗口的内部,无边框 也可以作为独立窗口显示,有边框 1.2QDialog 继承于QWidget 对话框窗口类 不可以内嵌到其他窗口 有模态和非模态两种显示方式 1.3QMainWind 继承于QWidget 主窗口类 不可以…

前端Web开发HTML5+CSS3+移动web视频教程 Day1

链接 HTML 介绍 写代码的位置:VSCode 看效果的位置:谷歌浏览器 安装插件 open in browser: 接下来要保证每次用 open in browser 打开的是谷歌浏览器。只需要将谷歌浏览器变为默认的浏览器就可以了。 首先进入控制面板,找到默…

【会议征稿,ACM出版】2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024,8月9-11)

2024年图像处理、智能控制与计算机工程国际学术会议(IPICE 2024)将于2024年8月9-11日在中国福州举行。本届会议由阳光学院、福建省空间信息感知与智能处理重点实验室、空间数据挖掘与应用福建省高校工程研究中心联合主办。 会议主要围绕图像处理、智能控…

QtCreator/VS中制作带有界面的静态库

1、可参考以下文章 QT中制作带有界面的动态库 2、相比动态库,静态库就更简单了,,, 1)创建静态库项目 2)直接右键创建同名窗口类进行覆盖 3)编译生成静态库 4)使用 3、上述都是基于QtCreator来制作的含有界面的静态库,下面基于VS2017来制作带有界面的静态库 …