硬汉嵌入式论坛

 找回密码
 立即注册
查看: 14748|回复: 9
收起左侧

[有问必答] STM32使用网口通信的一些疑问

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
QQ
发表于 2012-5-25 13:33:07 | 显示全部楼层 |阅读模式
最近在做STM32网口通信,使任意两块板子可以进行通信,参考Ex011-TCP通信_uIP例程。
现有以下几点疑问,求高手解答:
1、DM9000的MAC是不是为固定的,所有DM9000的MAC都相同?
2、与指定IP地址的板子通信是如何实现的?没有看到程序里有把目的IP地址写入到uip_buf[ ]数组中?
3、主动发送数据如何实现?
4、侦听端口号,这个端口号是否为目标方的端口号?
刚开始接触网口这一块,好多东西不了解,还望高手不吝赐教。谢谢!
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-5-25 15:39:41 | 显示全部楼层
1. MAC地址在同一个局域网内应该唯一,不是固定的。MAC地址可以软件设定。
2. uip_buf 是TCP或UDP数据包中的应用层数据区,不包括包头部分。对方IP地址和端口号在创建TCP连接的时候已经保存在了全局变量。
3.主动发送可以直接调用SendBuf函数
4.在STM32板子作为TCP客户端时,设置的帧听端口号为本地端口号。对端(比如PC)和板子通信时,TCP中的目标端口号需要等于板子的帧听端口号。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
QQ
 楼主| 发表于 2012-5-25 15:52:39 | 显示全部楼层

回 armfly 的帖子

armfly:1. MAC地址在同一个局域网内应该唯一,不是固定的。MAC地址可以软件设定。
2. uip_buf 是TCP或UDP数据包中的应用层数据区,不包括包头部分。对方IP地址和端口号在创建TCP连接的时候已经保存在了全局变量。
3.主动发送可以直接调用SendBuf函数
4.在STM32板子作为TCP客户端时,设置 .. (2012-05-25 15:39)
谢谢你的回答,不过还是有些不太理解
1、两块板子通信时,是不是可以设置相同的MAC地址了?
2、TCP连接是在最初建立的,如果打算与别的ip地址进行通信,是不是还要断开连接,重新建立tcp连接?tcp连接的建立是不是通过struct uip_conn *
uip_connect(uip_ipaddr_t *ripaddr, u16_t rport)函数?连接的建立是由谁发起?
4、tcp客户端的定义是不是任意的?
谢谢!
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-5-25 19:19:38 | 显示全部楼层
1、交换机或者HUB会根据MAC建立MAC-IP地址映射表。2个相同的MAC在网络上会引起混乱。
2、是的需要断开当前TCP连接,然后重新建立TCP连接。 连接的建立是由PC机发起的。
4、TCP客户端端口的定义可以任意
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
QQ
 楼主| 发表于 2012-5-28 10:17:05 | 显示全部楼层

回 armfly 的帖子

armfly:1、交换机或者HUB会根据MAC建立MAC-IP地址映射表。2个相同的MAC在网络上会引起混乱。
2、是的需要断开当前TCP连接,然后重新建立TCP连接。 连接的建立是由PC机发起的。
4、TCP客户端端口的定义可以任意

(2012-05-25 19:19)
两个stm32的板子利用网口通信,没有用到交换机之类的设备,对于MAC地址可以任意设置么?
两个STM32用网口通信,它们之间的连接可以由任意一块板子发起建立连接吗?
ps:能否提供一下stm32之间用网口通信的程序啊?谢谢!
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-5-28 18:52:37 | 显示全部楼层
两个板子直接网口通信的话,可以不用TCPIP协议栈,直接数据包收发即可。就像串口收发一样简单。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
QQ
 楼主| 发表于 2012-5-29 08:22:52 | 显示全部楼层

回 armfly 的帖子

armfly:两个板子直接网口通信的话,可以不用TCPIP协议栈,直接数据包收发即可。就像串口收发一样简单。 (2012-05-28 18:52)
是否还需要加ip地址啊?能详细介绍一下么?谢谢!
是否有像串口调试助手类似的调试软件啊?
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2012-5-30 15:19:22 | 显示全部楼层
不需要加IP, 和2个串口间通信类似。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
QQ
 楼主| 发表于 2012-5-31 09:29:33 | 显示全部楼层

回 armfly 的帖子

armfly:不需要加IP, 和2个串口间通信类似。
(2012-05-30 15:19)
使用你们的Ex011-TCP通信_uIP例程,连接无法建立,而且连串口通信都无输出。不知是怎么回事?我将之前调好的串口下载是可以正常通信的。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
QQ
 楼主| 发表于 2012-5-31 10:10:12 | 显示全部楼层

回 armfly 的帖子

armfly:不需要加IP, 和2个串口间通信类似。
(2012-05-30 15:19)
串口有输出了,不过读回的DM9000 ID不对。
DM9000AE Detect Failed, vid&pid = 29282B2A, Expected = 0A469000
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 07:11 , Processed in 0.255152 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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