在线程中讨论的其他部件: PGA116
如何从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编程新手,提前感谢您