397|0

1249

帖子

67

TA的资源

纯净的硅(中级)

楼主
 

【Follow me第二季第1期】补充:AD5270数字电位器的驱动应用 [复制链接]

 

AD5270是1024位、变阻器模式下的温度系数5 ppm/°C、1%电阻容差误差、SPI接口和50-TP存储器数字变阻器,性能十分优秀。

它集业界领先的可变电阻性能与非易失性存储器(NVM)于一体,并提供50次可编程(50-TP)存储器。将电阻值编程写入50-TP存储器之前,可进行无限次调整。这些器件不需要任何外部电压源来帮助熔断熔丝,并提供50次永久编程的机会。在50-TP激活期间,一个永久熔断熔丝指令会将游标位置固定。SPI接口控制时序如下:

使用开发板的SPI接口(任意IO软件模拟SPI)可以完成驱动控制,测试代码如下:

  • // AD5270 commands - new digital potentiometer
  • #define CMD_WR_RDAC 0x01
  • #define CMD_RD_RDAC 0x02
  • #define CMD_ST_RDAC 0x03
  • #define CMD_RST 0x04
  • #define CMD_RD_MEM 0x05
  • #define CMD_RD_ADDR 0x06
  • #define CMD_WR_CTRL 0x07
  • #define CMD_RD_CTRL 0x08
  • #define CMD_SHTDN 0x09
  • void vspi_write_word(const int chip_select, uint16_t data_to_send, const uint8_t bit_order, const uint8_t mode) {
  • vspi->beginTransaction(SPISettings(SPI_FREQ_FAST, bit_order, mode));
  • digitalWrite(chip_select, LOW); //pull SS slow to prep other end for transfer
  • vspi->transfer16(data_to_send);
  • digitalWrite(chip_select, HIGH); //pull ss high to signify end of data transfer
  • vspi->endTransaction();
  • }
  • /* Write a 4-bit command and a 10-bit data word */
  • void AD5270_Write(const int chip_select, uint8_t cmd, uint16_t data){
  • uint16_t data_word = ((cmd & 0x0F) << 10) | (data & 0x03FF);
  • vspi_write_word(chip_select, data_word, MSBFIRST, SPI_MODE1);
  • }
  • /* Enable/disable rheostat value changes */
  • void AD5270_LockUnlock(const int chip_select, uint8_t lock){
  • AD5270_Write(chip_select, CMD_WR_CTRL, lock ? 0 : 0x002);
  • }
  • /* Enable/disable hardware shutdown */
  • void AD5270_Shutdown(const int chip_select, uint8_t shutdown){
  • AD5270_Write(chip_select, CMD_SHTDN, shutdown ? 1 : 0);
  • }
  • /* Set the value of the digital rheostat - range is 0-0x3FF (0-100kOhm) */
  • void AD5270_Set(const int chip_select, uint16_t val)
  • {
  • AD5270_Write(chip_select, CMD_WR_RDAC, val);
  • }
  • #define CHIP_SEL_MEAS 10 // Chip select pin for measuring digital rheostat potentiometer
  • void setup() {
  • // put your setup code here, to run once:
  • // Set voltage measurement gain to 1 (maximum current (5V pk-pk) must be within ADC range)
  • AD5270_Shutdown(CHIP_SEL_MEAS, 1);
  • AD5270_Set(CHIP_SEL_MEAS, 100);
  • }
  • void loop() {
  • // put your main code here, to run repeatedly:
  • }

测试接线和效果:

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
震荡电路详解

震荡电路详解

毕设很重要,但找工作的规则更重要(1)

现在正是年后,各种招聘会招聘广告铺天盖地,我们很多的大学生们又该忙找工作了。我作为一个人到中年的职场油子,今天跟大家谈谈招 ...

关于ICL7135A/D转换器串行接口的最优化设计

ICL7135AD转换器除了可以并行输出万、千、百、十、个位上的BCD码这种形式外,还可以利用BUSY和CLK的相与功能进行串行数据输出, ...

【TI原创】采用8962驱动3.2寸TFT屏幕(非官方GUI版本)

看到坛子里面有关于8962驱动TFT的文章,主要是讲解如何使用官方的tft示例程序,个人觉得那个代码繁琐难懂,移植起来也是相当不方 ...

MSP430F5529系统实验AD部分,问题求解

这个是网站下载的程序,因为本人用的是F5529的板子,没有P6.0的端口输入插头,所以想改用P6.7端口输入,进行试验,中间除了一些 ...

【GD32L233C-START评测】4、电位器+ws2812做一个简易可调灯色的灯环

本帖最后由 emmnn 于 2022-3-2 00:02 编辑 前言 不知不觉,春节已经过去一个月了,2022年也过去了两个月。年后因为种种原 ...

[先楫HPM6750测评之一]两种IDE(SES和RS)开发平台体验

SES是segger公司所出的segger embedded studio的开发平台,而RS是rtthread所出的rtthread studio。两个开发平台均支持hpm系列开 ...

在产生自我质疑时可以多跟朋友交流交流

最近工作不太顺利,不够细心,开始怀疑自己工作能力。跟朋友讲了一下好多了

加防护,更安全!OK-MX9352-C开发板让通信安全又稳定

随着新基建的加快推进,智能制造迎来了更好的发展时机,嵌入式板卡等智能设备也在更多的应用场景中大放异彩。但随着现场的设备数 ...

有没有3D打印机推荐

想弄个小的3D打印机玩玩,有没有那种适合DIY的小型3D打印机推荐,价格不要太贵。

关闭
站长推荐上一条 1/10 下一条
有奖直播:当AI遇见仿真,会有什么样的电子行业革新之路?
首场直播:Simcenter AI 赋能电子行业研发创新
直播时间:04月15日14:00-14:50

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 3

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表