2008-03-11 05:12 AM
2008-03-10 05:15 AM
Hello,
I'm trying to use the EMI on the STR710FZ2 to drive a communication interface with a Video Processing Chip. I've gotten to the state where I can write to the BCONx control registers (0x6C00 0000) and write to EMI banks (0x6000 0000) without the ARM halting. I can also see the Address lines toggling however I don't see Data, CSn, or WEn toggle. And when I try to read the BCONx registers I always get 0. I've configured the ARM for EMI,... RCCU->PER = 0x0000000000000110;// bit 2 seems to be EMI, bit 1 seems to be USB, PCU->RSTR = 0x000F; // reset EMI block, and I've tried setting BCONx with EMI_Config(EMI_BANK1, EMI_SIZE_16, 15) and EMI_Enable(EMI_BANK1, ENABLE), or just using address = (ushort *) 0x6C000000; *address = 0x803D; I'm still unable to read *address back as anything but 0. Is it possible that the EMI block is broken in silicon? Any help would be much appreciated. Best Regards, Tim2008-03-10 06:15 AM
I have used the EMI on the STR710FZ2 extensively to communicate with at least 4 different kinds of chips with no such problems. All I had to do was configure the BCONx registers, set CSx lines to alternate function mode, and just read/write the external address locations. I never had to deal with RCCU->PER or PCU->RSTR, the power-up defaults worked fine.
I had a strange problem where the CPU was going crazy several milliseconds after an EMI access. I never found out what was causing the problem since I found a workaround: writing zero data to a location in the same bank after each exchange seemed enough to solve it. I can't say if it's a bug in silicon, it could be a problem in PCB layout or anything else, I didn't investigate it deep enough.2008-03-10 11:51 PM
Hi Tim,
Maybe it's an obvious answer, but did you set the ports 2.0 - 2.4 (which are chips selects for emi banks) to AF? You should do the same with the ports 2.4 to 2.7, which correspond to lines A.20 to A.23.2008-03-11 05:12 AM
Thanks for your replies,
Avelez, I've set ports 2.0, 2.1, 2.4, and 2.7 to AF. I'm not planning on using CS2 or CS3 (2.2, 2.3), and I wanted to use 2.5 and 2.6 for other functions. I don't see why not setting these would affect my ability to read the BCONx registers. Regards