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.
Yes I am talking about GIOA port specifically. I initialize it in the halcogen, and the behavior is as i mentioned. In the dout register, the particular gio value changes, but no change on oscilloscope, always remains high. Any help would be highly appreciated.
Regards
Anila
Anila,
Please look at the silicon errata, especially EMIF#4. Likely you have this issue.
-Anthony
Hi Anthony,
As per the work around for EMIF#4, i changed the mpu settings to strictly ordered, then to device type, but no change happens in the memory access. How to fix this? Can you please suggest anything?
Secondly i am using RM48 HDK Rev E, the part no installed is RM48L952ZWT, which suggests its revision C.
Regards
Anila
Hi Charles,
By improvement, i mean without calling mpuInit, sometimes 4 words were being written, i saw this while single stepping, and sometimes data written was erratic.
After calling mpuInit, the writing behaviour becomes consistent, instead of one word, always two words are written.
Secondly, in halcogen both 8000_0000 & 6000_0000 regions are by default initialized to strongly-ordered. So i didn't change those settings. However, some of the sub regions are dusabled, please tell me do i need to enable thosew sub regions.
Regards
Anila
Hi Anila,
I don't know what is wrong at the moment. Can you please check and try below things?
1. Check your hardware connection. Do you have your external device connected as shown in the TRM for the 16-bit memory?
2. Can you check the ASIZE bits in the CEnCFG register? Do you have the right size that is matching your external device?
3. You said you read 1,1,3,3,5,5 and etc in the memory browser. Have you tried to read the same addresses with your code rather than the debugger? How do they come out?
4. Can you try to perform the same operations from the SDRAM which is on the HDK? Do you see the same problem?
5. Can you try to use the DMA to write/read to the EMIF async memory? Will you see the same problem?
Hi Charles,
2. Yes ASIZE = 1 in CE2CFG. Even if Async1_init is not called, i get the same result? Why is that so? The external device is configured in 16-bit mode.
3. I read back the data into an array, result is same 1 1 3 3 5 5.
4. SDRAM absolutely works fine, result is 1 2 3 4 5 ...
5. Have not tried DMA, any sample code for that.
Regards
Anila
Hi Anthony,
Please see the attached.
D0 = nCS2
D1 = nWE
D2 = nDQM0
D3 = nDQM1
My asynchronous memory does not have byte enable signals, so nDQM[0:1] are disconnected on the daughter card.
The first snapshot is with custom timings as per the device datasheet of the asynchronous peripheral.
The second snapshot is with the default timings in the HalCoGen for Async1.
Hoping to hear from you soon.
Regards
Anila
Thanks Anthony.
What might is the reason for both nDQMs going low?
Is it that the EMIF works accurately only with memories which have byte enable signals? Because the TRM doesn't mention how to connect the nDQM signals if there are none in the peripheral interfaced.
Regards
Anila
Thanks Anthony.
Yes I watched the two write pulses by using a 32-bit integer, your above explanation is correct.
16-bit access is still the same. Can you please tell me how to decode the address for 16-bit access i.e. considering the following physical interface:
RM48 ---> Memory
BA1 ---> A0
A0 ---> A1
A1 ---> A2
A2 ---> A3
for 16-bit access, 16-bit pointer would be used so all the addresses would be even. Now for an address 0x6000_1002, how should this be decoded, will the last byte 0x02 appear on A6 A5 A4 A3 A2 A1 A0 BA1 = 0 0 0 0 0 0 1 0?
And if the above decoding is true, then does it mean that BA1 will always be 0 for 16-bit access?
Waiting for the reply.
Thanks & Regards
Anila
Hi Anthony,
Many thanks for this explanation, its quite helpful.
I have almost figured out what's the problem with my interface.
Though the TRM explains the 16-bit addressing, but it needs more detail like the one you have explained here. I think TI should add detailed address decoding in the EMIF chapter, for asynchronous memory as well.
Many thanks for the replies. I might get back on this soon.