rtthread stm32h743的使用(十)i2c设备使用

我们要在rtthread studio 开发环境中建立stm32h743xih6芯片的工程。我们使用一块stm32h743及fpga的核心板完成相关实验,核心板如图:在这里插入图片描述
在这里插入图片描述
1.建立新工程,选择相应的芯片型号及debug引脚及调试器
在这里插入图片描述
2.打开cubemux,设置外部时钟及串口外设,其余设置参照前面rtthread stm32h743的使用(一)新工程建立,使能两个串口,串口1为调试串口,串口2为我们的测试串口。在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
3.设置i2c引脚及参数 根据原理图scl为ph7,sda为ph8,如下图:
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
4.设置系统时钟,如下图:
在这里插入图片描述
在这里插入图片描述
5生成工程,如下图:在这里插入图片描述
在这里插入图片描述
6.生成工程后一定要关闭cubemux,如果点击close软件没有关闭,就在右上角x掉,直接关闭,否则生成的工程会有异常:
在这里插入图片描述
在这里插入图片描述
7.编译工程,如下图,将大写的改为小写,再编译就没有报错了:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
8.打开工程后在工程drive文件夹下的board.h中添加要使用的串口设备和i2c设备如图,我们使用的串口1,和i2c3 如图:
在这里插入图片描述
9.添加驱动框架和软件包:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
9.保存编译下,可以看到软件包已经添加到工程中了:
在这里插入图片描述
在这里插入图片描述
10.编译无误,在软件包的.h文件中更改芯片型号:
在这里插入图片描述
11.添加测试文件,代码如下:
在这里插入图片描述
#include <hw_at24cxx.h>
#include “at24cxx.h”

#define AT24CXX_ADDR (0xA0 >> 1) //A0 A1 A2 connect GND
#define AT24Cxx_I2C_NAME “i2c3” /* PWM设备名称 */

struct at24cxx_device *at24cxx_dev;

void hw_at24cxx_init(void)
{
at24cxx_dev = at24cxx_init(AT24Cxx_I2C_NAME,AT24CXX_ADDR);
}
#define buff_size 250
void hw_at24cxx_prog(void)
{
rt_uint8_t j;
rt_uint8_t buff[buff_size]={0};
for(j=0;j<buff_size;j++)
{
buff[j]=5;
}
at24cxx_write(at24cxx_dev,0x00,buff,buff_size);
for(j=0;j<buff_size;j++)
{
buff[j]=0;
}
rt_thread_mdelay(10);
at24cxx_read(at24cxx_dev,0x00,buff,buff_size);
for(j=0;j<buff_size;j++)
{
rt_kprintf(“buff[%d] = %d\n”,j,buff[j]);
}
}

/*

  • Copyright © 2006-2021, RT-Thread Development Team
  • SPDX-License-Identifier: Apache-2.0
  • Change Logs:
  • Date Author Notes
  • 2024-06-17 58381 the first version
    */
    #ifndef APPLICATIONS_HW_AT24CXX_H_
    #define APPLICATIONS_HW_AT24CXX_H_

extern void hw_at24cxx_init(void);
extern void hw_at24cxx_prog(void);

#endif /* APPLICATIONS_HW_AT24CXX_H_ */

12.在主函数中添加初始化和调用函数,代码如下:
#include <rtthread.h>
#include “hw_at24cxx.h”
#define DBG_TAG “main”
#define DBG_LVL DBG_LOG
#include <rtdbg.h>

int main(void)
{
int count = 1;
hw_at24cxx_init();
while (count++)
{
LOG_D(“Hello RT-Thread-test-eeprom!”);
rt_thread_mdelay(1000);
hw_at24cxx_prog();
}

return RT_EOK;

}
13.打开串口助手,查看打印内容:
在这里插入图片描述
13.打开串口助手,更改写入eeprom中的值,再查看打印内容:
在这里插入图片描述
在这里插入图片描述
可以看到写入的值与读出的值一致,eeprom的读写就可以了。

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

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

相关文章

劳务工程元宇宙:未来建筑行业的新趋势

随着科技的不断发展&#xff0c;虚拟现实、增强现实、区块链等技术逐渐渗透到各个行业&#xff0c;为传统产业带来了革命性的变革。在建筑行业&#xff0c;劳务工程元宇宙的概念应运而生&#xff0c;预示着未来建筑行业的新趋势。 一、劳务工程元宇宙的定义 劳务工程元宇宙是…

制造业采购堡垒机的四大必要性看这里!

制造业包括的行业广泛&#xff0c;与大家的生活息息相关&#xff0c;例如食品制造业、汽车制造业、纺织业、服装制造业等等。但大家对于制造业不是很了解&#xff0c;不知道制造业也是需要采购堡垒机的&#xff0c;今天我们就来聊聊制造业采购堡垒机的必要性。 制造业采购堡垒机…

python selenium 下载

查看浏览器版本 下载地址&#xff1a; 新版本下载地址 https://googlechromelabs.github.io/chrome-for-testing/ 历史版本也可以用这个下载地址 http://chromedriver.storage.googleapis.com/index.html 找到对应的版本 126.0.xxx 下载

推荐给中小学生的暑假打字神器

暑假是孩子们放松身心、增长知识的好时机。在这个漫长的假期里&#xff0c;家长们不仅希望孩子能够快乐地度过每一天&#xff0c;还希望他们能在学习上有所进步。尤其是随着科技的发展&#xff0c;熟练的打字技巧已经成为现代学习和工作的基本技能之一。今天&#xff0c;我要向…

节流工具,避免操作太频繁

ThrottleUtil 用于保证某个操作在一定时间内只执行一次的工具。 package com.cashpro.kash.lending.loan.utils;/*** <pre>* Created by zhuguohui* Date: 2024/6/26* Time: 13:43* Desc:用于节流执行任务,限制任务执行的频次* </pre>*/import android.os.Handle…

基于requests模块爬取网易云歌曲评论并制作热词云图

本实践大作业要求 本次实践大作业主要要求主要包括&#xff1a; 1、选择一个热点或者你感兴趣的主题作为本次爬虫实践作业要完成的任务。 2、为了完成本次任务&#xff0c;需要确定从网上爬取的数据对象与范围。 3、利用python及网络爬虫相关技术实现从网上爬取相应内容数据。 …

《ai企业级知识库》- 使用api启动rasa热切换模型文件

阿丹&#xff1a; 在线上环境在准备切换模型文件的时候&#xff0c;更希望通过一些简单&#xff0c;并且热点的方式来将训练好的模型文件进行切换。rasa这里准备了相应的接口来完成这个事情。那么这里就记录一下这接口。关于后面的部署是很重要的事情。 api模式 Rasa的API模式…

nvm-desktop window安装,支持动态切换nodejs版本

一、安装 nvm-desktop 概述 1 、卸载干净笔记的nodejs 和nodejs的环境变量 2、安装 nvm-desktop 软件 3、配置环境变量 4、测试功能 # 此时已安装完成 其他&#xff1a;常见nodejs的问题解决参考&#xff1a;官网 mac 安装教程 https://github.com/1111mp/nvm-desktop/blob/…

【揭秘新潮流】实践教学新宠SmartEDA,让电子设计课“潮“起来!

在信息时代的浪潮下&#xff0c;电子设计课程早已不再是枯燥乏味的代名词。随着技术的飞速发展&#xff0c;一种名为SmartEDA的实践教学新选择正逐渐崭露头角&#xff0c;为电子设计课程注入了前所未有的活力与趣味性。今天&#xff0c;就让我们一起走进SmartEDA的世界&#xf…

二维数组广度优先遍历-腐烂的苹果

一、问题描述 二、解题思路 此问题通过广度优先遍历来解决&#xff0c;模拟苹果发霉变坏的过程 1.初始时遍历网格&#xff0c;借助队列来储存所有发霉的苹果&#xff0c;统计好苹果个数 2.每一分钟队列内发霉苹果都会对周围的苹果起作用&#xff08;向外部扩散&#xff09;&am…

java:aocache的单实例缓存

上一篇博客《java:aocache:基于aspectJ实现的方法缓存工具》介绍了aocache的基本使用&#xff0c; 介绍AoCacheable注解时说过&#xff0c;AoCacheable可以定义在构造方法上&#xff0c;定义在构造方法&#xff0c;该构建方法就成了单实例模式。 也就是说&#xff0c;只要构建…

照片变漫画怎么弄?这5个照片变漫画方法超简单

在艺术和社交融合的现在&#xff0c;将照片转换为漫画风格已经成为一种流行趋势。 无论是为了创造个性化的头像&#xff0c;还是制作有趣的社交媒体帖子&#xff0c;拥有一款能够将照片转换为漫画的软件将极大地丰富你的创意表达。 下面&#xff0c;本文将介绍几款能够实现这…

Day34:LeedCode 56. 合并区间 738.单调递增的数字 968.监控二叉树

56. 合并区间 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#xff0c;该数组需恰好覆盖输入中的所有区间 。 示例 1&#xff1a; 输入&#xff1a;int…

数学建模 —— MATLAB中的矩阵(上)

目录 矩阵的创建方法 (1)直接输入法 (2)函数创建法 (3)导入本地文件中的数据 矩阵元素的引用 矩阵元素的修改和删除 矩阵的创建方法 在MATLAB中&#xff0c;矩阵的创建方法主要有三种&#xff0c;分别是&#xff1a;直接输入法、函数创建法和导入本地文件中的数据。 (1)直…

R语言正则表达式

在 R 语言中&#xff0c;正则表达式&#xff08;regex&#xff09;可以用于文本匹配、查找、替换和拆分操作。R 中的正则表达式操作主要使用以下几个函数&#xff1a; grep(): 查找匹配的模式grepl(): 判断是否存在匹配的模式sub(): 替换第一个匹配的模式gsub(): 替换所有匹配…

Ubuntu20.04 64位 安装docker(有问题可评论沟通交流)

1、查看系统版本 cat /proc/version 2、卸载可能存在或未安装成功的docker&#xff08;新系统无需操作&#xff09; apt-get remove docker docker-engine docker-ce docker.io 3、更新apt-get apt-get update 4、安装软件包允许apt-get通过 HTTPS 使用存储库 apt-get install …

Python 爬虫从入门到入狱之路一

实际上爬虫一共就四个主要步骤&#xff1a; 明确目标 (要知道你准备在哪个范围或者网站去搜索)爬 (将所有的网站的内容全部爬下来)取 (去掉对我们没用处的数据)处理数据&#xff08;按照我们想要的方式存储和使用&#xff09; 我们在之前写的爬虫程序中&#xff0c;都只是获取…

计算机软件著作权对企业的重要性

软件著作权对于企业的重要性不容忽视&#xff0c;它不仅是企业技术创新的法律保障&#xff0c;也是企业市场竞争力的关键要素。以下是软件著作权对企业重要性的具体阐述&#xff1a; 法律保护技术创新&#xff1a;软件著作权是对软件开发者创作成果的专有权&#xff0c;它可以…

SpringBoot使用RestTemplate发起http请求

目录 GET请求POST请求 依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId> </dependency>简易配置 Configuration public class RestTemplateConfig {Beanpublic RestTempl…

亚马逊云(AWS)云服务器在国内的优势

大家好&#xff0c;今天我们来聊聊一个热门话题&#xff1a;为什么亚马逊云&#xff08;AWS&#xff09;云服务器在国内仍有很多人在用&#xff1f;尽管国内有很多优秀的云服务提供商&#xff0c;但AWS依然在中国市场上占据了重要地位。接下来&#xff0c;让我们一起探讨一下其…