基于MSP430F149操作数字电位器ISL23425WFVZ

本文主要讲述基于MSP430F149操作数字电位器ISL23425WFVZ,包含引脚功能、数据结构分析、编写代码、测试验证结果。

一、硬件连接

1.数字电位器ISL23425WFVZ的引脚功能如表1所示;
Table 1 ISL23425WFVZ的引脚功能表 在这里插入图片描述

2.根据数据手册中的引脚功能描述表,连接该电位器与MCU,连接示意图如图1所示;
Figure 1 电位器ISL23425WFVZ与MCU连接示意图

Figure 1 电位器ISL23425WFVZ与MCU连接示意图

二、数据结构分析

1.根据该数字电位器的数据手册可知,该电位器与MCU的通信方式为:SPI。

2.根据该数字电位器的数据手册可知,该电位器内部寄存器的结构如表2所示。
Table 2 ISL234525WFVZ内部寄存器的结构在这里插入图片描述
3.ISL23425WFVZ内部寄存器功能解析

①指令Instruction部分

Table 3 Instruction中I2~I0组合值的功能说明
在这里插入图片描述
Table 4 Instruction中R4~R0组合值的功能说明
在这里插入图片描述
②地址Address部分
Table 5 Address中A4~A0组合值的功能说明
在这里插入图片描述
③数据Data Byte部分
Data Byte:控制输出电阻值,Data Byte的值为0-255,对应十六进制为00H-FFH;输出电阻值范围是0~10KΩ。输出的正向、反向阻值与滑片位置的对应关系如图2所示。
在这里插入图片描述
Figure 2 正向、反向电阻值与滑片位置的对应关系

4.ISL23425WFVZ的SPI数据处理

ISL23425WFVZ的2Bytes写操作时序如图3所示。

在这里插入图片描述Figure 3 ISL23425WFVZ的2Bytes写操作时序图

①根据ISL23425WFVZ的2Bytes写操作时序图,将其数据从低位到高位进行分组:每16位一组,分为2个大组,共32位。不足32位时,往高位补0。

②发送数据时,从高位到低位、按8位一组进行发送。

三、基于MSP430F149,根据第二部分的数据结构分析,用C语言编写代码,令WR0输出10KΩ

#include "msp430f149.h"
unsigned int pointer;                       // 16-bit value to write
static unsigned int DAT[2] ={
    
    0X001B,0XE0F4};//实际上,① DAT[1]为0XE0FF,即DATA BYTE为0XFF=255时,阻值为10.9K;
                                                    //② DAT[1]为0XE0F4,即DATA BYTE为0XF4=244时,阻值为10K;
                                                    //③ DAT[1]为0XE000,即DATA BYTE为0X00=0时,阻值为125Ω.
void main( void )
{
    
    
  // Stop watchdog timer to prevent time out reset
  WDTCTL = WDTPW + WDTHOLD;
  P3SEL |= 0x0A;                            // P3.1,3 SPI option select: P3.1-MOSI,P3.3-CLK
  P3DIR |= 0x0E;                            // P3.1,2,3 output direction: P3.2-CS
  P3OUT &= ~0x04;                           // CS Reset
  ME1 |= USPIE0;                            // Enable USART0 SPI
  UCTL0 |= CHAR + SYNC + MM;                // 8-bit SPI Master **SWRST**
  UTCTL0 = CKPH + CKPL + SSEL1 + STC;       // Inv. delayed, SMCLK, 3-pin
  UBR00 = 0x02;                             // ACLK/2 for baud rate
  UBR10 = 0x0;                              // ACLK/2 for baud rate
  UMCTL0 = 0x0;                             // Clear modulation
  UCTL0 &= ~SWRST;                          // Initialize USART state machine
  pointer = 0;                              // Clear pointer
  CCTL0 = CCIE;                             // CCR0 interrupt enabled
  CCR0 = 64-1;                              // ~ 390Hz Clock period
  TACTL = TASSEL_2 + MC_1;                  // SMCLK, Up-mode
  _BIS_SR(LPM0_bits + GIE);                 // Enter LPM0 w/ interrupt
}
// Timer A0 interrupt service routine
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
    
    
  P3OUT |= 0x04;                             // CS set
  P3OUT &= ~0x04;                            // CS reset
  TXBUF0 = DAT[pointer] >> 8;
  TXBUF0 = DAT[pointer];
  pointer++;
  pointer &= 0x01;
}
                                                    

四、测试验证输出的阻值

1.将万用表的旋钮旋转至电阻档,如图4所示;

在这里插入图片描述Figure 4 万用表挡位旋钮位置

2.万用表的两支表笔分别连接至ISL23425WFVZ的RL0(13引脚)与RW0(12引脚);

3.读取万用表显示的数值。

在这里插入图片描述Figure 5 万用表测试ISL23425WFVZ输出的设定阻值

数字电位器ISL23425的数据手册链接:https://pdf1.alldatasheet.com/datasheet-pdf/view/421238/INTERSIL/ISL23425WFRUZ-TK.html

本文到此结束,若有不当之处,欢迎各位看官指正。

联系方式:
QQ:1925973299

猜你喜欢

转载自blog.csdn.net/weixin_44348166/article/details/109093296
今日推荐