STM32_IIC_AT24C02_1_芯片简介即管脚配置

        STM32的IIC总线是存在bug,感兴趣的可以上网搜一搜。我们可以使用两个I/O口和软件的方式来模拟stm32的iic总线的控制,所以就不需要使用stm32的硬件控制器了,同理数据手册中的I2C库函数也没有用了。   

        ROM(只读存储器)和RAM(随机存储器)是计算机中常见的两种存储器。它们在功能和特点上有很多区别。

1. 可擦写性:ROM是只读存储器,它的内容在生产过程中被固化,不能被修改或擦除。而RAM是可读写存储器,可以随时修改和擦除其内容。

2. 数据保存:ROM在断电时可以长久保存其中的数据,而RAM需要持续供电以保持数据的存储。

3. 访问速度:由于ROM中的数据是固化的,所以访问速度较快。而RAM中的数据可以随时被修改,所以访问速度相对较慢。

4. 存储容量:ROM的存储容量较大,可以存储大量的数据和程序。而RAM的存储容量相对较小。

5. 用途:ROM主要用于存储计算机的固件和操作系统等重要程序,如BIOS。而RAM则主要用于存储程序和数据,以供CPU进行读写操作。

        总之,ROM是只读存储器,内容不能修改,访问速度快,存储容量大,适用于存储固化的数据和程序;而RAM是可读写存储器,内容可以随时修改,访问速度相对较慢,存储容量较小,适用于临时存储数据和程序。

        EEPROM:可读可擦除。这个EEPROM是很有用的,例如:

        写了一个程序到板子中让一个电机转动,可以通过上位机的设置去改变它的电机转动频率。A地需要电机500rad/min,B地需要电机200rad/min。因为板子的程序是固定的,不能修改,所以我们只能通过上位机去给板子一个参数,改变他的转速。

 可以看到有SCL和SDA,分别为时钟线和数据线,所以IIC是同步串行通信。

从数据手册可以看到,A0-A2为地址输入,WP为写保护;

IIC和SPI在多外设的接线上是不同的,SPI每个外设都需要一个片选信号线,而IIC的所有外设都挂在这两个总线上,IIC通过A0-A2地址去选择外设;

R/W则是区分读操作还是写操作。

前面的1k,2k(2kbit)则是表示看芯片的内部存储空间,这里说的AT24C02,则是2K。

        查看STM32F103Cx管脚手册可以看到PB6:I2C1_SCL,PB7:I2C1_SDA。因为PB6连接时钟线,stm32必须一直输出高电平和低电平来控制读写,所以在配置的时候PB6就要为输出模式。而PB7为输入时,stm32读取AT24C02,PB7为输出时,stm32传输数据到AT24C02,所以可以把PB7的模式,来回改动,什么时候输入,就设置为输入,什么时候输出,就设置为输出。

#include "bsp_iic_at24c02.h"

//PB6:SCL  PB7:SDA
void IIC_Configuration(void)
{
	GPIO_InitTypeDef GPIO_InitStructure;

	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
	
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7;
	GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
	GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
	GPIO_Init(GPIOB, &GPIO_InitStructure);
	
	GPIO_WriteBit(GPIOB, GPIO_Pin_6 | GPIO_Pin_7, Bit_RESET);
}
#ifndef __BSP_IIC_AT24C02_H__
#define __BSP_IIC_AT24C02_H__

#include <stm32f10x.h>

void IIC_Configuration(void);

#endif

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

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

相关文章

普中51单片机学习(EEPROM)

EEPROM IIC串行总线的组成及工作原理 I2C总线的数据传送 数据位的有效性规定 I2C总线进行数据传送时&#xff0c;时钟信号为高电平期间&#xff0c;数据线上的数据必须保持稳定&#xff0c;只有在时钟线上的信号为低电平期间&#xff0c;数据线上的高电平或低电平状态才允许…

微服务-微服务Spring Security6实战

1. Spring Security介绍 1.1 Spring Security定义 Spring Security 是一个能够为基于 Spring 的企业应用系统提供声明式的安全访问控制解决方案的安全框 架。 Spring Security 主要实现了 Authentication &#xff08;认证&#xff0c;解决 who are you? &#xff09; 和…

数字化转型导师坚鹏:政府数字化流程管理

政府数字化流程管理 课程背景&#xff1a; 很多政府存在以下问题&#xff1a; 不清楚数字化对流程有什么影响&#xff1f; 不知道政府业流程如何进行优化&#xff1f; 不知道政府业流程优化的具体案例&#xff1f; 课程特色&#xff1a; 有实战案例 有原创观点 …

小程序画布(二维地图线)

首先开始是想用小程序兼容openlayers的&#xff0c;但是了解到用不了&#xff0c;那就用画布来解决 实际效果如下 wxml中代码 <canvas id"trackDesignCanvas" //指定 id 的 Canvas 组件class"orbit-canvas-main" type"2d" …

鸿蒙LiteOS-M 内核初始化

目录 一、LiteOS-M 初始化内核二、LOS_KernelInit代码分析三、LOS_Start代码解析坚持就有收获 一、LiteOS-M 初始化内核 在LiteOS-M应用程序中&#xff0c;系统初始化如下&#xff1a; /*** brief This is the ohos entry, and you could call this in your main funciton af…

Android 内存优化内存泄漏处理

一:匿名内部类/非静态内部类 匿名内部类的泄漏原因&#xff1a;匿名内部类会隐式地持有外部类的引用.当外部类被销毁时&#xff0c;内部类并不会自动销毁&#xff0c;因为内部类并不是外部类的成员变量&#xff0c; 它们只是在外部类的作用域内创建的对象&#xff0c;所以内部…

LabVIEW变压器振动信号数据采集与分析

LabVIEW变压器振动信号数据采集与分析 随着电力系统的快速发展&#xff0c;对变压器的安全监控和故障诊断需求日益增加。设计了一套基于LabVIEW的变压器振动信号数据采集与分析系统&#xff0c;提高变压器的运行安全性和可靠性&#xff0c;实现对变压器振动信号的实时监测和故…

c语言---数组(超级详细)

数组 一.数组的概念二. 一维数组的创建和初始化2.1数组的创建2.2数组的初始化错误的初始化 2.3 数组的类型 三. 一维数组的使用3.1数组的下标3.2数组元素的打印3.2数组元素的输入 四. 一维数组在内存中的存储五. 二维数组的创建5.1二维数组的概念5.2如何创建二维数组 六.二维数…

Flutter Engine 编译

本地环境 Flutter 开发基本环境配置&#xff0c;SDK【】 MAC. M2芯片 git工具 python环境[MAC自带] xcode Chromium depot_tools depot_tools 是调试 Flutter 引擎的必备工具包&#xff0c;包含了 gclient、gn 和 ninja 等工具&#xff0c;这些在下面会用到&#xff01;…

信号系统之线性图像处理

1 卷积 图像卷积的工作原理与一维卷积相同。例如&#xff0c;图像可以被视为脉冲的总和&#xff0c;即缩放和移位的delta函数。同样&#xff0c;线性系统的特征在于它们如何响应脉冲。也就是说&#xff0c;通过它们的脉冲响应。系统的输出图像等于输入图像与系统脉冲响应的卷积…

Unity资源加密解决方案

据统计&#xff0c;全球范围内超过50%的游戏均使用Unity创作而成&#xff0c;作为游戏开发市场第一大游戏引擎占有者&#xff0c;Unity已经全面覆盖到各个游戏平台。 全球游戏引擎市场占有率 由于体量庞大&#xff0c;Unity游戏已成为受游戏黑灰产攻击的重灾区&#xff0c;因游…

Vue3自定义组件v-model双向绑定

无能吐槽一下&#xff0c;虽然用了很多遍v-model&#xff0c;但是还是不得要领&#xff0c;每次看官网都感觉说的不是很清晰&#xff0c;在写的时候还是要查看文档&#xff0c;可能就是不理解原理&#xff0c;这次特意好好写一篇文章&#xff0c;让自己好好理解一下。 自定义一…

网络编程、UDP、TCP

计算机网络 就是将地理位置不同的具有独立功能的多台计算及外部设备&#xff0c;通过通信线路连接起来&#xff0c;在网络操作系统、网络管理软件以及网络通信协议的管理和协调下&#xff0c;实现资源共享和信息传递的计算机系统 目的 传播交流信息、数据交换、通信 如何做…

JVM(1)

JVM简介 JVM是Java Virtual Machine的简称,意为Java虚拟机. 在java中,它归属于jre(java运行时环境), 而jre归属于jdk(java开发工具包). 虚拟机是指通过软件模拟的具有完整硬件功能的,运行在一个完全隔离的环境中的完整计算机系统. 常见的虚拟机:JVM, VMwave, VirtualBox. J…

java——File类和字符集

目录 File类File类的常用操作&#xff1a;案例&#xff1a;文件搜索的实现案例&#xff1a;递归文件夹删除 字符集几种常见的字符集总结字符集的编码和解码 File类 File是java.io.包下的类&#xff0c;File类的对象&#xff0c;用于代表当前操作系统的文件&#xff08;可以是文…

聊聊JVM运行时数据区的堆内存

聊聊JVM运行时数据区的堆内存 内存模型变迁&#xff1a; Java堆在JVM启动时创建内存区域去实现对象、数组与运行时常量的内存分配&#xff0c;它是虚拟机管理最大的&#xff0c;也是垃圾回收的主要内存区域 。 内存模型变迁&#xff1a; 为什么要有年轻区和老年区&#xff1f;…

中兴助力低空经济发展,携山东移动完成5G-A通感一体商用验证

日前&#xff0c;中兴通讯在5G-A通感一体化技术研究和商用落地领域实现新突破。具体来说&#xff0c;中兴通讯联手山东移动&#xff0c;率先完成了5G-A&#xff08;5G-Advanced&#xff09;通感一体化技术试点&#xff0c;完成对低空无人机的通信感知融合测试。据悉&#xff0c…

java面试题之mysql篇

1、数据库索引 索引是对数据库表中一列或多列的值进行排序的一种结构&#xff0c;使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她&#xff0c;则与在表中搜索所有的行相比&#xff0c;索引有助于更快地获取信息。 索引的一个主要目的就是加快检索…

数据结构day4

实现创建单向循环链表、创建结点、判空、输出、头插、按位置插入、尾删、按位置删除 loop_list.c #include "loop_list.h" loop_p create_head() {loop_p L(loop_p)malloc(sizeof(loop_list));if(LNULL){printf("空间申请失败\n");return NULL;}L->le…

clip_as_service学习

参考&#xff1a;clip_as_service学习过程(一)——安装客户端与服务端_clip-as-service-CSDN博客 CLIP-as-service 0.8.3 documentation (jina.ai) pip3 install clip-client /usr/local/python3/bin/python3.7 -m pip install --upgrade pip pip3 install clip-server pyt…