Part Number:LMP90098Other Parts Discussed in Thread: ADS124S08
程序如下。设置寄存器ADC_AUXCN时,可正常设置,并且可以读取到写入的值是0x2A,但是用万用表测量2K电阻两端,无电压,说明无电流输出,经测量,IB2管脚对地电阻是2.1K。电路如下图所示。
不知道是不是还有个什么启动设置?
/*ADC_AUXCN:ADC Auxiliary Control(Address 0x12)
使用内部时钟,1000μA电流
要使用内部时钟,请将CLK_EXT_DET设置为1,CLK_SEL设置为0
*/
for(i=0; i<10; i++) //最多设置10次
{
HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_RESET);
command[0] = 0x10; // 0x10:write address,0x90:Read Address
command[1] = 0x01; // Upper Address Byte:0x1 command[2] = 0x02;
/* bit 7=0: Reserved;
bit6 RESET_SYSCAL=0:Preserved even when "REG_AND_RST"=0xC3;
bit5 CLK_EXT_DET=1: default, external clock is operational;
bit4 CLK_SEL=0: default, select internal clock
bit[3:0] RTD_CUR_SEL = 0xA: 1000μA
*/
command[3] = 0x2A;
HAL_SPI_Transmit(&hspi1,&command[0],4,100); HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_SET);
j=100;
while(j–);
//读取设置的值,看下是否符合预期,测试是通过的
HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_RESET);
command[0] = 0x10; // 0x10:write address,0x90:Read Address
command[1] = 0x01; // Upper Address Byte:0x1
command[2] = 0x82;
HAL_SPI_Transmit(&hspi1,&command[0],3,100); HAL_SPI_Receive(&hspi1,&calibration[0],1,100);
HAL_GPIO_WritePin(SPI1_NSS_GPIO_Port, SPI1_NSS_Pin, GPIO_PIN_SET);
if((calibration[0] & 0x7F) == 0x2A) {
break;
i = 10; //经添加break语句测试,第一个循环即可校准完成
}
else if (i == 9)
{
//报错,不能初始化AUXCN,地址0x12
}
}
Amy Luo:
您好,
感谢您对TI产品的关注!
您的问题周一我将给您答复
,
yang wenhua:
好的 感谢,我将我这边的初始化设置说一下,这些设置都是设置成功了的,因为我也读了一遍。
1. SPI_HANDSHAKECN,地址0x01,设置的是0x08;
2. SPI_DRDYBCN,地址0x11,设置的是0x87;
3. CH0_CONFIG,地址0x21,设置的是0x36;
4. BGCALCN Address,地址 0x10,设置的是0x03;
5. CH0_INPUTCN,地址0x20,设置的是0x48;
6. ADC_AUXCN,地址0x12,设置的是0x2A;
7. CH_SCAN,地址是0x1F,设置的是0x00;
其它内容我未设置。
我微信15919927219,如果方便的话,可以加微信沟通,谢谢!
,
yang wenhua:
之前初始化CH_SCAN,未查询CH_STS寄存器的状态,现在读取了一下,CH_STS反馈是0x02,即CH_SCAN register is not ready to be programmed,那么很可能是这个问题。
Channel Scan not ready的话,那什么时候才会ready呢?
,
yang wenhua:
在写入CH_SCAN之前,我未读取CH_STS,现在读取了一下,发现反馈是0x02,即CH_SCAN register is not ready to be programmed,那问题是,这个CH_SCAN什么时候才能ready呢?
,
Amy Luo:
关于寄存器CH_STS中 CH_SCAN_NRDY bit 的值,数据表9.4.2 章节有说明,如下截图,即 CH_SCAN 寄存器是双缓冲的。 即,用户输入存储在slave buffer 中,直到下一次转换开始,在此期间,用户输入被传输到master buffer.。 写入slave buffer 后,后续更新将被忽略,直到传输到master buffer.。 因此,对 CH_SCAN 寄存器写入之前,需判断 CH_SCAN_NRDY 位,为0才可以写入。
CH_SCAN寄存器的写入应该不会影响 IB2电流的输出,我再具体看下IB2这块的原因
,
Amy Luo:
LMP90098的供电电压是多少?我担心会超出VA-0.8V这个范围:
除了VA电压 和寄存器ADC_AUXCN配置,我认为应该没有什么可以影响IB2的输出了;
您测试了几块电路板是这种情况?您可以多测试几块电路板吗,以排除焊接问题
,
yang wenhua:
换了一块板子,可以了,有输出了。我看了下焊接,应该没啥问题,不知道是不是配置中,是否把这个板子烧掉了。
谢谢您的答复。四线的RTD,有没有标准例程?
,
Amy Luo:
很高兴有输出了;
下面链接是一个四线RTD低侧参考的应用示例,是使用的ADS124S08,但设计思路是一样的:
https://www.ti.com/lit/an/sbaa336a/sbaa336a.pdf
另外,A Basic Guide to RTD Measurements 这个文档希望对您也有帮助:
https://www.ti.com/lit/an/sbaa275/sbaa275.pdf
,
yang wenhua:
谢谢,暂时没有新问题,多谢。
,
Amy Luo:
好的,别客气