用stm32作为主控去读ADS1198的通道数据值,刚开始去读写进寄存器的数据值,就发现读出来的数据值不对,用逻辑分析去看波形,可以看到芯片返回了写进去的数据值,但是在软件上接收到的数据值就不对,时钟极性和时钟相位都没有问题,而且在读数据的时候,发现芯片严重发烫,请帮忙解答一下
user151383853:
看到芯片返回了写进去的数据值,但是在软件上接收到的数据值就不对,时钟极性和时钟相位都没有问题? 怎么判断出来的,我值得再检查检查.
读数据的时候,发现芯片严重发烫,就算信号短路, 读数据的时间也很短.应该不会太导致发热.可能需要看别的方向
Li Chao Li:
回复 user151383853:
1,用逻辑分析仪可以看到写进去的和读出来的数据值一样
2,只要操作芯片就会发烫
Li Chao Li:
回复 Li Chao Li:
xyz549040622:
回复 Li Chao Li:
1.用逻辑分析仪可以看到写进去的和读出来的数据值一样,起码说明你读写的命令没错,数据解析出错了,应该是程序问题。
2.操作芯片发烫,找电源和PCB的问题,不应该发烫的。
Amy Luo:
您好,
建议您先解决芯片发烫的硬件问题,检查下接线是否错误、各部分供电是否符合芯片要求。
Li Chao Li:
回复 Amy Luo:
目前采用的是内部时钟,外置的3V电压,麻烦给看看硬件哪里的问题吗?目前并没有找到哪里出来问题,芯片正常供电不会发烫,但是只要操作芯片就开始发烫了,目前我是这样初始化的
HAL_GPIO_WritePin(CLKSEL_1198_GPIO_Port, CLKSEL_1198_Pin, GPIO_PIN_SET); // Use Internal Clock
HAL_Delay(1);
HAL_GPIO_WritePin(PWDN_1198_GPIO_Port, PWDN_1198_Pin, GPIO_PIN_SET); //active Power on = 1
HAL_Delay(1);
HAL_GPIO_WritePin(RESET_1198_GPIO_Port, RESET_1198_Pin, GPIO_PIN_RESET); //Reset = 0
HAL_Delay(10);
HAL_GPIO_WritePin(RESET_1198_GPIO_Port, RESET_1198_Pin, GPIO_PIN_SET); //Reset = 1
HAL_Delay(1000);
ads1198_sendcmd(SDATAC_1198); //stop command
HAL_Delay(1);
ads1198_write_registger(CONFIG1_1198,0x45); //250sps
HAL_Delay(1);
ads1198_write_registger(CONFIG2_1198,0x34);
HAL_Delay(1);
ads1198_write_registger(LOFF_1198,0x33); // (7.5%/92.5%)+Pull-up/pull-down mode+DC lead-off detection turned on
HAL_Delay(1);
ads1198_write_registger(CONFIG3_1198,0x4e); //external Vref
HAL_Delay(1);
ads1198_write_registger(CH1SET_1198,0x10); //gain = 1
…配置其他通道
HAL_Delay(1);
//start conversion
HAL_GPIO_WritePin(START_1198_GPIO_Port, START_1198_Pin, GPIO_PIN_SET); //start = 1
HAL_Delay(1);
ads1198_sendcmd(RDATAC_1198); //read data continuely
HAL_Delay(1);
///读通道数据值。。。
Li Chao Li:
回复 Li Chao Li:
已解决,谢谢你们的帮助
Amy Luo:
回复 Li Chao Li:
20脚是AVSS,上图好像是连接到+3.3VP上了,确认下PCB上是不是也是这样连接的。
xyz549040622:
回复 Li Chao Li:
好奇是什么问题导致的呢?