STM32的SPI接口问题:没有时钟信号
时间:12-13
整理:3721RD
点击:
如题,使用STM32F103芯片做SPI Master,按照参考例程配置了RCC/GPIO/SPI,SPI接口读取上来的值全部是0xFF。示波器测量:CS信号正常、SCK没有信号,期间是一直有数据读写的。按照网上的说法,这个SCK时钟是只要往DR寄存器写数据就会自动由Master生成的。
假设SPI总线上不接Slave芯片(即芯片不焊接),此时往DR寄存器写数据理论上SCK也会有时钟信号出来吧?
硬件原理图上,CS/SCK/MISO/MOSI都没有接上拉电阻。
假设SPI总线上不接Slave芯片(即芯片不焊接),此时往DR寄存器写数据理论上SCK也会有时钟信号出来吧?
硬件原理图上,CS/SCK/MISO/MOSI都没有接上拉电阻。
程序贴出来?
检查一下有没有虚焊?
找块能用的开发板,把自己的程序嵌进去便知是软件问题还是硬件问题。
晚上重新测量了,可能之前发的数据太少、示波器没有抓到信号。现在循环发送,可以见到SCK/CS/MOSI都有波形,但MISO一直是高电平,导致读出来的数据是全0xFF。
没有焊接SPI Slave芯片、焊接有Slave芯片的表现都是MISO一直为高电平,读出来的全是0xFF。Slave芯片接的晶体已经能够起振、频率正确,应该不会坏了吧。
slave是啥ic?
mosi脚设成输入了么?
问题原因找到,有一个电源供电脚弄错了,实际上芯片没有完全工作(部分电路,如震荡电路已经工作了),所以返回0xFF。期间怀疑芯片虚焊,还从别的商家买芯片,结果还是不行,差点怀疑人生!
大家再碰到只有MISO没有信号情况,一定要排除下硬件连接是否正确。
低级失误
patpat
都是常事儿
常见问题。
我还碰见过管脚虚焊,只要有一点儿压力,比如表笔或者示波器探头,
就能正常工作。
所以现在我检查虚焊都是用注射器针尖横向推一下,能推动的肯定就是焊
虚了。
这种方法行之有效 但是总觉得太低级了
有没有更正规的检测手段
有啊,内部用JTAG,外部用X射线衍射成像……
这都是正规手段。 :)
拍x光片太heavy了..
量产的话倒是有简单的方法……不贴QC签,直接报废。 :)