C6743 SPI外接FLASH的映射地址是多少啊??????怎么在数据手册上没看到呢
Shine:
没有DSP映射地址,是从spi flash地址0开始。
user1853832:
回复 Shine:
我想看擦除命令具体执行了没有怎么看啊?一般不都是看物理地址是不是都变成FF了吗?
Shine:
回复 user1853832:
串口flash要去读的.
并口flash有地址线,可以映射到DSP,看物理地址。
user1853832:
回复 Shine:
哦哦,另外还想请教一下C6743 的SPI flash 是不是在有数据传输时片选自动变低,数据传输完后自动变高???
Shine:
回复 user1853832:
是的,有数据传输时变低。数据传完后是否变高还是维持低电平,要看SPIDAT1.CSHOLD这位是0还是1?是0的话,会变高。
是1的话,保持低电平。
user1853832:
回复 Shine:
您好,我设置的SPIDATA.CSHOLD为0,单步运行程序时用示波器一直观察CS引脚,一直是高电平,无任何变化;但是Run整个程序上时观察CS引脚波形是脉冲形式,有高低电平变化,而且高低电平时间比是1:8,这是为什么呢?
另外,我现在去读Flash的ID,读出来的确一直是0;
Shine:
回复 user1853832:
不知道你指的单步是运行什么样的指令?
CSHOLD是在数据传完后才显现。
user1853832:
回复 Shine:
单步是CCS3.3环境下的Step into (F11键)
Shine:
回复 user1853832:
单步执行了什么样的代码?
user1853832:
回复 Shine:
statusbuf[0]=spiflash_CMD_RDID;
statusbuf[1]=0; statusbuf[2]=0; statusbuf[3]=0;
spiflash_cycle(statusbuf,3);
void spiflash_cycle(Uint8 *buf,Uint16 len){
Uint16 i;
/* Clear any old data */ SPI_SPIBUF;
/* spiflash access cycle */ for(i=0;i<=len;i++) { // Wait for transmit ready while( SPI_SPIBUF & 0x10000000 ); if (i == len ) SPI_SPIDAT1 = (SPI_SPIDAT1 & 0x0ffc0000) | buf[i] ; else { SPI_SPIDAT1 = (SPI_SPIDAT1 & 0xffff0000) | buf[i]; }
// Wait for receive data ready while ( SPI_SPIBUF & ( 0x80000000 ) );
/* Read 1 byte */ buf[i] = SPI_SPIBUF; }}