主题中讨论的其他器件: MSP430FR6043
你好
从 ADC μ`s 寄存器中恢复数据时遇到问题。 代码可 通过 MCU 的 UART 向 ADS122U04发送命令。 但是、当我使用数据表中的命令来设置寄存器或读取它们的值时、不会发生任何情况。 代码放置在较低的位置。
#include
#include
#include
#include
//------------ 全局变量-------------------------------------------------------
unsigned int rcv;
//------------ 初始化---
void CS_init (void);
void UART_init (void);
void UART_transmit (void);
//-------------- 主--------------------------------------
int main (空)
{
WDTCTL = WDTPW | WDTHOLD; //停止看门狗计时器
//禁用 GPIO 上电默认高阻抗模式以激活
//先前配置的端口设置
PM5CTL0 &=~LOCKLPM5;
FRCTL0 = FRCTLPW | NWAITS_1;
CS_init ();
UART_INIT();
UART_Transmit ();
}
//------------ 函数-------------------------------------------------------
void CS_init (void)
{
CSCTL0_H = CSKKEY_H;
CSCTL1 = DCOFSEL_3 | DCORSEL;
CSCTL2 = SELA_LFXTCLK | SELESS__DCOCLK | SELM_DCOCLK;
CSCTL3 = DIVA__1 | DIVS__1 | DIVM__1;
CSCTL0_H = 0;
}
void UART_init (void)
{
P4SEL0 |= BIT1 | BIT2;
P4SEL1 |= BIT1 | BIT2;//它在 RX/TX 模式下切换引脚 P4.1和 P4.2
UCA3CTLW0 = UCSWRST; //将 eUSCI 置于复位状态
UCA3CTLW0 |= UCSSEL_SMCLK; // CLK = SMCLK
UCA3BRW = 54; // 8000000/16/9600
UCA3MCTLW |= UCOS16 | UCBRF_1 | 0x4900;
UCA3CTLW0 &=~UCSWRST; //初始化 eUSCI
}
void UART_transmit (void)
{
UCA3TXBUF = 0x55;
while (!(UCA3IFG & UCTXIFG));
UCA3TXBUF = 0x06;
_DELAY_CYCLES (80);
// }
while (!(UCA3IFG & UCTXIFG));
//设置寄存器2
UCA3TXBUF = 0x55;
while (!(UCA3IFG & UCTXIFG));
UCA3TXBUF = 0x44;
while (!(UCA3IFG & UCTXIFG));
UCA3TXBUF = 0x40;
//接收寄存器2
while (!(UCA3IFG & UCTXIFG));
UCA3TXBUF = 0x55;
while (!(UCA3IFG & UCTXIFG));
UCA3TXBUF = 0x24;
while (!(UCA3IFG & UCTXIFG));
while (!(UCA3IFG & UCRXIFG));
RCV = UCA3RXBUF;
}
