OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6179|回复: 14

STM32F107+LAN8720调试问题

[复制链接]

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
发表于 2017-3-3 08:33:08 | 显示全部楼层 |阅读模式
5金钱
    我使用的是STM32F107RC+LAN8720,具体电路参考的原子STM32F407+LAN8720A,电路如下:
其中的ETH_RESET我直接接的地。

主要代码如下,  PHY_address也设置了为1.现在插上网线灯也不亮,读取网卡寄存器都是FFFF。现在也不知道是硬件还是软件问题。
[mw_shl_code=c,true]#include "stm32f10x_conf.h"
#include "EthInit.h"
#include "stm32_eth.h"
#define PHY_ADDRESS     1
void ETHDriverInit(void)
{
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_ETH_MAC | RCC_AHBPeriph_ETH_MAC_Tx |
                        RCC_AHBPeriph_ETH_MAC_Rx, ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOC |
                        RCC_APB2Periph_GPIOD | RCC_APB2Periph_GPIOE | RCC_APB2Periph_AFIO |
                            RCC_APB2Periph_ADC1, ENABLE);
        NVIC_Configuration();
        GPIO_Configuration();
        GPIO_SetBits(GPIOE,GPIO_Pin_6);

        GPIO_ResetBits(GPIOE,GPIO_Pin_6);
               
        GPIO_SetBits(GPIOE,GPIO_Pin_6);        
        Ethernet_Configuration();

}
void NVIC_Configuration(void)
{
  NVIC_InitTypeDef   NVIC_InitStructure;

  /* Set the Vector Table base location at 0x08000000 */
  NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);

  /* 2 bit for pre-emption priority, 2 bits for subpriority */
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  
  /* Enable the Ethernet global Interrupt */
  NVIC_InitStructure.NVIC_IRQChannel = ETH_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);   
  
}
void GPIO_Configuration(void)
{
  GPIO_InitTypeDef GPIO_InitStructure;


  /* Configure PA2 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Configure PC1, PC2 and PC3 as alternate function push-pull */
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;  //PC2óÃ2»μ½£¬Îaê2Ã′é¾3y¾í2»ÄüÔËDDáË£¿
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOC, &GPIO_InitStructure);

  /* Configure PB5, PB8, PB11, PB12 and PB13 as alternate function push-pull */  //PB8óÃ2»μ½£¬Îaê2Ã′é¾3y¾í2»ÄüÔËDDáË£¿
  GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_11 | GPIO_Pin_12 | GPIO_Pin_13;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOB, &GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOA, &GPIO_InitStructure);

   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4|GPIO_Pin_5;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  GPIO_Init(GPIOC, &GPIO_InitStructure);





  
}
void Ethernet_Configuration(void)
{
  ETH_InitTypeDef ETH_InitStructure;

  /* MII/RMII Media interface selection ------------------------------------------*/




  GPIO_ETH_MediaInterfaceConfig(GPIO_ETH_MediaInterface_RMII);

  ETH_DeInit();

  /* Software reset */
  ETH_SoftwareReset();

  /* Wait for software reset */
  while (ETH_GetSoftwareResetStatus() == SET);

  /* ETHERNET Configuration ------------------------------------------------------*/
  /* Call ETH_StructInit if you don't like to configure all ETH_InitStructure parameter */
  ETH_StructInit(D_InitStructure);

  /* Fill ETH_InitStructure parametrs */
  /*------------------------   MAC   -----------------------------------*/
  ETH_InitStructure.ETH_AutoNegotiation = ETH_AutoNegotiation_Enable  ;        //êÇ·ñê1óÃíaÖ&#195HY
  ETH_InitStructure.ETH_LoopbackMode = ETH_LoopbackMode_Disable;
  ETH_InitStructure.ETH_RetryTransmission = ETH_RetryTransmission_Disable;
  ETH_InitStructure.ETH_AutomaticPadCRCStrip = ETH_AutomaticPadCRCStrip_Disable;
  ETH_InitStructure.ETH_ReceiveAll = ETH_ReceiveAll_Disable;
  ETH_InitStructure.ETH_BroadcastFramesReception = ETH_BroadcastFramesReception_Enable;
  ETH_InitStructure.ETH_PromiscuousMode = ETH_PromiscuousMode_Disable;
  ETH_InitStructure.ETH_MulticastFramesFilter = ETH_MulticastFramesFilter_Perfect;
  ETH_InitStructure.ETH_UnicastFramesFilter = ETH_UnicastFramesFilter_Perfect;



  /* Configure Ethernet */
  ETH_Init(D_InitStructure, PHY_ADDRESS);
  

  /* Enable the Ethernet Rx Interrupt */
  ETH_DMAITConfig(ETH_DMA_IT_NIS | ETH_DMA_IT_R, ENABLE);

}



[/mw_shl_code]


原理图

原理图

test3.5.zip

4.52 MB, 下载次数: 320

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
 楼主| 发表于 2017-3-3 08:34:09 | 显示全部楼层
哪位大神帮忙看下,我是按照STM32F4的改过来的
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
 楼主| 发表于 2017-3-3 08:51:34 | 显示全部楼层
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12001
金钱
12001
注册时间
2013-3-8
在线时间
1279 小时
发表于 2017-3-3 09:34:04 | 显示全部楼层
芯片中间的地接了没?107与F4的驱动差别不大,好像只用修改DMA部分东西。
回复

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2017-3-3 09:42:36 | 显示全部楼层
检查REF_CLK有没有50M时钟信号出来,还有LAN8720的25M晶振有没有起震
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
 楼主| 发表于 2017-3-3 09:42:57 | 显示全部楼层
augustedward 发表于 2017-3-3 09:34
芯片中间的地接了没?107与F4的驱动差别不大,好像只用修改DMA部分东西。

接地了  特意用热风枪吹了
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
 楼主| 发表于 2017-3-3 09:44:35 | 显示全部楼层
augustedward 发表于 2017-3-3 09:34
芯片中间的地接了没?107与F4的驱动差别不大,好像只用修改DMA部分东西。

哥们  F4的网口用的是什么?   我这儿用的是HR901105C   网口会有影响吗
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
 楼主| 发表于 2017-3-3 09:46:24 | 显示全部楼层
zuozhongkai 发表于 2017-3-3 09:42
检查REF_CLK有没有50M时钟信号出来,还有LAN8720的25M晶振有没有起震

这两个信号都有的    也是奇怪了
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
 楼主| 发表于 2017-3-3 09:48:22 | 显示全部楼层
请问下MDC会有波形吗
回复

使用道具 举报

1

主题

10

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-3
在线时间
0 小时
 楼主| 发表于 2017-3-3 09:52:00 | 显示全部楼层
愁死我了   弄了三四天了
回复

使用道具 举报

9

主题

1385

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
12001
金钱
12001
注册时间
2013-3-8
在线时间
1279 小时
发表于 2017-3-3 09:52:25 | 显示全部楼层
dsf1412 发表于 2017-3-3 09:44
哥们  F4的网口用的是什么?   我这儿用的是HR901105C   网口会有影响吗

hr911105a是自带网络变压器的。你这个就不知道了。
回复

使用道具 举报

mycherrys9 该用户已被删除
发表于 2017-3-21 10:21:59 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

10

主题

38

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
369
金钱
369
注册时间
2016-3-26
在线时间
146 小时
发表于 2017-5-18 08:52:34 | 显示全部楼层
楼主问题解决了没有,我也遇到了一样的问题
国民技术MCU代理 联系:961006524@qq.com
回复

使用道具 举报

1

主题

23

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
285
金钱
285
注册时间
2018-3-18
在线时间
38 小时
发表于 2019-8-7 12:18:05 | 显示全部楼层
楼主问题解决了吗
回复

使用道具 举报

0

主题

6

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
221
金钱
221
注册时间
2017-8-19
在线时间
84 小时
发表于 2019-8-7 15:57:27 | 显示全部楼层
本帖最后由 Alexyul 于 2019-8-20 10:36 编辑

                                                                           
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-2 20:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表