您好,
我使用的MCU通过SPI与两个ADS8332's (菊花链)通信,其中MCU是主ADC,两个ADC都是从属ADC。 以下功能显示了CFR寄存器的配置。 两个输入参数(ADS833x_CFR_Reg1和 ADS833x_CFR_Reg2)对应于我要在寄存器中写入的位:
void ADS833x_init(uint16_t ADS833x_CFR_Reg1, uint16_t ADS833x_CFR_Reg2) //初始化ADS833x
{
UINT16_t注册_WORD1;
UINT16_t注册_文字2;
UINT16_t ADS833x_Write_COM = 0xE000;
UINT16_t ADS833x_READ_COM = 0xC000;
uINT16_t ADS833x_buf[BUF_SIZE];
对于(int i =0;I<BUF_SIZE;I++){
ADS833x_buf[i]=0;
}
REG_WORD1 = ADS833x_Write_COM + ADS833x_CFR_Reg1;
REG_Word2 = ADS833x_Write_COM + ADS833x_CFR_Reg2;
//清除CS1
GPIO _PinOutClear (gpioPortB,6);
USART_TxDouble (USART2,ReG_WORD1);
//等待传输结束
当(!(USART2->STATUS & USART_STATUSTXC));
GPIO _PinOutSet (gpioPortB,6);
while (GPIO_PinOutGet (gpioPortB,6)!=1);
// CS2的过程相同
GPIO _PinOutClear (gpioPortB,0);
USART_TxDouble (USART2,ReG_Word2);
当(!(USART2->STATUS & USART_STATUSTXC));
GPIO _PinOutSet (gpioPortB,0);
while (GPIO_PinOutGet(gpioPortB,0)!=1);
//读出CFR寄存器
GPIO _PinOutClear (gpioPortB,6),GPIO _PinOutClear (gpioPortB,0);
USART_TxDouble (USART2,ADS833x_READ_COM);
当(!(USART2->STATUS & USART_STATUSTXC));
ADS833x_buf[0]=(uint16_t)USART2->RXDOUBLE;
USART_TxDouble (USART2,ADS833x_READ_COM);
当(!(USART2->STATUS & USART_STATUSTXC));
ADS833x_buf[1]=(uint16_t)USART2->RXDOUBLE;
GPIO_PinOutSet (gpioPortB,0),GPIO _PinOutSet (gpioPortB,6);
ADS833x_buf[2]= ADS833x_buf[0]和0x0FFF;
ADS833x_buf[3]= ADS833x_buf[1]和0x0FFF;
如果((ADS833x_CFR_Reg1!= ADS833x_buf[2])||(ADS833x_CF_Reg2!= ADS833x_buf[3])){
错误();
}
}
目前,两个CFR寄存器的读数值都不符合 ADS833x_CFR_Reg1和ADS833x_CFR_Reg2,这就是我的程序在错误循环中结束的原因。 因此,我认为在CFR寄存器中的书写不成功。 我的问题是否有解决方案? 谢谢!!
此致,
Sebastian


