硬汉嵌入式论坛

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

[有问必答] stm32f103ze开发板中dm9000 的地址如何确定(如何计算)

[复制链接]

1

主题

4

回帖

7

积分

新手上路

积分
7
QQ
发表于 2013-5-17 16:53:24 | 显示全部楼层 |阅读模式
我公司用stm32f103ze+dm9000开发网络,参考stm32-V2开发板的接法,但是不理解数据端口基址和地址端口基址是如何确定的,望回复!
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2013-5-17 20:39:03 | 显示全部楼层
DM9000的 CMD脚的状态决定了有2个端口地址。
回复

使用道具 举报

1

主题

4

回帖

7

积分

新手上路

积分
7
QQ
 楼主| 发表于 2013-5-17 21:48:36 | 显示全部楼层
我把图贴上,你一步一步来,具体是如何得到的端口地址的,要讲的详细点。
stm32+dm9000.JPG
回复

使用道具 举报

747

主题

1049

回帖

3295

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
3295
发表于 2013-5-19 08:32:43 | 显示全部楼层

DM9000  FSMC地址的计算方法

74HC139是地址译码器。其输出的4路信号Y0-Y3 同时只允许1路为低,或者都不选中(同时为高)
当 FSMC_NE4 = 0 (选中),并且 FSMA_A19 = 1 且  FSMC_A20 = 0 时,Y1 = 0 (选中DM9000)

DM9000 是一个两端口器件(1个寄存器地址端口,1个寄存器数据端口),也就是有2个物理地址。CMD管脚用来选择是哪个地址端口。
CMD管脚连接到 FSMC_A2 。  当FSMC_A2 = 0 时 选择地址端口, FSMC_A2 = 1 时 选择数据端口。

STM32的FSMC_NE4片选对应的物理地址范围是CPU内部逻辑决定的,是固定的,请查阅STM32的参考手册-FSMC章节。


#define   NET_BASE_ADDR            0x6C100000        /* DM9000AE 芯片地址 */      其中6C表示FSMC_NE4对应的空间  , 1 表示 FSMA_A19  = 1
#define   NET_REG_ADDR            (*((volatile uint16_t *) NET_BASE_ADDR))
#define   NET_REG_DATA            (*((volatile uint16_t *) (NET_BASE_ADDR + 8)))    其中的 +8 表示 FSMC_A2 = 1


FMSC配置为16位总线模式时(和8位区别), FSMC_A0 口线实际对应地址位为Bit1, 不是BIt2.    也就是说 FSMC_A2 对应的是 +8 而不是 +4.
回复

使用道具 举报

3

主题

10

回帖

3

积分

新手上路

积分
3
发表于 2014-1-7 11:04:35 | 显示全部楼层
请问一下,我们硬件设计的把NE3接到DM9000的片选上了,看了下资料上NE3是U9,SRAM 0x68000000~0x680FFFFF A0-A18,D0-D15,,DM9000接NE3的话基地址该怎么配?没有用地址译码器,A19,20是悬空
回复

使用道具 举报

3

主题

10

回帖

3

积分

新手上路

积分
3
发表于 2014-1-7 11:09:20 | 显示全部楼层
另外上面说的0x6C10 0000,应该是第FSMA_A20 = 1吧?
1对应的是第20位,还是怎么数的?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2014-1-7 11:41:18 | 显示全部楼层

回 walle 的帖子

walle:另外上面说的0x6C10 0000,应该是第FSMA_A20 = 1吧?
1对应的是第20位,还是怎么数的? (2014-01-07 11:09) 
A19是不是对于的第20位,而这里使用的是16位模式,再向前移1位就是第21位,也就是第21位是1.
回复

使用道具 举报

3

主题

10

回帖

3

积分

新手上路

积分
3
发表于 2014-1-7 12:06:13 | 显示全部楼层
QQ图片20140107120052.jpg
明白了,16bit模式有1bit的偏移,没仔细看手册
那么DM9000接NE3的话基地址该怎么配呢?没有用地址译码器,A19,20是悬空,我试过配0x68000000和0x68100000都读取ID failed,是不是配的不对?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107128
QQ
发表于 2014-1-7 12:38:20 | 显示全部楼层

回 walle 的帖子

walle:
明白了,16bit模式有1bit的偏移,没仔细看手册
那么DM9000接NE3的话基地址该怎么配呢?没有用地址译码器,A19,20是悬空,我试过配0x68000000和0x68100000都读取ID failed,是不是配的不对? (2014-01-07 12:06) 
需要一根地址线接CMD,你是不是没有接
回复

使用道具 举报

3

主题

10

回帖

3

积分

新手上路

积分
3
发表于 2014-1-7 13:22:18 | 显示全部楼层

回 eric2013 的帖子

eric2013:需要一根地址线接CMD,你是不是没有接 (2014-01-07 12:38) 
CMD管脚连接到 FSMC_A2 。
这个是跟开发板一样的,因为我们的方案外围器件不多,所以不需要地址译码器,就直接接片选信号NE3到DM9000的LAN_NCS了,而开发板用的是NE4,只有这个差别
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 12:46 , Processed in 0.325412 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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