2025年x9c104数字电位器驱动

x9c104数字电位器驱动该数字电位器里的内部实现其实就是一个调滑阻的实现 下面的代码是在 STM32 上写的 在这边做一下分享和记录 先附上数据手册上的时序图和一些说明 这个芯片的输出电阻最小是 40 欧姆 最大是 100K 这个端口接需要分压的电压 也就是相当于滑动变阻器两端的电压 类比上面的 A 端口 最大不超过 5V

大家好,我是讯享网,很高兴认识大家。

该数字电位器里的内部实现其实就是一个调滑阻的实现,下面的代码是在STM32上写的,在这边做一下分享和记录。

先附上数据手册上的时序图和一些说明。这个芯片的输出电阻最小是40欧姆,最大是100K


讯享网

 

这个端口接需要分压的电压,也就是相当于滑动变阻器两端的电压,类比上面的A端口 最大不超过+5V

同上,类比B端口 最大不超过-5V

这个是输出端口,是调节电阻以后的分出的电压  

接GND  

接+5V  
U/D 该引脚置高代表增加电阻,置低代表减少电阻  
CS 片选信号,当CS这个引脚输入是低电平时,使能这块芯片,也就可以控制了  
INC 该引脚在下降沿时可以调节电位器  

                                             

 

然后解释一下上面这张表格

Wiper Up 其实就是增加电阻的意思,当CS引脚为低电平,U/D引脚为高电平,INC引脚为下降沿时,电阻阻值固定增加1010欧姆
Wiper Down 其实就是减少电阻的意思,当CS引脚为低电平,U/D引脚为高电平,INC引脚为下降沿时,电阻阻值固定减少1010欧姆
Store Wiper Position 滑阻固定在当前的位置,当CS为上升沿,INC置高,U/DX X代表高低电平都可以
Standby Current 当CS为高时,这块芯片处于待机状态,也就是阻值固定
No Store,Return to Standby 当CS为上升沿,INC置低时,返回待机状态,这点我没有试过,可以试试看

#define GPIO_Wiper_CS GPIO_Pin_13
#define GPIO_Wiper_UD GPIO_Pin_12
#define GPIO_Wiper_INC GPIO_Pin_11

//此处忽略引脚初始化,将上面三个引脚都先置低

void Wiper_Test(int UD,int num)

{
 GPIO_WriteBit(GPIOB,GPIO_Wiper_CS, Bit_RESET);//CS置低,使用这块芯片
 DelayUs(1);
 if(UD==1)
 {
     GPIO_WriteBit(GPIOA,GPIO_Wiper_UD, Bit_SET);//如果你选择增加输出电压则将UD引脚置高
 }
 else
 {
     GPIO_WriteBit(GPIOA,GPIO_Wiper_UD, Bit_RESET);//反之,置低
 }
 DelayUs(1);
 for(;num>0;num--)//这一段是控制调节几次电阻的,如果想要调节多一点就使INC多经历几次下降沿,每次调节1010欧姆
 {
     GPIO_WriteBit(GPIOA,GPIO_Wiper_INC, Bit_RESET);
     DelayUs(1);
     GPIO_WriteBit(GPIOA,GPIO_Wiper_INC, Bit_SET);
     DelayUs(1);
 }
 GPIO_WriteBit(GPIOB,GPIO_Wiper_CS, Bit_SET);//将CS置高产生一个上升沿,INC在执行完上面一段后也被置高,因此固定到了当前的阻值
 DelayMs(20);//芯片手册上说不小于20ms,应该是挂载多个设备的时候使用的。
}

写得白话了一点,有不对或者有问题的地方欢迎一起讨论。

小讯
上一篇 2025-03-11 22:55
下一篇 2025-02-16 11:58

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/123830.html