lixuyongzd 发表于 2010-8-7 13:57:05

使用stm32radio-examples中的例子,网络ping不通问题请教

我使用armfly的STM32板子,学习STM32 Radio中的例子,网络部分ping不通,armfly的STM32板子和本站的STM32 Radio在网络部分硬件上有些差别,中断引脚不一样,总线地址不一样,两个部分都按实际情况修改了,但ping不通,
截图见图片:
http://cache.amobbs.com/bbs_upload782111/files_32/ourdev_573488.jpg
现象截图 (原文件名:20100807135502453.jpg)

请明白的指导指导,谢谢!

ffxz 发表于 2010-8-7 20:38:14

请自行修改驱动,不同的板子驱动当然也不相同。

lixuyongzd 发表于 2010-8-9 08:19:31

发现了一些问题,STM32 Radio中总线好像是用八位,armfly的是16位,继续改

aozima 发表于 2010-8-9 09:09:55

回复【2楼】lixuyongzd
发现了一些问题,stm32 radio中总线好像是用八位,armfly的是16位,继续改
-----------------------------------------------------------------------
RADIO中也是16位,如果使用8位,会影响高8位数据.

lixuyongzd 发表于 2010-8-9 09:51:36

回复【3楼】aozima
-----------------------------------------------------------------------

看原理图DM9000A的21脚是高电平,芯片手册上说高电平时是8位,难道还有其他设置?

aozima 发表于 2010-8-9 12:29:10

回复【4楼】lixuyongzd
回复【3楼】aozima
-----------------------------------------------------------------------
看原理图dm9000a的21脚是高电平,芯片手册上说高电平时是8位,难道还有其他设置?
-----------------------------------------------------------------------
那个电阻实际安装时并不贴. 只是留着备用的.

lixuyongzd 发表于 2010-8-9 15:09:01

这个就搞不明白了,stm32 radio和armfly的区别就只有地址(armfly的是0x6C100000、0x6C100008)、中断引脚(armfly的是PA1)和中断方式的区别(armfly上DM9000A的20脚上拉,中断是低有效)的区别,仿真是开始进中断,后来不进中断了,

ffxz 发表于 2010-8-9 16:27:56

硬件不一样,自然区别也比较大的。对于不是STM32 Radio硬件的,建议使用原来的STM3210分支进行调试,毕竟要简单些。

lixuyongzd 发表于 2010-8-9 16:54:42

这个我是用STM3210分支的,结果是一样的,rtt finsh显示TCP/IP初始化,但是ping不通,另外一个网友用的是STM32 Radio分支,现象一样,自己电脑的网卡出问题了,公司又不敢明目张胆的弄私人东西

cat_li 发表于 2010-8-9 17:04:01

如果不同,怎么获取IP地址呀,我看你那上面已经获取到IP了

lixuyongzd 发表于 2010-8-9 17:13:49

我也纳闷呀,能自动获得IP

ffxz 发表于 2010-8-9 17:19:20

接收成功,发送不成功?不过感觉很奇怪,发送应该也能够成功才对,否则DHCP server不会接收到分配请求。

建议仔细看看FSMC部分,好像armfly的FSMC外设比较麻烦。

lixuyongzd 发表于 2010-8-9 17:22:41

恩,好,谢谢指导

cat_li 发表于 2010-8-9 22:00:12

好像他的外设增加了地址扩展,看下相应的pin有没有设置好

cat_li 发表于 2010-8-9 23:36:24

找了块armfly的板子,确实有楼主说的问题,能够获取ip,但是ping不通,但是用他自带的例程可以,不知道问题在哪

lixuyongzd 发表于 2010-8-10 08:28:10

PA1中断引脚在开始分配IP时有下降沿,可以进入中断,后来就一直为低电平,进不了中断了

cat_li 发表于 2010-8-10 09:21:53

搜一下,看看是不是在别的地方使用到PA1了,并且修改了PA1的状态。我也觉得很奇怪,用armfly的也可以更新电台列表,就是ping不同

cat_li 发表于 2010-8-10 09:48:12

static void GPIO_Configuration()
{
    GPIO_InitTypeDef GPIO_InitStructure;
    EXTI_InitTypeDef EXTI_InitStructure;

    /* configure PE5 as eth RST */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOE,&GPIO_InitStructure);
    GPIO_SetBits(GPIOE,GPIO_Pin_5);
    //RST_1();

    /* configure PE4 as external interrupt */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD;
    GPIO_Init(GPIOE, &GPIO_InitStructure);

不知道这个地方你是不是只把PE4改成了PA1, 估计因为GPIO_Mode 为下拉输入的原因,所以一直为低电平

    /* Connect DM9000 EXTI Line to GPIOE Pin 4 */
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource4);

    /* Configure DM9000 EXTI Line to generate an interrupt on falling edge */
    EXTI_InitStructure.EXTI_Line = EXTI_Line4;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

lixuyongzd 发表于 2010-8-10 10:24:10

我现在的比较简单,用STM3210分支,其他地方都没有用到PA1,工程见附件,串口波特率是19200,目前SD和LED管用
工程ourdev_574089.rar(文件大小:25.83M) (原文件名:rt-thread_20100807.rar)

lixuyongzd 发表于 2010-8-10 10:31:36

修改成了上拉也不行

lixuyongzd 发表于 2010-8-10 10:37:13

我想应该是DM9000A配置问题,armfly上DM9000A的20脚上拉,中断是低有效;STM32 Radio上DM9000A的20脚悬空,中断是高有效,可能DM9000A初始化也要改改

lixuyongzd 发表于 2010-8-10 10:47:37

好了,
/* configure PA1 as external interrupt */
    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    /* Connect DM9000 EXTI Line to GPIOE Pin 1 */
    GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource1);

    /* Configure DM9000 EXTI Line to generate an interrupt on falling edge */
    EXTI_InitStructure.EXTI_Line = EXTI_Line1;
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);

中断方式改为下降沿就好了

lixuyongzd 发表于 2010-8-10 10:54:36

谢谢各位的关注,特别感谢cat_li大哥的指导,仔细看了引脚配置,发现虽然 写着/* Configure DM9000 EXTI Line to generate an interrupt on falling edge */ ,实际却是 EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;上升沿中断

cat_li 发表于 2010-8-10 11:01:33

回复【22楼】lixuyongzd
谢谢各位的关注,特别感谢cat_li大哥的指导,仔细看了引脚配置,发现虽然 写着/* configure dm9000 exti line to generate an interrupt on falling edge */ ,实际却是 exti_initstructure.exti_trigger = exti_trigger_rising;上升沿中断

-----------------------------------------------------------------------

呵呵,昨天用朋友的板子也碰到这个问题了,早上来找了一下,但是没有硬件验证,    我是菜鸟,指导不敢当

lixuyongzd 发表于 2010-8-10 11:06:54

上传ping通的工程,加入了外部ram
pingourdev_574103.rar(文件大小:25.74M) (原文件名:rt-thread_20100807.rar)
页: [1]
查看完整版本: 使用stm32radio-examples中的例子,网络ping不通问题请教