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

一、实验目的

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.mzph.cn/web/32593.shtml

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

相关文章

又一个前后端分离的整合了OpenAI大模型的高并发、高性能和可扩展的项目完结了,写到简历上,嘎嘎强!

大家好,我是冰河~~ 经过四个多月的坚持,《分布式IM即时通讯系统》终于完结了,也感谢大家这四个多月以来的坚持和陪伴,也相信大家在《分布式IM即时通讯系统》专栏中,学到了不少知识和技术。接下来,我们就一…

[C++][设计模式]介绍

目录 1.设计模式1.何为设计模式?2.深入理解面向对象3.软件设计的目标4.三大模式及其特点5.设计模式分类 2.面向对象设计原则1.为什么要面向对象2.重新认识面向对象3.面向对象设计原则4.C对象模型 3.重构1. 重构获得模式(Refactoring to Patterns)2.重构关键技法 4.代…

代码随想录leetcode200题之图论

目录 1 介绍2 训练3 参考 1 介绍 本博客用来记录代码随想录leetcode200题之图论相关题目。 2 训练 题目1&#xff1a;98. 所有可达路径 解题思路&#xff1a;有向图&#xff0c;dfs(fa, node)。 C代码如下&#xff0c; #include <bits/stdc.h>using namespace std;…

归并排序代码

主程序 int main(int argc, char const *argv[]) {int arr[] {9,5,2,7};int n sizeof(arr)/siezof(arr[0]);print_arr(arr,n);//打印数组merge_sort(arr, n);//分类数组print_arr(arr,n);//打印数组return 0; } 归并排序入口 //归并排序入口 void merge_sort(int arr[], in…

一文带你了解集装箱箱号识别原理,OCR识别及深度学习

如果要想知道集装箱箱号识别原理&#xff0c;首先需要知道什么是集装箱号&#xff08;装运出口货物的集装箱箱号&#xff09;标准集装箱箱号由11位编码组成包括三个部分&#xff1a; 第一部分由4位英文字母组成。前三位代码主要说明箱主、经营人&#xff0c;第四位代码说明集装…

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

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

【开发】内网穿透ztncui搭建私有节点

文章目录 写在前面一键部署ztnuci记录后续 写在前面 前面搭建moon节点转发的确会降低延迟&#xff0c;但是总有出现moon节点解析不成功的例子&#xff0c;于是疯狂寻找答案是为什么&#xff1f;终于在知乎上找到这样一个答案。 一键部署ztnuci 参考这篇很完善的教程和贴心的…

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

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

基于YOLOv5的口罩佩戴检测系统的设计与实现(PyQT页面+YOLOv5模型+数据集)

简介 在各种工作环境和公共场所,确保人们正确佩戴口罩对个人防护和公共卫生至关重要,尤其是在医疗设施、制造业车间和拥挤的公共交通中。为了满足这一需求,我们开发了一种基于YOLOv5目标检测模型的口罩佩戴检测系统。本项目不仅实现了高精度的口罩佩戴检测,还设计了一个可…

【计算机网络仿真】b站湖科大教书匠思科Packet Tracer——实验6 生成树协议STP的功能

一、实验目的 1.验证以太网交换机生成树协议的功能&#xff1b; 2.理解网络环路对网络的负面效应&#xff1b; 3.理解生成树协议的作用。 二、实验要求 1.使用Cisco Packet Tracer仿真平台&#xff1b; 2.观看B站湖科大教书匠仿真实验视频&#xff0c;完成对应实验。 三、实…

Android assets资源目录

目录 前言一、读取assets下的文件内容二、拷贝assets文件三、AssetManager 前言 Android 中常用的资源分为两种&#xff1a; res下可编译的资源文件assets文件夹下面的原生资源文件 第一种是res下可编译的资源文件&#xff0c;这些资源文件经过编译后会生成一个R.java文件&a…

图解注意力

图解注意力 Part #2: The Illustrated Self-Attention 在文章前面的部分&#xff0c;我们展示了这张图片来展示自注意力被应用于正在处理单词"it"的一层中&#xff1a; 在本节中&#xff0c;我们将看看这是如何完成的。请注意&#xff0c;我们将以一种试图理解单…

华为OD机考(HJ16 购物单)

前言 应广大同学要求&#xff0c;开始以OD机考题作为练习题&#xff0c;看看算法和数据结构掌握情况。有需要练习的可以关注下。此题难度略大&#xff0c;需要对背包问题较为熟悉&#xff0c;同时题干信息量较大&#xff0c;都为解题造成了一定难度。 在开始此题前请提前查看…

网卡故障但bond0不切换原因及处理、脚本监控bond0网卡状态并做相应操作

文章目录 故障说明监控脚本脚本编写脚本测试正常场景异常场景1异常场景2脚本准备和修改网卡名脚本拷贝到所有需要监控主机修改网卡名批量执行脚本故障说明 在一次交换机升级的割接中,主备交换机重启的时候,我们发现了一个问题,有几台宿主机会中断【ping不通】,交换机重启完…

Typora最新安装教程2024

Typora是一款广受好评的跨平台Markdown编辑软件&#xff0c;支持Windows、MacOS和Linux操作系统。它的设计旨在提供一个无干扰、高效且直观的写作环境。户快速管理和查找文档&#xff0c;支持直接在软件内浏览和操作文件结构。 Typora以其简洁而强大的功能集合&#xff0c;成为…

Java模拟马尔可夫链类问题的验证

马尔可夫链&#xff08;Markov Chain, MC&#xff09;是概率论和数理统计中具有马尔可夫性质&#xff08;Markov property&#xff09;且存在于离散的指数集&#xff08;index set&#xff09;和状态空间&#xff08;state space&#xff09;内的随机过程&#xff08;stochasti…

学习笔记——路由网络基础——路由的高级特性

七、路由的高级特性 1、路由迭代(路由递归) 路由必须有直连的下一跳才能够指导转发&#xff0c;静态路由或BGP路由的下一跳可能不是直连的邻居&#xff0c;因此需要计算出一个直连的下一跳和对应的出接口&#xff0c;这个过程就叫做路由迭代(路由递归)。 添加一条去往20.1.1.…

JAVA期末复习2

目录 一、Java基础知识 1. 下面几个标识符中&#xff0c;哪些是命名正确的 (A) 2. 分析以下代码&#xff0c;哪些是合法的 (C) 3. 以下代码的执行结果是&#xff08; B &#xff09; 4. 下面哪个不是java中的关键字&#xff1f;&#xff08; B &#xff09; 5. 下面对数组…

毕业设计——可视化实验仿真平台

该程序用于毕业设计&#xff0c;架构为前后端分离技术&#xff0c;涉及技术包括vue3&#xff0c;SpringBoot&#xff0c;spring-secrity&#xff0c;Redis&#xff0c;需要者进群769119544进行相关咨询。 程序分为三个角色&#xff1a;学生、老师、管理员。使用了spring-secrit…

如何在 Android 应用中设置 `android:authorities`

在 Android 应用中设置 android:authorities 属性主要是为 ContentProvider 或 FileProvider 定义的&#xff0c;以确保这些提供者可以在应用之间或应用内部被唯一地识别。以下是如何为 FileProvider 设置 android:authorities 的步骤&#xff1a; 定义 FileProvider&#xff1…