TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320C6727B: 使用SST39VF800A型号的Flash进行读写,只能在DSP对应的Flash的第一个地址写数据

Part Number:TMS320C6727B

C6727对应的Flash地址为0x90000000—0x9FFFFFFF。进行写操作时,只能向0x90000000处写数据,而且其余地址的数据会一起改变。

比如,我向0x90000000—0x90000030分别写入0,1,2,3…。

第一次循环时,0x90000000处的值变为0,其余地址的数据不变。

第二次循环时,0x90000000处的值变为1,其余地址的数据不变。

第三次循环时,0x90000000处的值变为2,其余地址的数据不变。

第四次循环时,0x90000000处的值变为3,其余地址的数据均变为0。

第五次循环时,0x90000000处的值变为4,其余地址的数据均变为1。

以此类推。

想问一下各位,这个是什么原因呢?在进行写操作前,只配置了A1CR寄存器。

Shine:

写完数据后,建议用代码去回读一下flash里的值,看是没有成功烧写flash还是ccs显示的问题。

,

Jack Chen:

您好,我尝试了以下,就是单纯的没写进去。 Flash的写操作步骤如图所示,进行每一步时,0x90000000—0x9FFFFFFFF都有所写数据。主函数是向地址0x90000000写数据,但是却在0x90000000—0x9FFFFFFFF都有该数据。每次循环都是一样的。断电之后,数据就丢失了。这个可能是哪里出了问题呢?

,

Shine:

先看一下有没有擦除成功,都是FFFF。尝试加长每次烧写之间的间隔。

,

Jack Chen:

因为没有成功写入数据,所以都是FFFF。擦除的步骤也有按照地址写入数据的过程,这个过程一样,也是每个地址都有该数据。

此外,如图所示,由于SDRAM和Flash共用地址线和数据线,导致向SDRAM中写数据时,若配置了A1CR寄存器,则Flash中所有地址也会有该数据。

这个和最原始的问题可能会出在哪里呢?

,

Shine:

Jack Chen 说:因为没有成功写入数据,所以都是FFFF。

如果没有烧写成功的话,要检查flash那边的烧写命令,测量一下烧写时的时序是否满足flash数据手册的要求。

Jack Chen 说:由于SDRAM和Flash共用地址线和数据线,导致向SDRAM中写数据时,若配置了A1CR寄存器,则Flash中所有地址也会有该数据。

由片选信号来选择是使能SDRAM还是flash,不会同时工作,而且flash是要经过烧写命令才能将数据写入,往SDRAM中写数据不会改写flash里的内容。

,

Jack Chen:

您好,我还有个问题。上面第一个原理图,DSP和SST39VF800A的地址线是错位连接的,就是DSP的A[0]连接到了Flash的A[1],以此类推。那么如果我要向Flash地址为0x0001的空间写数据,那么我应该对DSP的哪个地址进行操作,是0x90000002吗?为什么?想求个详细解释。谢谢

,

Shine:

因为EMIF口会在内部对地址进行移位。EA0对应32bit访问,如果是16bit,需要用BA1来选择,如果是8bit,需要用BA1,BA0来选择。在EMIF文档里有说明。EM_A[x:0] always provide the least significant bits of a 32-bit word address. The BA[1:0] pins either provide the half-word and byte selection or provide EM_A[23:22] functionalitTMS320C672x DSP External Memory Interface (EMIF (ti.com)

,

Jack Chen:

感谢您的回答。

是的,这句话我注意到了,但我还是没有搞清楚:如果我要向Flash地址为0x0001的空间写数据,那么我应该对DSP的哪个地址进行操作?

,

Shine:

Jack Chen 说:如果我要向Flash地址为0x0001的空间写数据,那么我应该对DSP的哪个地址进行操作,是0x90000002吗

就是您上面说的这个0x90000002地址。

,

Jack Chen:

您好,我就是没搞明白为什么是这个地址。能否麻烦您详细的解释一下呢?

还有就是上面的BA1的问题。这个BA1在对应0x90000002中充当了哪一位?

,

Shine:

 在DSP这边不管外面接几位的设备,A0都是代表内部地址的A2,当接低于32 bit的设备时,内部低位地址A0, A1由BA0, BA1来充当。DSP的内部地址如下                                                 

 DSP address  ……A3 A2 A1 A0 BA1 BA0           flash address   …….A3 A2  A1 A0 BA1 0x90000000     …… 0    0   0   0    0    0                      00000          …… 0    0   0   0    0   0x90000001     …… 0    0   0   0    0    1                      00000          …… 0    0   0   0    00×90000002     …… 0    0   0   0    1    0                      00001          …… 0    0   0   0    10×90000003     …… 0    0   0   0    1    1                      00001          …… 0    0   0   0    1 

赞(0)
未经允许不得转载:TI中文支持网 » TMS320C6727B: 使用SST39VF800A型号的Flash进行读写,只能在DSP对应的Flash的第一个地址写数据
分享到: 更多 (0)