【HMGD】STM32/GD32 I2C DMA 主从通信

STM32 I2C配置

主机配置

主机只要配置速度就行
在这里插入图片描述

从机配置

从机配置相同速度,可以设置第二地址

在这里插入图片描述

因为我的板子上面已经有了上拉电阻,所以可以直接通信

在这里插入图片描述

STM32 I2C DMA 定长主从通信代码示例

int state  = 0;
static uint8_t I2C_recvBuf[10] = {0};
static uint8_t I2C_sendBuf[10] = {2,1,2,3,4,5,6,7,8,9};

void HAL_I2C_SlaveRxCpltCallback(I2C_HandleTypeDef *hi2c)
{
	HAL_I2C_Slave_Receive_DMA(&hi2c1, I2C_recvBuf, 5);
	state = 1;
}

// I2C 干扰检测
void I2C2_ER_IRQHandler(void)
{
	printf("ERROR I2C\r\n");
	HAL_I2C_Slave_Receive_DMA(&hi2c1, I2C_recvBuf, 5);
  	HAL_I2C_ER_IRQHandler(&hi2c2);
}

int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_DMA_Init();
  MX_I2C1_Init();
  MX_USART1_UART_Init();
  MX_I2C2_Init();
	
  printf("hello i2c stm32 \r\n");
  HAL_I2C_Slave_Receive_DMA(&hi2c1, I2C_recvBuf, 5);
	
  while (1)
  {
    // 可以多地址接收数据
    HAL_I2C_Master_Transmit_DMA(&hi2c2, (20<<1)|0x01 ,I2C_sendBuf, 5);
	//HAL_I2C_Master_Transmit_DMA(&hi2c2, (10<<1)|0x01 ,I2C_sendBuf, 5);
		
	if(state == 1)
	{
		state  = 0;
		for (int i=0; i<4; i++)
		{	
				printf("[%d]:%d", i, I2C_recvBuf[i]);
		}
			
		I2C_sendBuf[0] = I2C_sendBuf[0] + 1;
			
		if(I2C_sendBuf[0] > 100)
		{
				I2C_sendBuf[0] = 0;
		}
			
		printf("\r\n");
	}
		
	HAL_Delay(1000);
  }
}

在这里插入图片描述

示例代码下载

https://download.csdn.net/download/hmxm6/89324145

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

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

相关文章

Python图像处理:从基础到高级的全方位指南

目录 第一部分&#xff1a;Python图像处理基础 1.1 图像处理概念 1.2 Python图像处理常用库 1.3 实战案例&#xff1a;图像显示与保存 1.4 注意事项 第二部分&#xff1a;Python图像处理高级技巧 2.1 图像变换 2.2 图像增强 2.3 图像复原 第三部分&#xff1a;Python…

注意力机制,代码简析

2017年Google在论文《Attention is All You Need》中提出了Transformer模型&#xff0c;并成功应用到NLP领域。该模型完全基于自注意力机制Attention mechanism实现&#xff0c;弥补了传统的RNN模型的不足。宏观层面&#xff0c;Transformer可以看成是一个黑箱操作的序列到序列…

SpringCloud Alibaba的相关组件的简介及其使用

Spring Cloud Alibaba是阿里巴巴为开发者提供的一套微服务解决方案&#xff0c;它基于Spring Cloud项目&#xff0c;提供了一系列功能强大的组件&#xff0c;包括服务注册与发现、配置中心、熔断与限流、消息队列等。 本文将对Spring Cloud Alibaba的相关组件进行简介&#xff…

Unity3D读取Excel表格写入Excel表格

系列文章目录 unity工具 文章目录 系列文章目录&#x1f449;前言&#x1f449;一、读取Excel表格&#x1f449;二、写入Excel表格&#x1f449;三、Fileinfo和Directoryinfo的操作&#x1f449;四、壁纸分享&#x1f449;总结 &#x1f449;前言 有时候难免会遇到读取文件写…

【实验内容-1】自定义异常类的应用

目录 【任务介绍】 【任务目标】 【任务分析】见具体任务介绍 【任务实现】 【实验结果&#xff08;包括输入数据和输出结果&#xff09;】 【任务介绍】 1.写一个抽象类&#xff1a;账户类(Account) 包含属性: id:账户号码 name:账户姓名 balance:账户余额 deposit…

基于Matlab实现声纹识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景与意义 声纹识别&#xff0c;也称为说话人识别&#xff0c;是一种通过声音判别说话人身份的生物识别技…

线段(线性dp)

题目链接&#xff1a;[TJOI2007] 线段 - 洛谷 思路&#xff1a; f[i][0]表示走完第i行且停在第i行的左端点最少用的步数 f[i][1]同理&#xff0c;停在右端点的最少步数。 那么转移就很简单了&#xff0c;走完当前行且停到左端点&#xff0c;那么一定是从右端点过来的&#x…

“腾讯云 AI 代码助手”体验

一、“腾讯云 AI 代码助手”体验 1、注册账号并进行实名认证 2、进入开发环境 3、体验javascript简单函数 代码如下&#xff1a; //请写一个两个日期计算的函数 function dateDiff(date1, date2) {return date2.getTime() - date1.getTime(); } var date1 new Date("2…

Elastic Cloud Serverless 定价和打包

作者&#xff1a;来自 Elastic Clint Scott 借助 Elastic Cloud Serverless&#xff0c;我们通过针对安全性、可观察性和 Elasticsearch 的新解决方案特定定价和打包来简化并提供更高的灵活性。 Elastic Cloud 定价的演变 Elastic Cloud 长期以来一直是使用 Elastic Stack 的最…

# 分布式链路追踪_skywalking_学习(1)

分布式链路追踪_skywalking_学习&#xff08;1&#xff09; 一、APM 系统概述 1、什么是 APM 系统&#xff1f; APM &#xff1a;全称 Application Performance Management 即应用性能管理系统。是对企业系统即时监控以实现对应用程序性能管理和故障管理的系统化的解决方案。…

【leetcode】排序算法总结

第 11 章 排序 - Hello 算法动画图解、一键运行的数据结构与算法教程https://www.hello-algo.com/chapter_sorting/ 堆排序 #include <iostream> #include <vector>using namespace std;/* 堆的长度为 len &#xff0c;从节点 i 开始&#xff0c;从顶至底堆化 *…

【vue部署】Apache部署vue项目

Apache部署vue项目 Apache 下载安装(windows)1. 下载2. 安装3. 启动服务 vue 部署配置1. 基础配置2. 解决页面刷新问题 Apache 下载安装(windows) 1. 下载 Apache 2.4.59 下载地址&#xff1a;httpd-2.4.59-240404-win64-VS17.zip Visual C Redistributable for Visual Studi…

Python解析网页-XPath

目录 1、什么是XPath 2、安装配置 3、XPath常用规则 4、快速入门 5、浏览器XPath工具 1.什么是XPath XPath&#xff08;XML Path Language&#xff09;是一种用于在XML文档中定位和选择节点的语言。 它是W3C&#xff08;World Wide Web Consortium&#xff09;定义的一种标…

Springboot+Element_分页+显示+搜索+完整版

目录 显示效果 新建项目时选择的依赖 文件的目录结构 一、准备工作 1、配置文件 2、pom增加PageHelper 3、在idea中建立数据库连接&#xff0c; 4、新建peom表&#xff08;如已建好&#xff0c;则忽略本条&#xff09; 二、新建前端页面index.html&#xff08;未连后端…

Redis --学习笔记

Redis简介 一个基于内存的key-value结构数据库。Redis 是互联网技术领域使用最为广泛的存储中间件 特点&#xff1a; 基于内存存储&#xff0c;读写性能高 适合存储热点数据&#xff08;热点商品、资讯、新闻&#xff09; 企业应用广泛 Redis默认端口号为6379 Redis是用…

Web安全:企业如何抵御常见的网络攻击?

近年来随着人类社会向数字世界的加速发展&#xff0c;勒索软件攻击事件在全球范围内呈现快速上升的态势&#xff0c;几乎所有国家的政府、金融、教育、医疗、制造、交通、能源等行业均受到影响&#xff0c;可以说有互联网的地方就可能发生勒索软件攻击事件。 Web安全是一个大课…

【调试笔记-20240520-Linux-在 WSL2 / Ubuntu 20.04 中编译 QEMU 可运行的 OVMF 固件】

调试笔记-系列文章目录 调试笔记-20240520-Linux-在 WSL2 / Ubuntu 20.04 中编译 QEMU 可运行的 OVMF 固件 文章目录 调试笔记-系列文章目录调试笔记-20240520-Linux-在 WSL2 / Ubuntu 20.04 中编译 QEMU 可运行的 OVMF 固件 前言一、调试环境操作系统&#xff1a;Windows 10 …

科技赋能,拓宽生活边界

在当今多元化与快速变化的社会中&#xff0c;社会适应能力成为了衡量个人能否顺利融入社会、享受生活品质的关键指标。对于盲人朋友而言&#xff0c;这一能力尤为重要&#xff0c;它不仅关乎日常生活的便利&#xff0c;更影响到心理的健康与社会参与度。在此背景下&#xff0c;…

ERP与MES系统中的产品装配结构与序列号管理

在企业资源计划&#xff08;ERP&#xff09;系统中&#xff0c;产品不仅仅是物料的简单集合&#xff0c;它们还扮演着转配件的角色。通过物料清单&#xff08;BOM&#xff09;的形式&#xff0c;ERP系统能够详细表达出产品的装配结构。例如&#xff0c;在个人电脑&#xff08;P…

颠覆传统编码,零基础也能飞的工具!

YDUIbuilder以其低代码的设计理念&#xff0c;通过简单的拖拽操作&#xff0c;即使是编程新手也能快速构建出专业的用户界面。这不再是一个遥不可及的梦想&#xff0c;而是一个触手可及的现实。 组件化世界&#xff0c;创意无限&#xff1a;构建梦想中的界面 在YDUIbuilder的组…