OpenEdv-开源电子网

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

LWIP移植中MII接口是要用外部中断的吗?

[复制链接]

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
发表于 2016-6-23 11:10:18 | 显示全部楼层 |阅读模式
原子的例程是RMII接口用的是以太网中断,我看ST官方例程中用的外部中断,我使用的是MII接口,没弄成功,我想问一下这个接口和中断有没有必然的联系?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-23 11:11:40 | 显示全部楼层
还有,当PING板子的时候,这个PING命令要进入到以太网中断吗?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-6-23 12:55:18 | 显示全部楼层
可以不用中断,轮训的方法去处理接收过程。ping命令跟进中断没有任何关系,中断是接收以太网数据,然后将这个数据上交给LWIP,lwip协议会解析当前接收到的数据是个什么东西,有可能是个ping命令
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-23 20:08:37 | 显示全部楼层
zuozhongkai 发表于 2016-6-23 12:55
可以不用中断,轮训的方法去处理接收过程。ping命令跟进中断没有任何关系,中断是接收以太网数据,然后将这 ...

为什么LWIP的底层接口函数说是和网卡密切相关,但是我看函数的内容都没有用到网卡的寄存器,都是DMA的寄存器。密切相关从何而来呢?
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-23 21:03:17 | 显示全部楼层
zhoujianwen 发表于 2016-6-23 20:08
为什么LWIP的底层接口函数说是和网卡密切相关,但是我看函数的内容都没有用到网卡的寄存器,都是DMA的寄 ...

大神求教啊!!!
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-6-23 21:22:56 | 显示全部楼层
zhoujianwen 发表于 2016-6-23 20:08
为什么LWIP的底层接口函数说是和网卡密切相关,但是我看函数的内容都没有用到网卡的寄存器,都是DMA的寄 ...

怎么没有?初始化LAN8720的时候调用库函数里面就有初始化PHY芯片,里面就操作了网卡寄存器,但是读取网卡数据是不会直接从PHY芯片里面读的!因为PHY将数据发送给了STM32的MAC了!
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-24 08:31:45 | 显示全部楼层
zuozhongkai 发表于 2016-6-23 21:22
怎么没有?初始化LAN8720的时候调用库函数里面就有初始化PHY芯片,里面就操作了网卡寄存器,但是读取网卡 ...

我的意思是,编写那个底层接口文件,ethernetif.c文件里面的五个函数,其中三个是底层的,说是与网卡密切相关,我看这些函数并没有操作网卡寄存器而是操作DMA寄存器啊?
如果我换个网卡芯片,这些函数还适用吗?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-6-24 09:17:56 | 显示全部楼层
zhoujianwen 发表于 2016-6-24 08:31
我的意思是,编写那个底层接口文件,ethernetif.c文件里面的五个函数,其中三个是底层的,说是与网卡密切 ...

我说的就是这些函数,都说了网卡PHY芯片会将数据转给STM32的MAC层,然后这几个函数直接通过DMA读取MAC层的数据。如果换PHY芯片这几个函数要根据实际情况做简单的修改。
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-24 10:11:54 | 显示全部楼层
zuozhongkai 发表于 2016-6-24 09:17
我说的就是这些函数,都说了网卡PHY芯片会将数据转给STM32的MAC层,然后这几个函数直接通过DMA读取MAC层 ...

那修改的方法主要参考使用的芯片手册哪部分?比如LAN8720芯片的编写主要看的是哪部分才能写出这个底层函数呢?
回复 支持 反对

使用道具 举报

88

主题

7377

帖子

5

精华

资深版主

Rank: 8Rank: 8

积分
14980
金钱
14980
注册时间
2013-11-13
在线时间
1823 小时
发表于 2016-6-24 10:29:40 | 显示全部楼层
本帖最后由 zuozhongkai 于 2016-6-24 10:31 编辑
zhoujianwen 发表于 2016-6-24 10:11
那修改的方法主要参考使用的芯片手册哪部分?比如LAN8720芯片的编写主要看的是哪部分才能写出这个底层函 ...

读取数据是直接操作STM32的MAC的,要知道STM32的MAC+外置的PHY才是一个完整的网卡,PHY和STM32的MAC之间的数据交换他们自己完成的,用户不需要干涉,我们最终要读取的数据都在STM32的MAC里面,所有我们用MAC专用的DMA来完成网络数据的读取。所以,你要写这部分底层函数也是要看STM32参考手册中的MAC章节
开往春天的手扶拖拉机
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-24 11:11:48 | 显示全部楼层
zuozhongkai 发表于 2016-6-24 10:29
读取数据是直接操作STM32的MAC的,要知道STM32的MAC+外置的PHY才是一个完整的网卡,PHY和STM32的MAC之间 ...

谢谢你的悉心指导,我再好好看看。还有个问题就是但是我像ST官方那样设置MDIO引脚之后从PHY读寄存器总是为零。
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-24 11:12:08 | 显示全部楼层
zhoujianwen 发表于 2016-6-24 11:11
谢谢你的悉心指导,我再好好看看。还有个问题就是但是我像ST官方那样设置MDIO引脚之后从PHY读寄存器总是 ...

要像你们那样设置才正确读写
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-24 12:06:39 | 显示全部楼层
zuozhongkai 发表于 2016-6-24 10:29
读取数据是直接操作STM32的MAC的,要知道STM32的MAC+外置的PHY才是一个完整的网卡,PHY和STM32的MAC之间 ...

看了  不知道怎么搞,能说说你们怎么写底层函数的吗
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-24 12:06:57 | 显示全部楼层
zhoujianwen 发表于 2016-6-24 12:06
看了  不知道怎么搞,能说说你们怎么写底层函数的吗

不知道怎么样的思路
回复 支持 反对

使用道具 举报

87

主题

331

帖子

0

精华

高级会员

Rank: 4

积分
906
金钱
906
注册时间
2016-3-26
在线时间
116 小时
 楼主| 发表于 2016-6-24 12:07:10 | 显示全部楼层
zhoujianwen 发表于 2016-6-24 12:06
不知道怎么样的思路

太多东西了
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2016-2-21
在线时间
16 小时
发表于 2016-8-11 00:33:30 | 显示全部楼层
依我的理解,分为DMA的中断,和PHY的引脚中断,
回复 支持 反对

使用道具 举报

2

主题

12

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2016-2-21
在线时间
16 小时
发表于 2016-8-11 00:37:15 | 显示全部楼层
本帖最后由 student 于 2016-8-11 00:42 编辑

依我理解,分为DMA中断,和PHY引脚的外部中断
ST官方例程使用外部中断连接PHY的INT中断,触发这个中断的事件为:
MII Interrupt Status and Misc. Control Register (MISR)寄存器中指出的事件LINK_INT。。。。和RMII传数据没有关系,
例程中:处理外部中断,
void EXTI15_10_IRQHandler(void)
{
  if(EXTI_GetITStatus(EXTI_Line15) != RESET)   // 此为一个按键,按键按下的时候电泳UDP函数处理
  {
    if (EthLinkStatus == 0)
    {
      /* Connect to tcp server */
      udp_echoclient_connect();
    }
    /* Clear the EXTI line  pending bit */
    EXTI_ClearITPendingBit(KEY_BUTTON_EXTI_LINE);
  }
  if(EXTI_GetITStatus(ETH_LINK_EXTI_LINE) != RESET)   //此为PHY中断,
  {
    Eth_Link_ITHandler(DP83848_PHY_ADDRESS);
    /* Clear interrupt pending bit */
    EXTI_ClearITPendingBit(ETH_LINK_EXTI_LINE);
  }  
}




DMA中断时STM32F4中的内部中断,当MAC把一帧数据传输到DMA描述符时,出发DMA中断,让CPU把数据从描述符中读出,
所以DMA中断也跟RMII传送数据没有关系


回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 22:04

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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