完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
大家好!
我使用taobao上买的STM32F407VET,在STM32CubeMX进行配置。STM32CubeMX版本是4.15,HAL驱动是F4 1.12,附加FreeRTOS和LwIP组件。 采用微雪DP83848模块,工作正常。更换微雪LAN8720A模块。没有调试成功。 按照网上查找的说法,LAN8720A修改PHY地址、PHY_SR、PHY_SPEED_STATUS、PHY_DUPLEX_STATUS,即可正常工作。 #define PHY_SR ((uint16_t)31U) /*!< PHY status register Offset */ #define PHY_SPEED_STATUS ((uint16_t)0x0004U) /*!< PHY Speed mask */ #define PHY_DUPLEX_STATUS ((uint16_t)0x0010U) /*!< PHY Duplex mask */ 不能工作。 查看LAN8720A芯片手册,微雪LAN8720A模块对比原子开发板的原理图,有一些区别: 1。PHY地址是1而不是0。 2。LED1(绿色)电路禁能了内部1.2V稳压器。这个没有想明白为什么。 3。采用OSCIN模式,模块提供有50M有源晶振。 另外,检查发现购买的模块MCIO上拉电阻和REST上拉电阻阻值交换。手册上推荐的MCIO上拉电阻是152,错用复位的472。怀疑是悍错了。 改造:1。将LED1电路A接VCC处划断,原331电阻旋转90度改到A,K段就近连到地。符合手册上推荐的使能1.2V稳压器。 2。交换MCIO上拉电阻和REST上拉电阻。 3。检查发现中断引脚330电阻没有焊接,无需断开。 继续实验,读PHY MII寄存器正确。出现的问题是,不能PING通。芯片刚启动时会出现两个超时,然后是无法到达。似乎没有发生输入接收中断。 跟踪后发现,初始化正常通过,没有出现错误。 PS:这里要吐嘈一下,HAL初始化函数中的问题:如果PHY地址设置错误,读出寄存器的值全是1,即65535,掩码操作判断状态全部正常! 应该增加一个判断是否为0xFFFF的条件。 修改了ethernetif_set_link函数,调用1次 netif_set_link_up(link_arg->netif)。 似乎所有的TCP任务都处于阻塞状态。 不知道大家有没有成功调试通过的经验,希望介绍一下。 #define PHY_SR ((uint16_t)31U) /*!< PHY status register Offset */ #define PHY_MICR ((uint16_t)30U) /*!< MII Interrupt Control Register */ #define PHY_MISR ((uint16_t)29U) /*!< MII Interrupt Status and Misc. Control Register */ #define PHY_LINK_STATUS ((uint16_t)0x0004U) /*!< PHY Link mask */ #define PHY_SPEED_STATUS ((uint16_t)0x0004U) /*!< PHY Speed mask */ #define PHY_DUPLEX_STATUS ((uint16_t)0x0010U) /*!< PHY Duplex mask */ #define PHY_MICR_INT_EN ((uint16_t)0x0000U) /*!< PHY Enable interrupts */ #define PHY_MICR_INT_OE ((uint16_t)0x0010U) /*!< PHY Enable output interrupt events */ #define PHY_MISR_LINK_INT_EN ((uint16_t)0x0000U) /*!< Enable Interrupt on change of link status */ #define PHY_LINK_INTERRUPT ((uint16_t)0x0010U) /*!< PHY link status interrupt mask */ |
|
相关推荐
1个回答
|
|
|
首先,确保你已经正确连接了LAN8720A模块,并且配置了正确的引脚映射。
然后,按照以下步骤检查你的配置: 1. 打开STM32CubeMX并选择正确的芯片型号(STM32F407VET)。 2. 在"Pinout & Configuration"标签页中,选择正确的引脚映射来连接LAN8720A模块。 3. 在"Configuration"标签页中,选择正确的时钟和PHY接口。确保PHY设置为RMII接口,并选择正确的系统时钟。 4. 在"Peripherals"标签页中,打开以太网配置。选择正确的以太网PHY和RMII模式。 5. 点击"Project"菜单栏中的"Settings"选项,选择正确的时钟配置。 6. 生成代码并下载到你的STM32F407VET开发板上运行。 如果你仍然无法调试成功,可以尝试以下方法: 1. 检查PHY地址是否正确。LAN8720A模块的默认PHY地址为0。 2. 检查PHY_SR、PHY_SPEED_STATUS和PHY_DUPLEX_STATUS的配置是否正确。具体的配置值可以参考LAN8720A的数据手册。 3. 检查PHY与STM32F407VET之间的物理连接是否正确。确保连接线路没有问题。 4. 检查PHY电源是否正常工作。使用示波器或电压表来检查PHY芯片的供电情况。 希望以上信息对你有帮助,如果还有其他问题,请随时提问。 |
|
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
4178 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
3251 浏览 1 评论
2781 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
2210 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
15077 浏览 2 评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
3136浏览 4评论
stm32f4下spi+dma读取数据不对是什么原因导致的?
1926浏览 3评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
2094浏览 3评论
2004浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
2201浏览 3评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-8 15:23 , Processed in 0.901756 second(s), Total 76, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2564