本帖最后由 wasdzxc123 于 2025-7-15 16:20 编辑
各位大佬, 我这边使用雅特力的单片机AT32F415与LAN9252通过SPI通讯,
do
{
delay_ms(5);
temp = SPIReadDWord_test(0x64);
readID_temp1 = temp;
} while (temp!= 0x87654321);
我这边读LAN9252 0x64读不到东西, 从示波器上看单片机一直在发东西, 但是LAN9252始终没有回. LAN9252 的RST引脚一直是高电平. 一开始怀疑是初始化问题, 尝试过拉低复位, 复位后延时等待1s都不行. 也调整过单片机时钟速率, 拉低SPI时钟也没有用. VDDCR电源1.14, 65脚也正常接地, 时钟用的是有源时钟波形也稳定. 原理图下面附上, 不知道是哪里出了问题, 麻烦指导一下
2025.07.10 -- 14:15
发现芯片内部稳压器电源VDDCR去掉负载后输出高1.5低0.92的三角波, 确定65脚已经正常接地.
2025.07.10 -- 14:37
LAN9252 6号引脚VDDCR的输出多并了0.1uf和1uf的电容, 现在空载没有三角波了, 但是SPI通讯还是存在问题, 用示波器抓取发现MISO是有大约100mv极小的波形输出,这个应该就是LAN9252回应单片机MOSI的数据, 目前的问题是为什么这个引脚波形电压这么低.
2025.07.15 -- 08:20
问题解决, SPI可以正常通讯, 网口正常, twincat3可以正常识别设备.
问题:
1. EEPROM里面没烧录从机描述文件(.xml文件)的话 ESC是不会使能SPI功能, 只有烧录了使能SPI功能的.xml文件, 才能使lan9252和MCU通讯正常
2. 外部供电的电源存在响应慢, 上电过程存在坡度的问题. 我是用的是ITECH的IT6322给板子直接供的3.3v, 这个电源日期比较老(软件校准日期13年,出厂可能更早), 刚上电过程中存在前20ms电压上升快(上升到2v), 20ms之后呈现非常缓慢的上升过程(400ms从2v上升到3.3v), 这个过程种LAN9252的LDO因为这个坡度导致输出的1.2v呈现阶梯状的抖动, 从而使LAN9252关机或者死机, 内部的PHY不能正常工作, 电脑的网口不能识别设备, 也因此烧录不了EEPROM, 也就不能使能SPI. 更换为其他开关电源, 效果改善, 3.3v启动波形正常, 基本呈一条直线, 1.2v上电曲线正常, PHY也就能能正常工作了.
我原来板子上的34063方案的24转5v也存在同样问题, 而且因为铺地,布局导致EMC性能较差的问题导致具体现象比直流源直接给板子供电更严重.
|
 共1人点赞
|
@dffzh :15042103467, 感谢大佬
SPI信号线对应关系,我看了一下,确实没错。
搞定没?没搞定的话,把V信发我,我帮你看下。