STM32F407跑FreeRTOS,SPI读AD7606偶发数据错位,快被搞疯了
板子是STM32F407+FreeRTOS,SPI2接AD7606,中断方式读转换结果。批量跑了两周,大概每千次里有那么一两次数据错位,高8位跑到低8位位置上去了,像是位偏移。产线那边已经拿这个卡我们了,说再不稳定就换方案。
已经试过的:SPI时钟从10.5M降到5M,好一点但还是偶发;DMA改成中断收发;临界区也加了。逻辑分析仪抓过波形,出问题时CS和SCLK看着都正常,就是数据移位了。怀疑是AD7606的BUSY信号和SPI读取之间有竞态,但还没抓到实锤。
现在怀疑两个方向:一是中断优先级配置,SPI中断和BUSY外部中断会不会抢出问题;二是SPI的CPHA/CPOL在高速下采样边界不稳。但说实话都是猜。
坛子里有没有兄弟用过AD7606+RTOS的?这种偶发错位一般往哪查?中断里直接读DR还是走DMA更稳?在线等,挺急的。
回答(0)
还没有回答,来抢沙发!