您好!
我目前正在研究与 MSP432P4111连接的 ADS125H02。 在这里、我将使用单端运算。
AIN0 - AINCOM、增益为0.5 -即0v 至+- 5V
我的 AIN0模拟输入为1V 和-0.5。
到目前为止、我已完全获得 SPI 响应、但问题出在 RDATA 中
我在读取输出时对此有一些问题
在程序中-必须在 RDATA 之前和 START 命令之后为 OFCAL 和 FULCAL 寄存器提供值。
在计算中-例如、在我获得我的24位转换后:
AIN0 - 0.3V
MSB - 31.
中- 79
LSB - AF
然后、我将该十六进制值转换为十进制、并应用于公式-转换数据* VREF/(2^24)。
如果该公式不是要使用的公式、则该公式是否正确。
我的程序是否正确?
或者、您是否将分步程序发送给单端操作。
以前我提出了一些问题、但没有改变。
因此、请帮我解决这个问题。
int main(void)
{
volatile uint32_t i;
WDT_A->CTL = WDT_A_CTL_PW | // Stop watchdog timer
WDT_A_CTL_HOLD;
P2->DIR |= BIT0; // Set P2.0 CS1
P1->DIR |= BIT0; //CS2
P2->SEL0 = BIT1 | BIT2 | BIT3; // Set P2.1, P2.2, and P2.3 as
// SPI pins functionality
EUSCI_A1->CTLW0 |= EUSCI_A_CTLW0_SWRST; // Put eUSCI state machine in reset
EUSCI_A1->CTLW0 = EUSCI_A_CTLW0_SWRST | // Remain eUSCI state machine in reset
EUSCI_A_CTLW0_MST | // Set as SPI master
EUSCI_A_CTLW0_SYNC | // Set as synchronous mode
EUSCI_A_CTLW0_MSB; // Set clock polarity high
EUSCI_A1->CTLW0 &= ~EUSCI_A_CTLW0_CKPL;
EUSCI_A1->CTLW0 &= ~EUSCI_A_CTLW0_CKPH;
EUSCI_A1->CTLW0 |= EUSCI_A_CTLW0_SSEL__SMCLK; // ACLK
EUSCI_A1->BRW = 0x0001; // /2,fBitClock = fBRCLK/(UCBRx+1).
EUSCI_A1->CTLW0 &= ~EUSCI_A_CTLW0_SWRST;// Initialize USCI state machine
// Enable global interrupt
__enable_irq();
/***** DEV_ID***/
P2->OUT &= ~BIT0;
write(0x20);
write(0x00);
write(0x79);
write(0x00);
write(0x00);
write(0x00);
P2->OUT |= BIT0;
/****MODE-0***/
P2->OUT &= ~BIT0; // CS low
write(0x42);
write(0x24);
write(0x5A);
write(0x00);
P2->OUT |= BIT0;
//// /***** MODE-1 ***/
P2->OUT &= ~BIT0; // CS low
write(0x43);
write(0x01);
write(0xB4);
write(0x00);
P2->OUT |= BIT0;
/***** REF ****/
P2->OUT &= ~BIT0; // CS low
write(0x46);
write(0x10);
write(0x82);
write(0x00);
P2->OUT |= BIT0;
////
// /***** MODE - 4*********/
P1->OUT &= ~BIT0; // CS low
write(0x50);
write(0x33);
write(0x42);
write(0x00);
P1->OUT |= BIT0;
while(1)
{
/**** start ****/
P2->OUT &= ~BIT0;
write(0x08);
write(0x00);
write(0x7F);
write(0x00);
P2->OUT |= BIT0;
/********* RDATA *******/
P2->OUT &= ~BIT0; // CS low
write(0x12);
write(0x00);
write(0xAA);
write(0x00);
write(0x00);
write(0x00);
write(0x00);
write(0x00);
write(0x00);
P2->OUT |= BIT0;
/**** STOP******/
P2->OUT &= ~BIT0;
write(0x0A);
write(0x00);
write(0x55);
write(0x00);
P2->OUT |= BIT0;
}
}
