Hello,
I am interfacing an ADC to the HPI bus on the TMS320C6455. I know that HPI is a slave peripheral, and that actually makes a lot of trouble for me, but unfortunately there is no other choice for parallel ADC as EMIF is already taken by other device. ADC provides it's own clock (40 MHz), so I use that as strobe. 20 bit output is just mapped to the data pins. I always write to the HPI, so write pin is set low, and HCS set high. HPI control pins are controlled from peripheral connector using DC_1 and DC_2 bits. Now here is my question:
I am able to set an address to write to, but here is the problem. HPIC is set to whatever the default values at reset are (which is all 0), so when I just start the board for the first time, and run the program I can write address to both HPIAW and HPIAR (As DUAL Address disabled), and when I look in the memory map, I even see values have been written. However, when I reload the program (that is, no turn on/off operation) I can only see the write operation being done to HPIAR, also there are no more new values in the memory. In fact, if I just keep running the program (infinite while loop) without reloading, I never see memory change.
What is the issue? Do I need to perform reset or something like that every time I write to HPID. I am using no autoincrementing, yet I see more then one memory location have been written.
I read all the documentation for the HPI, and it seems like I am doing everything right, yet I do not see good results. Also, I am writing to DDR2, that is below 0xE0000000 memory address. I am trying to avoid adding a lot of control hardware.
Thanks, Vladimir