楼主应该仔细看一下我的那个测试程序。
如果程序是这样的话。
- #define temp1 (*(u8 *)(Bank1_SRAM3_ADDR+0x1000))//定义temp1变量
- temp1=0x12; //对偏移地址1000写入0x12
- USART1_Transmit(temp1 ); //串口读出0x1000地址
会被编译器优化成:虽然你这里加了v,但还是请查看一下编译出来的指令是否没有偷懒。
然后就是,假设总线上并没有接SRAM,处于悬空状态(当CS线焊焊时也会是这种情况)。
当写-读的操作是连接执行的时候,写出的数据因数据线的电容还被存在数据线上面,
于是被读回来了,所以结果也是对的。
只有向不同的地址写入不同的数据再全读回来对比才能保证。
所以完整的测试应该是像我程序中的一样,可以测出CS,RD,WR,地址线,数据线,字节选择上面的短路,虚焊。
以及地址环回测试。
|