HAL库数字电位器MCP41010的使用(SPI通讯)

本文介绍了MCP41XXX/42XXX数字电位器在STM32平台上的工作原理,包括其在滑动电阻器模式和电位器模式下的特性,以及与控制器通过SPI串行接口进行通信的方法。还提供了计算电阻和编写示例代码的详细步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

我们将PA0和PB0看成电位器的两端(哪一端为高电压端都行),而PW0则看作电位器的抽头(抽头有256个档位),由数据手册我们可以知道,抽头电流应该小于1mA;同时电位器三端PA0、PB0、PW0之间的电压范围应该在0-VDD之间,而VDD电压范围为2.7V-5.5V之间。电位器阻值典型值为10K欧姆,最小为8K欧姆,最大12K欧姆。上电时,抽头复位到中间刻度位置(80h)

两个数字电位器之间电阻差值有30%,而一个数字电位器256个档位中两个相邻档位电阻差值为1%

数字电位器工作在两种模式下:

一、滑动电阻器模式

在变阻器模式下,电阻具有正温度系数。随温度变化最大的在数据字节的的前 6%(数据字节为 00h 至 0Fh)中变化最大,原因是刮环电阻系数会影响总电阻。通常为 800 ppm/°C。

二、电位器模式

在电位器模式中,内阻比决定了器件的温度系数。RWB 电阻器与 RAB 电阻器的匹配电阻器的典型温度系数为1 ppm/°C(在数字字节为 80h 时测量)。在代码较低时,刮片电阻温度系数将占主导地位。

电位器电阻的计算公式如下:

控制器与MCP41XXX/42XXX 数字电位计之间的通信是通过 SPI 串行接口完成的。该接口
可发出三条指令:
1. 向电位计数据寄存器写入新值。
2. 使通道进入低功耗关机模式。
3. NOP(无操作)命令。
执行任何命令都需要将CS 低电平,然后将一个命令字节和一个数据字节时钟输入 16 位移位寄存器。然后将一个命令字节和一个数据字节时钟输入 16 位移位寄存器。CS 升高时执行命令。数据在时钟上升沿输入,在时钟下降沿从 SO 引脚(该引脚只有MCP42XXX有,功能是多个电位器级联)输出。设备将在 CS为低电平时,设备将跟踪时钟数(上升沿),如果时钟数不是 16 的倍数,则将终止所有命令。

对于MCP41XXX来说,我们只需要保证C1=0,C0=1, P0 = 1即可写入数据,其他的都为无关位。因此写入指令为0x11或者0x13。

设备可以在 SPI 模式 0,0和 1,1 模式下运行设备。在这两种模式下,数据在 SCK 上升沿时进入设备,而在 SCK 下降沿时从 SO 引脚输出数据。(上升沿采样,下降沿输出),Date Size = 16bit  ,MSB first;

示例代码:

这里设置为单线仅主机传输模式,传输位数为8位(传输两次即16bit数据),SPI 0,0模式

MCP41010.c

/*  功能:改变MCP41010的阻值  */
/*  TxDat: 设置阻值大小,我们以BW阻值为参考阻值       */
//计算公式: RBW = 10K*TXData/256 +52欧姆
//00时,W抽头处于抽头B的位置,BW阻值等于抽头电阻,典型值为52Ω
//FF时,W抽头处于抽头A的位置,BW阻值等为9985.94Ω,抽头始终不会与A端相连
/*  返回值:无                 */
void MCP41010_WR_Byte(uint8_t TxData)   
{
	uint8_t RES[2];
  RES[0] = 0x13;   //控制命令,表示要写数据了
	RES[1] = TxData;
  MCP41010_Enable(); 
  HAL_SPI_Transmit_DMA(&hspi2, RES, 2);
	MCP41010_Disable(); 
}


MCP41010.h:   头文件


#ifndef __MCP41010_H__
#define __MCP41010_H__

#include "stm32g0xx_hal.h"
#include "main.h"

#define MCP41010_Enable() 			HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_RESET)
#define MCP41010_Disable() 		HAL_GPIO_WritePin(SPI_CS_GPIO_Port, SPI_CS_Pin, GPIO_PIN_SET)

void MCP41010_WR_Byte(uint8_t TxData);

#endif

电位器模式下亲测有效,通过输入不同数据可以改变W抽头的分压。

参考链接:关于STM32的SPI单线只发送模式SPI_Direction_1Line_Tx-CSDN博客

MCP41010数据手册中文版.pdf-原创力文档 (book118.com)

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值