Forum Discussion
Altera_Forum
Honored Contributor
16 years agoNios2 SPI
Hi, I'm having some trouble reading from my IO expander with the SPI core from Altera :confused: Can anybody provide me with an example on how to issue a correct read to the spi inter...
Altera_Forum
Honored Contributor
16 years agoI send 16bits. 1 read/write bit, 7 address bits and 8 datas bits.
void WriteReg(alt_u8 adress, alt_u8 m_data)
{
alt_u16 tosend;
tosend = 0x8000 | ((adress << 8) & 0x7F00) | (m_data & 0x00FF);
IOWR(SPI_CYCLONE3_BASE, ALTERA_AVALON_SPI_TXDATA_REG, tosend);
while (!(IORD(SPI_CYCLONE3_BASE, ALTERA_AVALON_SPI_STATUS_REG) & 0x0020));
}
alt_u8 ReadReg(alt_u8 adress)
{
alt_u16 tosend;
tosend = (adress << 8) & 0x7F00;
IOWR(SPI_CYCLONE3_BASE, ALTERA_AVALON_SPI_TXDATA_REG, tosend);
while (!(IORD(SPI_CYCLONE3_BASE, ALTERA_AVALON_SPI_STATUS_REG) & 0x0020));
return IORD(SPI_CYCLONE3_BASE, ALTERA_AVALON_SPI_RXDATA_REG);
}