用SPI数字信号代替手动旋钮电位器,实现0~10KΩ全范围程控调节。
核心参数(了解)
通道数:单通道
总阻值:10KΩ
调节步数:256级(0~255)
步进阻值:≈39.2Ω/级
接口:SPI(CPOL=0,CPHA=0)
供电:2.7V~5.5V
模拟端耐压:0~VDD(最高5.5V)
抽头电流:±1mA
工作温度:-40℃~125℃
封装:SOT-23-8 / SOIC-8
应用场景:
程控稳压电源
程控增益放大器
自动校准、自动偏移调节
数控分压、偏置电压
引脚功能:
CS:片选(低电平有效)
SCK:SPI时钟
SI:SPI数据输入(MOSI)
VSS:GND地
PA0:电位器端A(高端)
PW0:电位器滑片(Wiper)
PB0:电位器端B(低端)
VDD:供电3.3V/5V
最重要的3个模拟端:PA0上端接高电位 ,PB0下端接低电位 ,PW0接输出反馈FB。
调节规则:
写0x00➡PW0靠近PB0➡R=0Ω
写0xFF➡PW0靠近PA0➡R=10KΩ
上电默认,0x80(中点5KΩ)
SPI通信协议(100%成功标准)
1.时序标准
模式:Mode 0 (CPOL=0,CPHA=0)
时钟:上升沿采样
频率:最高10MHz(MCU1~4MHz足够)
数据位:16位(命令8位+数据8位)
高位先发
2.命令字(只有1个有用)
写滑片命令:0x11
格式:0x11 + 数据(0~255)
3.通信时序
CS拉低
发送0x11
发送 数据(0~255)
CS拉高
无读操作,只写不读。
MCP41010最容易踩的8个坑(99%人中招)
1.模拟端超过5.5V➡直接烧毁
2.PW0电流超过±1mA➡烧坏滑片
3.接反➡不工作
4.SPI模式错误(Mode0的CPOL=0,CPHA=0)➡不响应
5.只发8位数据(必须发命令+数据,16个SCK发完)➡不生效
6.上电滑片默认在中间5KΩ➡没调整输出异常
7.布线太长导致干扰(短粗直,远离功率线)
8.无固定下拉电阻(必须搭配固定下拉,不能只靠数字电位器。)➡输出漂移
解释:
标准版驱动代码(C语言 STM32 Arduino通用)
void MCP41010_Write(uint8_t value) { CS_LOW; //拉低片选 SPI_Send_Byte(0x11); //写命令 SPI_Send_Byte(value); //写滑片0~255 CS_HIGH; //拉高片选 }参考链接来自于:
MCP41010数字电位器使用全解析:从SPI通信到SGM2211调压_mob6454cc6d81c9的技术博客_51CTO博客