初级会员

- 积分
- 132
- 金钱
- 132
- 注册时间
- 2015-8-13
- 在线时间
- 47 小时
|
发表于 2018-4-24 10:16:46
|
显示全部楼层
本帖最后由 照海倚天 于 2018-4-24 10:18 编辑
想必楼主早就明白了 一开始看到也是很晕 现在感觉明白了 把自己程序中的备注写一下 希望能给遇到这个问题的人一些提示
//使用NOR/SRAM的 Bank1.sector4,地址位HADDR[27,26]=01 其中A7作为数据与命令区分线(DM9000A数据命令选择,高数据,低命令)
//注意设置时STM32内部会右移一位对其!
#define DM9000_BASE ((u32)(0x6C000000|0x000000FE))
//640000FE 1100100000000000000000011111110 A7 为 0(即 CMD=0)
//64000100 1100100000000000000000100000000 A7 为 1(即 CMD=1)
//当A6作为数据地址区分线时
//A7的偏移量为0X000000FE FE:1111 1110
//A6的偏移量为0X0000007E 7E:0111 1110
//7E 转换成二进制就是:1111110,而16位数据时,地址右移一位对齐,
//那么实际对应到地址引脚的时候,就是:A6:A0=0111111,此时A6是0
//,但是如果 16 位地址再加 1(注意:对应到8位地址是加2,即 7E+0X02),那么:A6:A0=1000000,
//此时 A6 就是 1 了,即实现了对 RS 的 0 和 1 的控制。
//按照此原则本系统中用的为A2 则加一后应为 A2-A0:100 减一为011 右补零后为0110 则其值为06
//验证A7 加一后A7-A0:为1000 0000 减一后为0111 1111 右补0后为 1111 1110 故为FE
|
|