
这几天在做一块新的PCR (荧光免疫监测法)主板,用到2个CAN,USB,PWM,UART,以及SPI,IIC,其中SPI总线是接MAX31856,做K型温度读取,头几天遇到了问题,到周五完全解决,我把整个过程记录一下。以免忘记8 a8 Z! I& {4 S. \4 a& x6 B3 m# N 1. 写SPI驱动,参考了我们以前的SPI驱动,不过是基于STM32 STDLIB的,现在改为HAL LIB 有一点改变,不过还好,一天改好,: @3 B$ S/ ? S 2. 第二天测试,发现读出来的温度,常温下时96度,并且手摸后,温度居然下降,奇怪,既然这样,我就要好好看看程序了,先把CR0,CR1读出来,然后通过串口打印出来。发现大部分时候都是正确的,偶尔关机,再开机,这个值就不对了,而且4个都是这样 ,这就让我为难,不可能都坏了吧,那就用逻辑分析仪看看吧,发现SPI波形很好啊,郁闷啊,说明MCU的SPI是好的啊,+ d. n+ w5 {5 J4 V 7 V; k0 { V$ O 3. 和公司的硬件工程师商量,请教他有没有啥好的办法。他一会让我测电压,和通断,都测试,OK,& R6 ~0 @2 p5 ]: k 4. 再看看程序,和以前STM32F103的读法设置一样啊,只不过以前是16位,现在改为了8位,难道这个有问题,我改为16位再试试,还是一样的情况 5. 这时候,硬件工程师给我建议,看看ready信号,用示波器看正常啊,都有,这时候时间已经过了4天,天啦,这个问题已经拖了4天,太长了,2 o; g& P1 n2 i: g* a7 C3 n 6. 换max31856试试,还是一样,找一个小板子,上面有max31856.用杜邦线接到开发板上试试,发现温度读取正常,说明程序OK,把这个情况和硬件工程师说了一下,他觉得非常奇怪,让我把板子给他, 8 @2 W. m3 |$ x6 J8 |- }2 ~ 7. 我改为测试读CR0,CR1,他用示波器测SPI总线数据,发现写数据MOSI正常,CS,CLK都正常,MISO也正常,但为啥ready有时候正常,有时候不正常,没有办法,有换一个max31856,还是一样,这时候不敢再怀疑max31856,明明每个部分都是好的,软件,mcu,max31856,电路板都是好的,但为啥读出来的温度就是这么高呢,2 N! l1 S* ^( ^/ |' d* U$ _ : N4 P0 G& l& h" z: t- M 8.没有办法,他到实验室去了一趟,回来把板子给我,说,再测试一下吧,不行,就再焊一块,我没有其他办法,只好再测试一次,这次OK,22.05度,好了,断电上电,测试OK,再断电上电,OK,完全好了,0 K3 {: n8 X# r8 w 9。我问他,怎么回事,他说用酒精狠狠清洗了一下。跟我说,以后千万不要用焊油这类助焊了,然后拿给我看,这种白色铁盒助焊剂。上面有一行字,说这个会导电,使用后要用酒精清洗。 1 H n B8 D: A- w 10. 整整花了5天,才解决,教训深刻,所以记录下来,程序在公司电脑里,以及一些图片都在公司,下次补上吧0 L" Q6 M# T* w; B& r& } 5 h) f3 _9 G0 T 1 T# n' K8 [1 E. i! B1 k |
【STM32F769I-DISC1】开发板刷入Micropython并完成点灯、读取内部温度测试
【STM32F769I-DISC1】测评01:创建STM32cube IDE 工程,点个灯
【STM32F769】创建deepseek本地服务,并实现http请求
汇编浮点库qfplib移植STM32F769I-DISCO开发板与硬件浮点运算性能测试对比
coremark移植到STM32F769I-DISCO开发板的两种方法
【GUI板免费申请活动】【圣诞GUI】使用F746-DISO基于TouchGFX的圣诞树
刘氓兔的杂谈【001】-片上USB 高速PHY
【合集】STM32F7教程、资料大集合
基于STM32F746G-Discover的扩展电路板
F769 Discovery实现播放U盘音乐的播放器