在线时间0 小时
UID407531
ST金币0
蝴蝶豆0
注册时间2012-12-17
新手上路
- 最后登录
- 1970-1-1
|
a0a.1 0b0c
本人刚开始使用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 [0]: Transmit interrupt
– ETH_DMASR [2]: Transmit buffer unavailable
– ETH_DMASR [6]: Receive interrupt
– ETH_DMASR [14]: 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扩展,和按键处理,我都没有注释掉;而我的应用板对应的连接跟开发板不一致,有可能这一原因导致上述问题吗?
目前程序卡在这里几天了,无法向下进行,请大家指点,谢谢!!
|
|