STMCUBEMX_IIC_LL库/HAL库_扫描总线设备

news2024/9/23 17:15:49

STMCUBEMX_IIC_LL库/HAL库_扫描总线设备

前言:
在很多开发过程中,I2C总线上会挂载多个从机设备,但是又不知道设备的地址是多少,我做一个简单的小工具扫描总线,把地址打印出来就很方便

在这里插入图片描述
LL库实例:

void scanI2cDevice(I2C_TypeDef *I2Cx)
{
	for(unsigned char dev_addr = 0; dev_addr < 0x7F; dev_addr++)//扫描I2C总线
	{
		volatile unsigned int overtime = 0;
		LL_I2C_GenerateStartCondition(I2Cx);//起始信号
		while (!LL_I2C_IsActiveFlag_SB(I2Cx) && (overtime < 10000))//起始信号发送完毕
		{
			overtime++;
		}
		if(overtime >= 10000)
		{
			Debug_printf("scanI2cDevice:%02x Start Error!\r\n",dev_addr << 1);
		}

		overtime = 0;
		LL_I2C_TransmitData8(I2Cx, (dev_addr << 1) & 0xFE);//发送器件地址
		while (!LL_I2C_IsActiveFlag_ADDR(I2Cx) && (overtime < 10000))//等待从机回应ACK
		{
			overtime++;
		}
		if(dev_addr%50 == 0)
		{
			Debug_printf("\r\n");
		}
		if(overtime >= 10000)
		{
			Debug_printf("-- ");
		}
		else
		{
			Debug_printf("%02x ",dev_addr << 1);
		}
		
		LL_I2C_ClearFlag_ADDR(I2Cx);
		LL_mDelay(10);
	}
	Debug_printf("\r\n*************scan over***********\r\n");
}

HAL库实例:

void scanI2cDevice(I2C_HandleTypeDef* I2Cx)
{
	HAL_StatusTypeDef result;
	
	printf("\r\n*************start scan***********\r\n");
	for(int addr = 0; addr < 0x7F; addr++)
	{
		result = HAL_I2C_IsDeviceReady(I2Cx, addr << 1, 3, 5);
		if(result != HAL_OK)
		{
			if(addr%50 == 0)
			{
				printf( "--\r\n");
			}
			else
			{
				printf( "-- ");
			}
		}
		if(result == HAL_OK)
		{
			printf("%02x ", addr);
		}
	}
	printf("\r\n*************scan over***********\r\n");
}

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

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

相关文章

欧姆龙安全PLC及周边产品要点指南

电气安全、自动化设备作业安全&#xff0c;向来是非常非常之重要的&#xff01;越来越多的客户在规划新产线、改造既有产线的过程中&#xff0c;明确要求设计方和施工方将安全考虑进整体方案中进行考虑和报价&#xff01;作为一名自动化电气工程师&#xff0c;尤其是高级工程师…

Python爬虫教程第3篇-解决使用reqeusts遇到的ProxyError异常

起因 问题出现在windows电脑上&#xff0c;我用mac执行程序的时候并不会报错&#xff0c;但是如果在windows上的时候&#xff0c;大部分windows电脑会报错&#xff0c;而有些版本低的windows电脑又不会报错。 异常栈信息 HTTPSConnectionPool, Cannot connect to proxy, no …

智能无人数字直播间 打造24小时的无人直播间源码系统 带网站的安装代码包以及搭建教程

系统概述 智能无人数字直播间系统是一种基于人工智能技术的软件工具&#xff0c;它结合了高精度扫描建模、自动化控制、多模态生成等多项先进技术&#xff0c;能够实现对真实人物的高度仿真&#xff0c;并自主执行各类直播任务。该系统不仅支持24小时不间断直播&#xff0c;还…

物联网安全的优秀实践以及八种策略

大多数物联网安全漏洞都是可以预防的&#xff0c;甚至可能是全部。看看任何引人注目的物联网攻击&#xff0c;都会发现一个已知的安全漏洞。 大多数物联网安全漏洞都是可以预防的&#xff0c;甚至可能是全部。看看任何引人注目的物联网攻击&#xff0c;都会发现一个已知的安全漏…

【BUG】RestTemplate发送Post请求后,响应中编码为gzip而导致的报错

BUG描述 20240613-09:59:59.062|INFO|null|810184|xxx|xxx||8|http-nio-xxx-exec-1|com.xxx.jim.xxx.XXXController.?.?|MSG接收到来自xxx的文件请求 headers:[host:"xxx", accept:"text/html,application/json,application/xhtmlxml,application/xml;q0.9,*…

如何在OpenFOAM的案例文件夹中确定数据的点和面,确定点和网格之间的关系,从而用于深度学习预测和构建模型呢(分析数据格式及其含义)

在OpenFOAM中&#xff0c;点&#xff08;points&#xff09;和面&#xff08;faces&#xff09;的定义是通过不同的文件来进行的。在案例一级目录下面的constant/polyMesh目录下&#xff0c;会有points, faces, owner, neighbour等文件&#xff0c;来描述网格的几何和拓扑结构。…

Vue学习笔记-自定义组件使用v-model

拆解实现 父组件 <template><div></div><Son :name"name" inputChange"inputChange"></Son>{{ name }} </template><script setup> import {ref} from vue import Son from ./son2.vueconst nameref("张…

戴尔笔记本(WIndows11)长时间睡眠后就会蓝屏或者死机必须重启问题解决

以下只是记录客服解决的过程&#xff0c;本人非专业人员&#xff0c;不能提供帮助。 戴尔笔记本&#xff08;游匣G15 5510&#xff09;长时间睡眠后&#xff0c;会出现蓝屏&#xff1a; 控制面板 -> 电源 -> 选择关闭计算机盖的功能 关闭快速启动&#xff1a; 关闭快速…

学习XDMA—20240709

概览&#xff1a; 在内部&#xff0c;子系统可以配置为实现多达8个独立的物理DMA引擎(最多4个H2C和4个C2H)。这些DMA引擎可以映射到单独的AXI4Stream接口&#xff0c;也可以将共享的AXI4内存映射(MM)接口映射到用户应用程序。在axis4 MM接口上&#xff0c;PCI Express的DMA/桥接…

Goby漏洞利用优化 | GeoServer远程代码执行漏洞(CVE-2024-36401)(支持回显命令执行、内存马)

漏洞名称&#xff1a;GeoServer /geoserver/wfs 远程代码执行漏洞&#xff08;CVE-2024-36401&#xff09; English Name&#xff1a;GeoServer /geoserver/wfs Code Execution Vulnerability(CVE-2024-36401) 漏洞描述及详情&#xff1a;&#xff08;见上篇&#xff09; Ge…

Linux -- 认识gcc/g++、代码的编译过程

目录 前言&#xff1a; 使用 gcc/g&#xff1a; 代码的编译过程&#xff1a; 预处理&#xff1a; 头文件展开&#xff1a; 宏替换去注释&#xff1a; ​编辑 条件编译&#xff1a; 编译&#xff1a; 汇编&#xff1a; 链接&#xff1a; 动态库&#xff08;动态链…

爬取天气数据,利用Pyecharts作轮播图

爬取网站链接&#xff1a;https://lishi.tianqi.com/xiamen/202312.html 爬取了厦门市2023年一整年的天气数据&#xff0c;包括最高温&#xff0c;最低温&#xff0c;天气&#xff0c;风力风向等 爬虫代码&#xff1a; import requests import pandas as pd import csv from…

新手怎么使用《藏文翻译词典》查藏文单词和藏语近义词反义词?手把手教你写藏文作文!

西藏地区的学生常常需要使用藏语写作业写作文&#xff0c;同时还需要学习汉语中文&#xff0c;在这种情况下&#xff0c;一款好用的藏语翻译和藏文词典工具&#xff0c;就显得非常重要了&#xff0c;在这里教大家使用《藏文翻译词典》工具&#xff0c;利用它学习汉语和写好藏文…

excel表格移动一整行或者移动一整列

首先选中一整行&#xff0c;将鼠标移动到边边上&#xff0c;知道出现黑色十字型箭头鼠标头然后按住shift键&#xff0c;同时移动到想去的地方就可以了 注意&#xff1a;mac和Windows都是shift键&#xff0c;mac的option键只是将列复制一份到移动到的地方&#xff0c;然后移动到…

带有子节点的树状表的父节点拖动排序#Vue3#Sortable插件

带有子节点的树状表的父节点拖动排序#Vue3#Sortable插件 使用Sortable插件这里要保证获取到的是父节点的下标&#xff0c;属性newDraggableIndex获取到的就是只有父节点的下标。设置子节点不能被拖动&#xff0c;最后在逐个调用接口进行数据库中顺序的更新。 <template>…

两名程序员与一名运维人员历经整整一天的时间,成功解决了 nacos 登录时出现“ERR CONNECTION RESET,用户名或密码错误”这一棘手问题

上图看页面报错 这是网页应用提示的信息&#xff0c;服务器日志没有明显的错误日志&#xff0c;检查了账号密码是正常的。 再上第二张图 把这个信息发到百度上查找 通过上图的信息大概知道网络层的原因&#xff0c;可能是在网络安全方面被重置了 下面我们就验证下 1、在服务…

谈面向任务的多轮对话系统(TOD)

面向任务对话系统&#xff08;Task-Oriented Dialogue (TOD) Systems)主要是为解决特定任务的&#xff0c;比如订票任务&#xff08;订机票&#xff0c;电影票等&#xff09;&#xff0c;预定饭店等。这种对话往往需要多轮对话才能够完成。 多轮对话的例子 客户预定一个餐厅的…

数字力量助西部职教全面提升——唯众品牌大数据、人工智能系列产品中标甘肃庆阳职院数字经济人才培养基地!

近日&#xff0c;唯众品牌凭借在大数据和人工智能领域深耕多年的技术积累和卓越产品&#xff0c;成功中标庆阳职业技术学院全国一体化算力网络国家枢纽节点数字经济人才培养基地项目&#xff0c;标志着唯众在助力西部职业教育与数字经济融合发展的新征程上迈出了坚实的一步。 …

构建Android studio版的CarSystemUI工程时因为包名一致导致BuildConfig问题

项目场景&#xff1a; 公司计划开发杰发AC8025-Android 12版本车载平台&#xff0c;前期预研需要构建Android studio版的CarSystemUI工程 问题描述 AAOS车载项目里面的CarSystemUI源码默认无Android studio版本&#xff0c;为了后期快速开发调试需要构建Android studio能直接…

JavaWeb__XML、http

目录 一 、XML1.1 常见配置文件类型1.1.1 properties配置文件1.1.2 xml配置文件 1.2 DOM4J进行XML解析1.2.1 DOM4J的使用步骤1.2.2 DOM4J的API介绍 二、 HTTP协议2.1 HTTP简介2.2 请求和响应报文2.2.1 报文的格式2.2.2 请求报文2.2.3 响应报文 一 、XML XML是EXtensible Markup…