Part Number:TMS320C6727B
用示波器观察到如图所示的波形。其中蓝色为flash器件的时钟,即EM_CLK,频率为55MHz。黄色为CE信号,绿色为WE信号。为什么在CE信号为低电平
的时间段内,WE信号会出现一次高电平的变化呢?正常WE应该是一直保持低电平。是我的时序寄存器配置的有问题吗,还是其他原因
Shine:
请问硬件是怎么接的?代码怎么写的?是不是连续写了两次?
,
Jack Chen:
硬件连接如图所示:
调试代码如下:
void main(){ initSystem(); //系统初始化 A1CR = 0x3FFFFFFD; //flash时序寄存器配置 M0PDOUT = 0x10000001; //将AXR0配置为高电平 while(1) { Flash_5555h = 0xAA; //向DSP地址0x9000AAAA处(即Flash的0x5555处)写0xAA Delay(20); }}
,
Shine:
硬件连接没什么问题。
数据线和地址线上的时序正确吗?
,
Jack Chen:
如图所示。黄色为WE信号,蓝色为BA1信号,绿色为BA0信号。其余地址线与数据线上的时序都完全正常。
按照上面代码中的DSP地址,BA1应为高电平,BA0为低电平。但BA1的波形出现了低电平。
我又将代码中的DSP地址进行修改,将DSP地址改为0x9000AAAB,此时的BA1与BA0均应为高电平。但示波器显示波形还是如图所示,即没有变化。
将DSP地址改为0x9000AAAC,此时的BA1与BA0均应为低电平。但示波器显示波形还是如图所示,即没有变化。
想问下这是哪里出现了问题呢?
,
Jack Chen:
具体波形如图所示。写0xAA时,D1、D3、D5、D7只在WE的第一个低电平区域有数据,而在WE的第二个低电平区域没有数据。D0、D2、D4、D6一直保持低电平。已检查过原理图与PCB布线均没问题。
,
Shine:
我把您的问题升级到英文e2e论坛了,请关注下面帖子的回复。https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1133295/tms320c6727b-we-toggle-twice-in-1-write-cycle
,
Jack Chen:
谢谢您。还想请您帮个忙,这个帖子有几处修改一下。
①代码中的注释翻译成英文
②But he found the WE is toggled twice in one write cycle and the BA0 is not correct. Please see below snapshot.
这句话改成:
But he found the WE is toggled twice in one write cycle and the BA0 and BA1 are not correct. Please see below snapshot.
③在最后加上一句话:由于DSP使用的是BGA封装,所以没办法直接使用示波器测量引脚电平。我将DSP上的相关引脚连接到了FPGA上,通过FPGA的引脚使用示波器查看波形。
万分感谢。
,
Jack Chen:
此外,如果可以的话,希望能够将下面的问题也一并放入同一个英文帖子中。为了检验BA1与BA0是否有问题,我又使用SDRAM做了实验。电路图如图所示。所使用的型号为MT48LC8M16A2B4。同样也通过FPGA连接示波器查看波形。根据“TMS320C672x DSP EMIF User's Guide”(编号SPRU711C)中的Table 2-8,结合使用的SDRAM型号可得:IBANK=2,PAGESIZE=1。再根据SPRU711C中的Table 2-15,也即第二个图中的第6行,可知:BA[1:0]为逻辑地址的第10和11位。使用示波器测量发现:无论怎么修改地址,BA1和BA0均始终为高电平。请问出现这个问题的原因是什么?实验的主要代码如下:
while(1)
{
*(unsigned int *)0x8000AAAA=0x1234;
Delay(20);
}关于逻辑地址,我的理解是,比如TMS320C6727B型号的DSP分配给SDRAM的地址为0x80000000-0x8FFFFFFF。这个地址就是逻辑地址。也就是说,代码中的地址0x8000AAAA,对应的BA[1]=1,BA[0]=0。
如果我的理解是正确的,那么上面的实验结果就是正确的。如果我的理解错误,那么希望得到关于逻辑地址的正确解释,然后我重新做SDRAM实验。谢谢。
,
Shine:
一个一个问题来吧,看工程师有什么建议,如果是不同的原因引起的,再重新建新帖问,也方便其他客户参考。
,
Shine:
请看下面工程师的回复,麻烦发一下寄存器配置后的值。can you dump all of the EMIF register configuration, as show in EMIF user's guide. There may be something wrong with your configuration
,
Jack Chen:
SDTIMR = 0x31114610; SDSRETR = 0x1F; SDRCR = 0x9C4; SDCR = 0x4721; Delay(1100); SDRCR = 0x61A;
A1CR = 0x3FFFFFFD;
您好,上面是寄存器配置的值,麻烦您转发一下,辛苦啦,谢谢您。
,
Shine:
这是运行初始化代码后,EMIF寄存器成功配置后的值吧?
,
Jack Chen:
对的,EMIF寄存器成功配置,可以在寄存器对应的地址处读到该值
,
Shine:
请看下面工程师的回复。请问Flash_5555h这个变量是怎么定义的?是8bit还是16bit的?
it appears to be working in 8bit mode. Can you read out the register value for A1CR (not just what is configured in code)? It may not be getting written correctly.
Also, how is variable Flash_5555h declared? Is it defined as a byte (8bit) or word (16bit) element?
,
Jack Chen:
1.可以使用printf函数成功读出A1CR寄存器的值为0x3FFFFFFD。
2.Flash_5555h定义如下:
#define Flash_5555h *(unsigned int *)0x9000AAAA
,
Shine:
已把您的回复更新到e2e帖子,请关注帖子的回复。
,
Jack Chen:
好,谢谢您
,
Shine:
不客气~
,
Jack Chen:
我注意到工程师的回复:
Can you show the processor side of the schematic connection? Are you showing signal EM_WE or EM_WE_DQM in the scope shot?
下面是我的回复:
(1)处理器端的连接如图所示。FLASH的片选信号FLASH_CE是在FPGA端,通过下面VHDL程序将FLASH_CE与CS2连接起来,并已将程序烧进FPGA芯片中。
CS_2 <= FLASH_CE;
此外,由于DSP采用BGA封装,所以无法直接使用示波器测量引脚电平。我将DSP上的相关引脚通过编写VHDL程序连接到了FPGA上,通过FPGA的引脚使用示波器查看波形。
(2)示波器显示的是EM_WE信号。
辛苦您帮我回复给工程师,万分感谢。
,
Shine:
已把您的回复更新到e2e帖子,请关注帖子的回复。