x9c104数字电位器驱动

news/2024/10/30 21:27:44/

该数字电位器里的内部实现其实就是一个调滑阻的实现,下面的代码是在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

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

//延长时间随便设定的,这边设定1Us,试了一下,发现不设置也是可以的,但是怕影响时序,因此还是设定了一下
 

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,应该是挂载多个设备的时候使用的。
}

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


http://www.ppmy.cn/news/292803.html

相关文章

ThinkPHP3.2.3通过局域网手机访问项目

折腾一上午, 试了nginx, 试了修改Apache的httpd.conf 试了关闭代理 试了手动配置网络 试了关闭防火墙 试了添加防火墙入站出站规则 问了五个ChatGPT 都没解决。 记录一下 wampserver3.0.4 Apache2.4.18 PHP 5.6.19 MySQL 5.7.11 所有服务启…

endnote x9 word 闪退

endnote x9 word 闪退 https://support.clarivate.com/Endnote/s/article/EndNote-Problematic-field-codes-causing-jumping-cursor-the-range-cannot-be-deleted-or-other-problems-while-formatting?languageen_US 版权声明:本文为引用他人文章,原文…

EndNote X9使用方法

要先下载,word里不自带 一、如何添加引用 1、打开EndNote x9。点击文件->新建,在弹出的对话框中选择一个地址,修改文件名,新建文献库。 新建之后的效果如图所示: 2、在谷歌学术、百度学术或知网上搜索自己需要的…

EndNote X9使用教程

我的是office,endnote x9下载好后可以直接和office关联 1.下载汉化的包 下载链接:百度网盘:https://pan.baidu.com/s/1LIlNeqSzRcwbDpd8DBu47g 提取码:6qc3 点开后下载.exe文件,下载过程中记得把word保存关闭,因为下载好后EndNote会自动跟word关联上 2.进入EndNote界面…

数字电位器——x9c104

一些传统的电子设备是通过改变电位器的电阻来实现调整,比如灯的亮度、电机的转速等。如果想对这种设备进行智能改造但不大幅度改变设备内部的电器结构,我们需要电位器的电阻可通过单片机或微机进行控制,数字电位器就是这类设备。 “我也是在项目中有这方面需求,又不想深入研…

vivo x9s支持html,vivo X9s屏幕材质_vivo X9s屏幕分辨率-太平洋IT百科

vivo X9s上市快2个月了,对于vivo X9s这部手机,相信很多网友都已经体验过,vivo X9s无论是颜值工艺还是拍照方面表现都让人很满意。vivo X9s在系统上使用了智慧引擎的功能,让手机长时间使用不出出现卡顿现象,前置双摄除了…

Flutter 笔记 | Best Practice Tips for Flutter

1. 保持 build 方法纯净 build方法必须是纯粹的/没有任何不需要的东西。这是因为有一些外部因素可以触发一个新的小部件构建,下面是一些例子: Route pop/push 屏幕大小的调整,通常是因为键盘显示或屏幕方向的改变 父部件重新创建了它的子部件 Widget…

linux开发:Linux下查看端口占用

前段时间有学生问到,怎么查看已经被占用的端口?下面我就统一给大家解释一下。 提到端口,那首先来回顾端口定义,为了区分一台主机接收到的数据包应该转交给哪个任务来进行处理,使用端口号来区别;我们知道TCP…