This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] PGA116:从MSP430Fx5xx编程和访问PGA116

Guru**** 1482555 points
Other Parts Discussed in Thread: MSP430F5529, PGA116
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/amplifiers-group/amplifiers/f/amplifiers-forum/572247/pga116-programming-and-accessing-pga116-from-msp430fx5xx

部件号:PGA116
主题中讨论的其他部件:MSP430F5529

如何从MSP430f5529与PGA116通信以设置PGA116的增益?

PGA116由 微控制器(3.3V)提供DVdd电源,CS,DOUT,DIN和SCLK由相应的微控制器引脚提供,使能引脚也保持高连接到3.3V。

如何将16位数据从微控制器的主输出引脚发送到PGA116的DIN引脚?

如何访问PGA116中的寄存器?

以下程序用于初始化SPI时钟,传输和接收数据

#include <MSP4S.h>

unsigned char MST_Data,MST_Data2,SLV_Data;
无符号字符temp;

内部主(无效)

易失性无符号int I;

WDTCTL = WDTPW+WDTHOLD;//停止看门狗计时器

P4OUT |= 0x02;//为LED设置WFP 1.0
//设置为从属设备重置的WFP 1.1
P1DIR |= 0x01;//将WFP 1.0 -2设置为输出方向
P4DIR |= 0x02;
P3SEL || BIT3+BIT4;// WFP 3.3 ,4选项选择
P2SEL || BIT7;// WFP 2.7 选项选择

UCA0CTL1 |= UCSWRST;//**将状态机置于复位**
UCA0CTL0 || UCMST+UCSYNC+UCCKPL+UCMSB;// 3引脚,8位SPI主控制器
//时钟极性高,MSB
UCA0CTL1 |= UCSSEL_2;// SMCLK
UCA0BR0 = 0x02;///2
UCA0BR1 = 0;//
UCA0MCTL = 0;//无调制
UCA0CTL1 &=~UCSWRST;//**初始化USCI状态机**
UCA0IE |= UCRXIE;//启用USI_A0 RX中断

P4OUT &=~0x02;//现已初始化SPI信号,
P4OUT |= 0x02;//重置从属设备

对于(i=50;i>0;i--);//等待从属设备初始化

MST_Data = 0x00;// 第一个字节
MST_Data2 = 0xA6;//第二字节
SLV_Data = 0x00;//

同时(!(UCA0IFG&UCTXIFG);// USI_A0 TX缓冲器就绪?
UCA0TXBUF = MST_Data;//传输第一个字符

__bis_sr_register(LPM0_bits + GIE);// CPU关闭,启用中断
}

#if defined(__TI_Compiler_version__)|| defined(__IAR_SYSTEMS _ICC__)
#pragma vector=USI_A0_vector
__interrupt void USI_A0_ISR(void)
#Elif已定义(__GMNU__)
void __attribute__((interrupt (USI_A0_vector))) USI_A0_ISR (void)
#否则
错误编译器不受支持!
#endif

易失性无符号int I;

Switch(__偶 数_in_range(UCA0IV,4))

情况0:中断;//矢量0 -无中断
案例2://矢量2 - RXIFG
同时(!(UCA0IFG&UCTXIFG);// USI_A0 TX缓冲器就绪?
SLV_Data=UCA0RXBUF;
IF (UCA0RXBUF==SLV_Data)//测试接收的字符是否正确
P1OUT |= 0x01;//如果正确,则指示灯亮起
否则
P1OUT &=~0x01;//如果不正确,请清除LED

// MST_Data++;//增量数据
// SLV_Data++;
UCA0TXBUF = MST_Data;//传输第一个字节
同时(!(UCA0IFG&UCTXIFG));
UCA0TXBUF = MST_Data2;//传输第二个字节

while ((UCA0STAT&BIT0));//检查传输
对于(i=20;I>0; I--);//将两次传输之间的时间添加到
//确保从属设备可以处理信息

中断;
案例4:中断;//矢量4 - TXIFG
默认值:中断;
}
}

我是MSP编程新手,提前感谢您