babymonkey 发表于 2012-12-18 00:24:26

STM32F107 无法进入中断

本人刚开始使用STM32F系列MCU,目前在用STM32F107做一块ETHERNET接口应用板,目前在调试中发生以下问题,请各位指教:
1)背景:软件使用了ST网站上下载的stm32f107_eth_lwIP;我购买了一块STM3210C_EVAL板,该软件在其上运行良好。我的应用板的物理层芯片我使用的是LAN8710。在stm32_ETH.中重新定义了物理地址和寄存器地址。其他的软件代码未做改动。
2)问题现象:连接网线后,计算机显示网络正常,100M/Full Duplex。但是网络数据包中只有发出的数据包,没有接收到的数据包。PING该IP地址时,反馈  “Destination unreachable”. 调试Firmware时,发现lwIP接收不到数据包。追踪结果显示,Ethernet中断不能触发。
我在主程序里循环读取DMASR,DMAIER,DMACHRDR。DMAIER=0x10040,接收中断使能了。DMASR=0x00660404,bit6 有效,显示已经接收到数据包,数据接收状态机也正常;但是bit16 为0,显示未能触发中断。根据BIT 16定义:
Bit 16 NIS: Normal interrupt summary
The normal interrupt summary bit value is the logical OR of the following when the
corresponding interrupt bits are enabled in the ETH_DMAIER register:
– ETH_DMASR : Transmit interrupt
– ETH_DMASR : Transmit buffer unavailable
– ETH_DMASR : Receive interrupt
– ETH_DMASR : Early receive interrupt
Only unmasked bits affect the normal interrupt summary bit.
This is a sticky bit and it must be cleared (by writing a 1 to this bit) each time a corresponding
bit that causes NIS to be set is cleared.
bit16应该触发,但不知何故未能触发。我测试了另一块应用板,现象完全一样,排除了MCU故障的可能。DMACHRDR显示接收到了数据包,存储在有效的SRAM地址中。
我的疑问有两点:
1)STM32有全局中断吗?是我的全局中断没打开吗?
2)stm32f107_eth 软件中的其他部分比如LCD控制,IO扩展,和按键处理,我都没有注释掉;而我的应用板对应的连接跟开发板不一致,有可能这一原因导致上述问题吗?
目前程序卡在这里几天了,无法向下进行,请大家指点,谢谢!!
 
 
 
 

babymonkey 发表于 2012-12-18 21:10:14

回复:STM32F107 无法进入中断

帖子沉了,顶上来!请各位多指教!

babymonkey 发表于 2012-12-19 04:24:48

回复:STM32F107 无法进入中断

找到问题所在了。RX_DV信号走错了。问题中的描述也存在错误:DMASR=0x00660404,并没有触发接收状态置位。RX_DV修正后,Ethernet工作正常。谢谢大家!

huhao-2025368 发表于 2015-6-16 10:09:27

babymonkey 发表于 2012-12-19 04:24
找到问题所在了。RX_DV信号走错了。问题中的描述也存在错误:DMASR=0x00660404,并没有触发接收状态置位。R ...

请问RX——DV信号走错了,具体是什么意思???我的程序好像也不能进入接收中断里!!
页: [1]
查看完整版本: STM32F107 无法进入中断