本文主要讲述基于MSP430F149操作数字电位器ISL23425WFVZ,包含引脚功能、数据结构分析、编写代码、测试验证结果。
一、硬件连接
1.数字电位器ISL23425WFVZ的引脚功能如表1所示;
Table 1 ISL23425WFVZ的引脚功能表
2.根据数据手册中的引脚功能描述表,连接该电位器与MCU,连接示意图如图1所示;
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