欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

基于MSP430F149操作数字电位器ISL23425WFVZ

程序员文章站 2022-05-22 19:01:08
...

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

一、硬件连接

1.数字电位器ISL23425WFVZ的引脚功能如表1所示;
Table 1 ISL23425WFVZ的引脚功能表 基于MSP430F149操作数字电位器ISL23425WFVZ

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

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

二、数据结构分析

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

2.根据该数字电位器的数据手册可知,该电位器内部寄存器的结构如表2所示。
Table 2 ISL234525WFVZ内部寄存器的结构基于MSP430F149操作数字电位器ISL23425WFVZ
3.ISL23425WFVZ内部寄存器功能解析

①指令Instruction部分

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

4.ISL23425WFVZ的SPI数据处理

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

基于MSP430F149操作数字电位器ISL23425WFVZFigure 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所示;

基于MSP430F149操作数字电位器ISL23425WFVZFigure 4 万用表挡位旋钮位置

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

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

基于MSP430F149操作数字电位器ISL23425WFVZFigure 5 万用表测试ISL23425WFVZ输出的设定阻值

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

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

联系方式:
QQ:1925973299