- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi,
I have been trying to get the SPI working on a XC2734 chip to read a eeprom.
Problems i have is with receiving the data, the RBUF always stays 0x00 and never changes.
Check data with a scope and on the MISO input line i see data and it is changing on different address reads.
But RBUF always returns 0x00.
P10.0 Data input MISO
P10.1 Data output MOSI
P10.2 Clock
P10.8 CS
void EEPROM_test()
{
char recValue = '0';
U0C0_PCRL = 0x0F4F;
P10_OMRH = 0x0100; // P10.8 CS Output Low
U0C0_SCTRH = 0x071F; // Sets frame length on 4 byte
vSendData1(0x03);
vSendData1(0x01);
vSendData1(0xD0);
vSendData1(0xFF);
recValue = uwGetData();
//recValue = U0C0_RBUF;
P10_OMRH = 0x0001; // P10.8 CS Output High
}
void vSendData1(uword uwData)
{
U0C0_TBUF00 = uwData; // load transmit buffer register
while(!(U0C0_PSR & 0x1000)); // wait until tx buffer indication flag is set
U0C0_PSCR |= 0x1000; // clear transmit buffer indication flag
}
uword uwGetData(void)
{
while(!((U0C0_PSR & 0x8000) || (U0C0_PSR & 0x4000)));
U0C0_PSCR |= 0xC000; // clear alternate receive indication flag & receive indication flag
return U0C0_RBUF; // return receive buffer register
}
- Labels:
-
XE166 or XC2000
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
When I read data, usually I send 0xFF before reading the data, because needs to send the clock command. Have you tried it ?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the reply!
I send command, address and a dummy byte.
On the scope i see that the eeprom is responding with data but it is not getting into the RBUF.
vSendData1(0x03);
vSendData1(0x01);
vSendData1(0xD0);
vSendData1(0xFF);
Would you want to share the code you use to setup spi and read the eeprom?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content