这几天在做一块新的PCR (荧光免疫监测法)主板,用到2个CAN,USB,PWM,UART,以及SPI,IIC,其中SPI总线是接MAX31856,做K型温度读取,头几天遇到了问题,到周五完全解决,我把整个过程记录一下。以免忘记
1. 写SPI驱动,参考了我们以前的SPI驱动,不过是基于STM32 STDLIB的,现在改为HAL LIB 有一点改变,不过还好,一天改好,
2. 第二天测试,发现读出来的温度,常温下时96度,并且手摸后,温度居然下降,奇怪,既然这样,我就要好好看看程序了,先把CR0,CR1读出来,然后通过串口打印出来。发现大部分时候都是正确的,偶尔关机,再开机,这个值就不对了,而且4个都是这样
,这就让我为难,不可能都坏了吧,那就用逻辑分析仪看看吧,发现SPI波形很好啊,郁闷啊,说明MCU的SPI是好的啊,
3. 和公司的硬件工程师商量,请教他有没有啥好的办法。他一会让我测电压,和通断,都测试,OK,
4. 再看看程序,和以前STM32F103的读法设置一样啊,只不过以前是16位,现在改为了8位,难道这个有问题,我改为16位再试试,还是一样的情况
5. 这时候,硬件工程师给我建议,看看ready信号,用示波器看正常啊,都有,这时候时间已经过了4天,天啦,这个问题已经拖了4天,太长了,
6. 换max31856试试,还是一样,找一个小板子,上面有max31856.用杜邦线接到开发板上试试,发现温度读取正常,说明程序OK,把这个情况和硬件工程师说了一下,他觉得非常奇怪,让我把板子给他,
7. 我改为测试读CR0,CR1,他用示波器测SPI总线数据,发现写数据MOSI正常,CS,CLK都正常,MISO也正常,但为啥ready有时候正常,有时候不正常,没有办法,有换一个max31856,还是一样,这时候不敢再怀疑max31856,明明每个部分都是好的,软件,mcu,max31856,电路板都是好的,但为啥读出来的温度就是这么高呢,
8.没有办法,他到实验室去了一趟,回来把板子给我,说,再测试一下吧,不行,就再焊一块,我没有其他办法,只好再测试一次,这次OK,22.05度,好了,断电上电,测试OK,再断电上电,OK,完全好了,
9。我问他,怎么回事,他说用酒精狠狠清洗了一下。跟我说,以后千万不要用焊油这类助焊了,然后拿给我看,这种白色铁盒助焊剂。上面有一行字,说这个会导电,使用后要用酒精清洗。
10. 整整花了5天,才解决,教训深刻,所以记录下来,程序在公司电脑里,以及一些图片都在公司,下次补上吧
,