HAL库STM32硬件IIC驱动数字电位器MCP4017
目录
一、芯片特性
二、硬件电路
三、工程搭建
四、IIC硬件地址
五、驱动程序
项目需要,最近用到了一个IIC接口的数字电位器,型号:MCP4017T-502E。对应阻值5K,使用STM32G030F6的硬件IIC驱动,发现简单的不得了,这里记录一下。
一、芯片特性
从数据手册截个图,主要特性如下:

捡重要的我说一下:
抽头数:128,就是说5K的电位器,分辨率为5K/128,实际值手册后面有说明。

可以看到,是39.37欧姆。
电刷电阻,最小100欧姆,实际根据供电电压不同,会有一些变化,如图:

5.5V供电时,100欧姆左右;2.7V供电时,155欧姆左右。本人使用时,3.3V供电,推算阻值在181欧姆左右。
上电后阻值固定为中间值,如果是5K的电阻,每次上电为2.5K,如果是10K的电阻,每次上电为5K。即电位器设定的阻值掉电后不保存,有特殊需要的童鞋,这一点要注意。
二、硬件电路
外围电路比较简单,电源、IIC接口、电阻管脚,共6个管脚,电路如下:

三、工程搭建
因为用的是STM32,所以这里使用STM32CUBEMX来搭建工程,主要配置如下:

就是一些基本配置,没啥特别的。
四、IIC硬件地址
每个IIC设备,都有一个7位的硬件地址,如下图:

7位的硬件地址+读写控制位(读:1;写:0),共8位。所以要进行读操作时,硬件地址为0x5f,写操作时,硬件地址0x5e。
但是对于STM32的HAL库来说,0x5f和0x5e其实没区别,只要你把‘0101111’写在高7位即可,最后一位,HAL库中的应用程序会自动根据当前的读操作或者写操作进行置一/清零。
五、驱动程序
直接调用HAL库中,IIC的读写函数即可,写操作如下:
#define MCP4017_ADDRESS 0x5e //设置阻值
void set_res_val(float val) {uint8_t res_step = 0;val = val - 181.0;val = val / 39.37;res_step = (uint8_t)val;HAL_I2C_Master_Transmit(&hi2c2, MCP4017_ADDRESS, &res_step,1, 0xff);
}
如上所示,假设要设置一个4500欧姆的阻值,直接调用该函数:
set_res_val(4500.0);
很简单吧!打完收工!
本文首发:HAL库STM32硬件IIC驱动数字电位器MCP4017 | MCU起航
相关文章:
HAL库STM32硬件IIC驱动数字电位器MCP4017
目录 一、芯片特性 二、硬件电路 三、工程搭建 四、IIC硬件地址 五、驱动程序 项目需要,最近用到了一个IIC接口的数字电位器,型号:MCP4017T-502E。对应阻值5K,使用STM32G030F6的硬件IIC驱动,发现简单的不得了&…...
「地平线」副总裁余轶南与「理想汽车」智驾产品总监赵哲伦联手创业,入局具身智能赛道!
小编早期文章:智驾领域从业者,疯狂涌入人形机器人赛道!就有提到智驾领域从业者入局人形机器人赛道是趋势并分析原因。 之前媒体报道的智驾芯片上市公司【地平线】创始成员、副总裁、前软件平台产品线总裁余轶南(博士)…...
弹性盒子(display: flex)布局超全讲解|Flex 布局教程
文章目录 弹性盒子flex什么是弹性布局?弹性布局的特点?justify-contentalign-itemflex-direction (主轴的方向:水平或者垂直)flex-wrapflex-flowalign-contentflex-grow 属性flex-shrink 属性flex-basis 属性flex 属性align-self 属性 弹性盒…...
无问社区-无问AI模型
无问AI模型是无问社区新上线的一款AI功能,支持文本图像的输入,在文本理解能力、推理能力、视觉能力上相较于“社区助手”有了很大的提升。 我们在预训练模型的技术上增加1.7亿token的训练数据进行强化训练使其具备更好的效果。 更好的消息是我们准备了…...
如何记录日常笔记
如何使用Obsidian来记录日常的笔记吗?比如会议记录、读书笔记。 我认为,首先需要做好的就是建立一个单独的分类,比如设置会议记录的文件夹、读书笔记的文件夹,这样各个笔记相互不干扰。 而做日常记录,和我们进行卡片…...
【魅力golang】之-反射
1、引言 反射(Reflection)在 Golang中用于运行时检查和操作变量的类型和值。通过反射,可以实现动态类型处理,这在构建泛型代码、框架、序列化工具和动态代理等场景中非常有用。 2、什么是反射 反射是指程序在运行时能够动态地检…...
git--批量修改本地用户名和邮箱
原文网址:git--批量修改本地用户名和邮箱-CSDN博客 简介 本文介绍git如何批量修改项目的本地用户名和邮箱。 脚本 新建脚本:git_config.sh,内容如下: #!/bin/bash topDirpwd echo "开始处理" for file in ls ./ do…...
Rofin罗芬激光PowerLine L300 PL400 Manual 软件
Rofin罗芬激光PowerLine L300 PL400 Manual 软件...
【 thefuck 安装与使用】Linux 终端自动纠错工具:一头GitHub上的“草泥马“ - thefuck,妈妈再也不用担心我打错命令行了!
目录 快速安装使用 . 1.简介 2.安装 3.配置 4.补充 官方盗料参考 快速安装使用 快速安装使用,四步即可: #Ubuntu/Debian系统 sudo apt update sudo apt install python3-dev python3-pip sudo pip3 install thefuck #编辑bashrc配置文件 vim ~/.bashrc…...
牛客网刷题 ——C语言初阶——BC112小乐乐求和
1.牛客网刷题 ——C语言初阶 牛客网:BC112小乐乐求和 小乐乐最近接触了求和符号Σ,他想计算的结果。但是小乐乐很笨,请你帮助他解答。 输入描述: 输入一个正整数n (1 ≤ n ≤ 109) 输出描述: 输出一个值,为求和结果。 示例1 输…...
【PyTorch】(基础七)---- 完整训练流程
首先要明确一点,我们在编写模型、训练和使用模型的时候通常都是分开的,所以应该把Module的编写以及train方法和test方法分开编写。 调用gpu进行训练:在网络模型,数据,损失函数对象后面都使用.cuda(&#x…...
01- 三自由度串联机械臂位置分析
三自由度串联机械臂如下图所示(d180mm,L1100mm,L280mm),利用改进DH法建模,坐标系如下所示: 利用改进DH法建模,该机器人的DH参数表如下所示: 对该机械臂进行位置分析&…...
Flutter实现可拖拽操作Draggable
文章目录 1. Draggable 控件的构造函数主要参数: 2. Draggable 的工作原理3. 常见用法示例 1:基本的拖拽控件解释:示例 2:与 DragTarget 配合使用解释: 4. Draggable 的回调详解5. 总结 Draggable 是 Flutter 中一个用…...
Vue BPMN Modeler流程图
1、参考地址 git clone https://github.com/evanyangg/vue-bpmn-modeler.git 2、安装bpmn.js npm install bpmn-js --save 3、使用bpmn.js <template><div class"containers"><div class"canvas" ref"canvas"></div&g…...
写在公司40周年前夕
日子太快了,来这里工作六年多了。现在才知道原来入职的公司只是母公司的一小点。刚来一年就碰到疫情,三年疫情之后就迎来亏损,而后就是变了董事长,换了总经理。 这圣诞前,所有的子分又换了一把手。动作之大,…...
Python调用Elasticsearch更新数据库
文章目录 Elasticsearch介绍Python调用Elasticsearch更新数据库 Elasticsearch介绍 Elasticsearch是一个基于Lucene的搜索引擎,它提供了一个分布式、多租户能力的全文搜索引擎,具有HTTP web接口和无模式的JSON文档。Elasticsearch是用Java开发的&#x…...
测试基础之测试分类
软件测试是确保软件产品满足预期功能、性能和用户体验要求的关键环节。它的主要目的是通过系统化的方法发现并修复软件中的缺陷,从而提高软件的质量和可靠性。在软件开发生命周期的不同阶段执行测试,以尽早发现潜在的错误或类型,早期发现缺陷…...
太阳能LED路灯智能控制系统(论文+源码)
1系统的功能及方案设计 本次课题为太阳能LED路灯智能控制系统,其系统整体架构如图2.1所示,太阳能板通过TP4056充电模块给锂电池进行充电,电池通过HX3001升压模块进行升压到5V给整个控制系统进行供电,控制系统由AT89C52单片机作为…...
文本数据处理
文本数据处理 一、数据转换与错误处理 (一)运维中的数据转换问题 在计算机审计及各类数据处理场景中,数据转换是关键步骤,涉及将被审计单位或其他来源的数据有效装载到目标数据库,并明确标示各表及字段含义与关系。…...
Liunx环境下安装人大金仓数据库V8R6版本
Liunx环境下安装人大金仓数据库V8R6版本 一:硬件环境要求二:软件环境要求三:安装包准备四:检测和配置环境4.1:检查操作系统信息4.2 检查系统内存与存储空间 五:配置内核参数六:预安装工作6.1 创…...
数据库设计利器:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF智能生成SQL与优化建议
数据库设计利器:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF智能生成SQL与优化建议 1. 专业级SQL生成能力展示 在数据库开发领域,编写高效准确的SQL语句是每个开发者和DBA的基本功。Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF模型…...
突破百度网盘限速:Python直链解析工具使用指南
突破百度网盘限速:Python直链解析工具使用指南 【免费下载链接】baidu-wangpan-parse 获取百度网盘分享文件的下载地址 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wangpan-parse 还在为百度网盘下载速度缓慢而烦恼吗?今天我们将介绍一款…...
Qwen3-ASR-1.7B在软件测试中的语音指令自动化实践
Qwen3-ASR-1.7B在软件测试中的语音指令自动化实践 1. 引言 想象一下这样的场景:测试工程师小王正在执行复杂的软件测试流程,双手忙着操作多个设备,眼睛盯着屏幕上的测试结果,突然需要暂停当前测试、切换到另一个测试用例。传统方…...
SDMatte与CI/CD集成:实现模型服务的自动化部署与更新
SDMatte与CI/CD集成:实现模型服务的自动化部署与更新 1. 引言:当AI模型遇上DevOps 最近遇到一个挺有意思的场景:某设计团队在使用SDMatte进行图像背景去除时,每次模型更新都需要手动重新部署服务,导致新功能上线延迟…...
别再写“超级循环“了!裸机系统跑得快的秘密,全在架构上
裸机开发这件事,门槛低,天花板高。随便写个while(1)主循环,里面堆上一堆if判断,程序确实能跑起来。但跑起来和跑得好,完全是两码事。很多工程师写了三五年裸机代码,项目越来越大,代码越来越乱&a…...
OpenClaw备份策略:Qwen3-14B镜像+自动化配置云端同步
OpenClaw备份策略:Qwen3-14B镜像自动化配置云端同步 1. 为什么需要备份OpenClaw系统 上周我的主力开发机突然硬盘故障,导致三个月的OpenClaw配置和技能包全部丢失。这种切肤之痛让我意识到:自动化系统越是智能,灾备方案就越要可…...
终极指南:Permify权限计算优化如何避免深度递归陷阱
终极指南:Permify权限计算优化如何避免深度递归陷阱 【免费下载链接】permify An open-source authorization as a service inspired by Google Zanzibar, designed to build and manage fine-grained and scalable authorization systems for any application. — …...
Redis中有事务吗?有何不同?
在技术领域,我们常常被那些闪耀的、可见的成果所吸引。今天,这个焦点无疑是大语言模型技术。它们的流畅对话、惊人的创造力,让我们得以一窥未来的轮廓。然而,作为在企业一线构建、部署和维护复杂系统的实践者,我们深知…...
Legcord:革命性Discord轻量级客户端,10大特性全面解析
Legcord:革命性Discord轻量级客户端,10大特性全面解析 【免费下载链接】ArmCord Legcord is a custom client designed to enhance your Discord experience while keeping everything lightweight. 项目地址: https://gitcode.com/gh_mirrors/ar/ArmC…...
