STM32-HAL库06-硬件IIC驱动FM24CL16B非易失存储器

STM32-HAL库06-IIC驱动FM24CL16B非易失存储器

一、所用材料:

STM32VGT6自制控制板
STM32CUBEMX(HAL库软件)
MDK5

二、所学内容:

通过HAL库的硬件IIC对FM24CL16B存储器进行写与读取操作。

三、CUBEMX配置:

第一步:选取IIC1进行配置

在这里插入图片描述

第二步:配置SYS

在这里插入图片描述

第三步:配置RCC

在这里插入图片描述

第四步:配置时钟

在这里插入图片描述

第五步:文件配置

在这里插入图片描述

四、MDK5程序编写:

1.配置FM24CL16B.h文件

#ifndef __FM24CL16_H
#define __FM24CL16_H	 //========移植的时候,根据所选芯片引入相应的头文件==========在main.h里面查看
#include "stm32f4xx_hal.h"
#include "i2c.h"#define FM_24LC16_Write 0xA0
#define FM_24LC16_Read  0xA1
#define BufferSize 2048//电机参数内存分配
#define Rs_add	0
#define Rr_add	4void FM24CL16B_Write_data(uint16_t add , uint8_t data);
uint8_t FM24CL16B_Read_data(uint16_t add);
void Parameter_Write (uint16_t para_add , float para_data);
float Parameter_Read (uint16_t para_add);#endif

2.配置FM24CL16B.c文件

#include "FM24CL16B.h"
#include "i2c.h"
#include "stdio.h"/********************************************
函数名称:FM24CL16写数据
函数参数:add—写入数据的地址(0-2048)data—写入的数据(0-256)
函数解析:向指定地址写入特定数据,并且在写入后读取一次打印至串口
********************************************/
void FM24CL16B_Write_data(uint16_t add , uint8_t data)
{HAL_I2C_Mem_Write(&hi2c1, FM_24LC16_Write, add, I2C_MEMADD_SIZE_8BIT,&data,1,0xff);HAL_Delay(5);//此处延时必加printf("\r\n EEPROM 24C02 Write Test OK \r\n");FM24CL16B_Read_data(add);
}
/********************************************
函数名称:FM24CL16读数据
函数参数:add—读数据的地址(0-2048)
函数解析:读取指定地址的数据并返回该数据
********************************************/
uint8_t FM24CL16B_Read_data(uint16_t add)
{uint8_t Read_data;HAL_I2C_Mem_Read(&hi2c1, FM_24LC16_Read, add, I2C_MEMADD_SIZE_8BIT,&Read_data,1, 0xff);printf("地址:%d   16进制:0x%02X   10进制:%d \r\n",add,Read_data,Read_data);return Read_data;
}
/********************************************
函数名称:浮点数参数写入
函数参数:para_add—写入参数的头地址para_data-写入的参数浮点数值
函数解析:将浮点数参数值写入到指定的参数地址
********************************************/
void Parameter_Write (uint16_t para_add , float para_data)
{uint16_t zhengshu ;uint8_t zhengshu1 ;uint8_t zhengshu2 ;uint16_t xiaoshu ;uint8_t xiaoshu1 ;uint8_t xiaoshu2 ;zhengshu = (uint16_t)para_data;zhengshu1 = zhengshu/256;zhengshu2 = zhengshu%256;xiaoshu  = (para_data-zhengshu)*1000.0;xiaoshu1 = xiaoshu/256;xiaoshu2 = xiaoshu%256;HAL_I2C_Mem_Write(&hi2c1, FM_24LC16_Write,para_add, I2C_MEMADD_SIZE_8BIT,&zhengshu1,1,0xff);HAL_Delay(5);//此处延时必加HAL_I2C_Mem_Write(&hi2c1, FM_24LC16_Write,para_add+1, I2C_MEMADD_SIZE_8BIT,&zhengshu2,1,0xff);HAL_Delay(5);//此处延时必加HAL_I2C_Mem_Write(&hi2c1, FM_24LC16_Write,para_add+2, I2C_MEMADD_SIZE_8BIT,&xiaoshu1,1,0xff);HAL_Delay(5);//此处延时必加HAL_I2C_Mem_Write(&hi2c1, FM_24LC16_Write,para_add+3, I2C_MEMADD_SIZE_8BIT,&xiaoshu2,1,0xff);HAL_Delay(5);//此处延时必加FM24CL16B_Read_data(para_add);FM24CL16B_Read_data(para_add+1);FM24CL16B_Read_data(para_add+2);FM24CL16B_Read_data(para_add+3);
}
/********************************************
函数名称:浮点数参数读取
函数参数:para_add—读取参数的头地址
函数解析:将浮点数参数值从内存中读出并返回
********************************************/
float Parameter_Read (uint16_t para_add)
{float para_data;uint8_t zhengshu1 ;uint8_t zhengshu2 ;uint8_t xiaoshu1 ;uint8_t xiaoshu2 ;zhengshu1 =FM24CL16B_Read_data(para_add);zhengshu2 =FM24CL16B_Read_data(para_add+1);xiaoshu1 = FM24CL16B_Read_data(para_add+2);xiaoshu2 = FM24CL16B_Read_data(para_add+3);para_data = zhengshu1*256+zhengshu2+(xiaoshu1*256+xiaoshu2)*0.001;printf("参数值为:%f",para_data);return para_data;
}

3.配置main.c文件

int main(void)
{/* USER CODE BEGIN 1 *//* USER CODE END 1 *//* MCU Configuration--------------------------------------------------------*//* Reset of all peripherals, Initializes the Flash interface and the Systick. */HAL_Init();/* USER CODE BEGIN Init *//* USER CODE END Init *//* Configure the system clock */SystemClock_Config();/* USER CODE BEGIN SysInit *//* USER CODE END SysInit *//* Initialize all configured peripherals */MX_GPIO_Init();MX_TIM2_Init();MX_TIM5_Init();MX_I2C1_Init();MX_USART2_UART_Init();/* USER CODE BEGIN 2 */HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);__HAL_TIM_CLEAR_IT(&htim5, TIM_IT_UPDATE);HAL_TIM_Base_Start_IT(&htim5);							/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while (1){/* USER CODE BEGIN 2 */Parameter_Write (Rr_add , 1458.0597);//写入Rr_add的参数值,并且会读取一次Parameter_Read (Rs_add);			   //读取Rs_add的参数值,此值之前已经写进去过了HAL_Delay(10000);/* USER CODE END 2 *//* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}

4.测试

在这里插入图片描述

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

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

相关文章

【Cocos Creator 3.5实现赛车游戏】10.实现汽车节点的运动逻辑

转载知识星球 | 深度连接铁杆粉丝,运营高品质社群,知识变现的工具 项目地址:赛车小游戏-基于Cocos Creator 3.5版本实现: 课程的源码,基于Cocos Creator 3.5版本实现 上一节的学习后,您已经完成了对汽车节点的控制逻…

简单记一下Vue router 路由中使用 vue-i18n 进行标题国际化

引入状态管理和国际化文件 import store from ../store import i18n from /configs/i18n使用状态管理设置路由当前国际化选项 // 使用状态管理 i18n.locale store.state.setStore.i18n??zh路由中使用i18n { path: /login, name: login, component: LoginPage, meta: { ti…

四川玖璨电子商务有限公司:短视频运营理解

短视频运营是一种通过策划、执行和管理短视频内容以达到品牌目标的一项工作。在如今面临信息爆炸的时代,短视频已经成为了吸引用户注意力的一种重要方式。作为一种新兴媒体形式,短视频拥有跨时空、生动有趣、内容丰富的特点,因此得到了越来越…

信道分类 | 信道

文章目录 高斯信道带限信道 高斯信道 定义:功率限制为P的高斯信道容量为 C m a x f ( x ) : E X 2 P I ( X ; Y ) Cmax_{f(x):EX^2P}I(X;Y) Cmaxf(x):EX2P​I(X;Y) I ( X ; Y ) ≤ 1 2 l o g ( 2 π e ( P N ) ) − 1 2 l o g ( 2 π e N ) I(X;Y)\le \frac{1}{…

华为云云耀云服务器L实例评测|云耀云服务器购买流程与功能介绍

目录 概述什么是云耀云服务器L实例功能概述 技术参数处理器和内存存储和网络GPU加速 强大的计算能力高性能计算集群大规模并行计算 灵活可扩展的存储本地SSD存储产品购买流程 概述 什么是云耀云服务器L实例 云耀云服务器L实例是新一代开箱即用、面向中小企业和开发者打造的全新…

CocosCreator3.8研究笔记(十)CocosCreator 图像资源的理解

一、图像资源导入 Cocos Creator 可使用图像文件格式,支持 JPG、PNG、BMP、TGA、HDR、WEBBP、PSD、TIFF 等。 将图像资源直接拖拽到 资源管理器 即可将其导入 二、图像资源的类型 在 属性检查器 面板中便可根据需要设置图像资源的使用类型:raw 、 textu…

flask bootstrap页面json格式化

html <!DOCTYPE html> <html lang"en"> <head><!-- 新 Bootstrap5 核心 CSS 文件 --> <link rel"stylesheet" href"static/bootstrap-5.0.0-beta1-dist/css/bootstrap.min.css"><!-- 最新的 Bootstrap5 核心 …

纯小白安卓刷机1

文章目录 常见的英文意思刷机是什么&#xff1f;为什么要刷机&#xff1f;什么是BL锁&#xff08;BootLoader锁&#xff09;&#xff1f;我的机能够刷机吗&#xff1f;什么是Boot镜像/分区&#xff1f;什么是Recovery镜像/分区&#xff08;缩写为rec&#xff09;&#xff1f;什…

数据分析与可视化 Numpy数组

1.创建数组 import numpy as np anp.array([1,2,3,4]) aarray([1, 2, 3, 4]) print(a)[1 2 3 4] b np.array((2,4,6,8)) print(b)[2 4 6 8] cnp.array([[1,2,3,4],[5,6,7,8]]) print(c)[[1 2 3 4] [5 6 7 8]] dnp.array([1,2,3,4],dtypefloat64) print(d)[1. 2. 3. 4.] …

重磅开赛!“山东工行杯”山东省第五届数据应用创新创业大赛报名火热进行中!

为进一步调动全社会参与数据价值挖掘和应用创新积极性&#xff0c;促进数据要素高效流通&#xff0c;释放数据价值&#xff0c;赋能经济社会高质量发展&#xff0c;探索公共数据资源与公共服务、社会生活、民生改善及经济建设的数字化结合方式&#xff0c;促进公共数据和企业数…

记录一次Flink安装记录

系统Ubuntu18 1.拉取镜像 #默认拉取最新版本 docker pull flink:1.14.4-scala_2.12-java8 #检查镜像 docker images | grep flink 2.编写flink的yaml文件 注意&#xff1a;云服务器需要设置安全策略放行8081端口&#xff0c;否则访问失败 注意2&#xff1a;docker-compose 版…

创建了一个名为nums_list的vector容器,其中存储了一系列的pair<int, int>

vector<pair<int, int>> nums_list;for (int i 0; i < nums.size(); i) {nums_list.emplace_back(i, nums[i]);}这段代码创建了一个名为nums_list的vector容器&#xff0c;其中存储了一系列的pair<int, int>。代码的逻辑如下&#xff1a;1. 创建一个空的…

Linux Debian12使用git将本地项目上传到码云(gitee)远程仓库

一、注册码云gitee账号 这个可以参考其他教程&#xff0c;本文不做介绍。 gitee官网&#xff1a;https://gitee.com/ 二、Linux Debian12安装git 如果Linux系统没有安装git&#xff0c;可以使用下面命令安装git sudo apt install git 三、gitee新建仓库 我这只做测试&…

自动化构建:提高开发流程效率与质量的关键工具

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 引言 自动化构建是现代…

便捷又炸街!Mate 60的智感支付,是如何做到快速又安全的?

扫码支付已成为线下消费的主流付款方式&#xff0c;平时出门&#xff0c;手机一带&#xff0c;钱包拜拜&#xff01; 以微信支付为例&#xff0c;正常线下支付&#xff0c;手机解锁状态下&#xff1a; 第一步&#xff1a;找到微信APP&#xff1b; 第二步&#xff1a;打开右上…

centos7 安装 rabbitmq

一、windows 上下载依赖文件以及安装文件 https://d28dx6y1hfq314.cloudfront.net/828/1033/el/7/package_files/1305009.rpm?t1694767188_8bd28780066a52b94cc2edfb2b7f574333d72318https://d28dx6y1hfq314.cloudfront.net/828/1039/el/7/package_files/1038460.rpm?t16947…

考公顺序步骤

目标&#xff1a;83 判断推理&#xff08;聂佳&#xff09;资料分析&#xff08;花生十三&#xff09;言语理解&#xff08;阿里木江&#xff09;常识判断&#xff08;李m娇&#xff09;数量&#xff08;花生十三&#xff09; 第一阶段 基础课过考点&#xff0c;做好笔记和思…

前端JavaScript Error 类: 异常处理与错误管理

&#x1f3ac; 岸边的风&#xff1a;个人主页 &#x1f525; 个人专栏 :《 VUE 》 《 javaScript 》 ⛺️ 生活的理想&#xff0c;就是为了理想的生活 ! 目录 引言 1. Error 类简介 2. Error 类属性 3. Error 类的 API 4. Error 类的应用场景 5. 自定义错误类型 6. 注意…

ChatGPT与日本首相交流核废水事件-精准Prompt...

了解更多请点击&#xff1a;ChatGPT与日本首相交流核废水事件-精准Prompt...https://mp.weixin.qq.com/s?__bizMzg2NDY3NjY5NA&mid2247490070&idx1&snebdc608acd419bb3e71ca46acee04890&chksmce64e42ff9136d39743d16059e2c9509cc799a7b15e8f4d4f71caa25968554…

linux 6中4T磁盘识别并分区格式化挂接

存储端划分4T的LUN后&#xff0c;主机端操作如下 1、主机识别&#xff0c;本例中hba卡的端口是host11和host12 [rootdb1 ~]# echo "- - -" > /sys/class/scsi_host/host11/scan [rootdb1 ~]# echo "- - -" > /sys/class/scsi_host/host12/scan …