Other Parts Discussed in Thread: TMS320C6748
如图所示是C6727与外部异步16位flash连接图。
如果我要向flash地址为0x0001的空间写数据,那么对应的DSP地址应该是多少?
如果我要向flash地址为0x0005的空间写数据,那么对应的DSP地址应该是多少?
想求一个具体解释,谢谢。
C6727对应的Flash地址为0x90000000—0x9FFFFFFF。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
如图所示是C6727与外部异步16位flash连接图。
如果我要向flash地址为0x0001的空间写数据,那么对应的DSP地址应该是多少?
如果我要向flash地址为0x0005的空间写数据,那么对应的DSP地址应该是多少?
想求一个具体解释,谢谢。
C6727对应的Flash地址为0x90000000—0x9FFFFFFF。
根据链接中的内容,可以得到以下结论:
Flash(0x0000) = DSP(0x0000)且BA1=0;
Flash(0x0001) = DSP(0x0000)且BA1=1;
Flash(0x0002) = DSP(0x0001)且BA1=0;
Flash(0x0003) = DSP(0x0001)且BA1=1……
DSP的一个地址可以存放8bits数据,16位Flash的一个地址可以存放16bits数据。但是根据上述结论,DSP的一个地址存放了32bits数据。
这是怎么回事呢?麻烦解答一下,谢谢啦。
当对32 位的 DSP 内存地址执行读/写访问时,EMIF 控制器将在内部执行两次(16 位数据模式)连续读/写访问(第一次使用 BA[1] = 0,第二次使用 BA[1]=1)以完成 32 位读/写。
CEnCFG 寄存器的 ASIZE 字段确定完成所需的外部访问次数。
当 ASIZE = 0(8 位)时,对 32 位的请求需要四次外部访问,而当 ASIZE = 1(16 位)时需要两次外部访问。
前面可能说错了,应该是0x90000000和0x90000002。
正如英文论坛上解释的,flash的0x0000和0x0001对应到DSP内部是相同的地址,只是通过BA[1]来区分。
如果是32位读写,先是BA[1] = 0 然后是 BA[1]=1
我现在也无法实际测试,您可以实际读写测试看看,找了一些帖子给你参考。
#2. 当做EMIF访问时,CPU送出访问命令给EMIF,接下来的就是EMIF自己完成了。当是一个32bit访问时,EMIF为16bit宽时,则分为2次16位连续访问,即CS为低,WE或OE送出2次。这个操作是EMIF分解的,与CPU没有关系。
#3. 如果一定要得到一个CS出现一次读写使能,那么在你的代码中,对赋值对像设为16位的short型即可。