问题1:STM32G0 系列 SPI单线与AD7694通信采集数据,使用stm32cube 生成的HAL库编写
刚开始HAL_SPI_Receive,执行到这句时,一直卡在这里不在往下执行。
最终发现,我使用正点原子的 sysytick 延时函数delay_us, 与这里用于计算超时的sysytick有冲突如,具体冲突原因,未知
delay_us函数,正点原子的
HAL_SPI_Receive函数
最后去掉delay_us函数,延时改为使用timer 去做,发现HAL_SPI_Receive能够正常返回
但是函数能返回,却一直报超时,于是使用逻辑分析仪采集SPI的数据,发现CLK仅有一个脉冲
检查SPI代码,发现SPI使用的是2分频,怀疑是否是波特率过快,导致CLK有问题
于是修改为更高的分频,SPI_BAUDRATEPRESCALER_256
此后数据获取正常
问题2:调试AD5291,设置其电位器值,使用SPI发送数据,并用逻辑分析仪采集,开始觉得波形没有问题,但后期排查发现,SPI代码中将 CPOL 和CPHA均设置为0![](https://img-blog.csdnimg.cn/direct/c3a059a6e14744399297a5fe8543675d.png)
AD5291时序要求为CPOL = 0, CPHA = 1的模式,修改如下
再次设置验证,能够成功设置电位器值。