SD SPI implementation finished

This commit is contained in:
marqs committed 2016-10-21 01:19:53 +03:00
1 parent 71d60144e8
commit f55e9a877e
46 files changed
+2349 -3392

No files matched your search

+34 -12
View File
@@ -1,16 +1,35 @@
#include <alt_types.h>
#include <altera_avalon_spi.h>
#include <altera_avalon_spi_regs.h>
#include <altera_avalon_pio_regs.h>
#include <sys/alt_timestamp.h>
#include <system.h>
#include <io.h>
#include "i2c_opencores.h"
#include "spi_io.h"
#include "av_controller.h"
#define SD_SLAVE_ID 0
extern alt_u8 sys_ctrl;
alt_u32 sd_timer_ts;
void SPI_Init (void) {
return;
I2C_init(SD_SPI_BASE,ALT_CPU_FREQ,400000);
}
void SPI_W(BYTE *wd, int len) {
SPI_write(SD_SPI_BASE, wd, len);
}
void SPI_R(BYTE *rd, int len) {
SPI_read(SD_SPI_BASE, rd, len);
}
BYTE SPI_RW (BYTE d) {
BYTE rdata;
BYTE w;
SPI_R(&w, 1);
alt_avalon_spi_command(SPI_0_BASE, SD_SLAVE_ID, 1, &d, 1, &rdata, 0);
return rdata;
return w;
}
void SPI_Release (void) {
@@ -18,29 +37,32 @@ void SPI_Release (void) {
}
inline void SPI_CS_Low (void) {
return;
sys_ctrl &= ~SD_SPI_SS_N;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, sys_ctrl);
}
inline void SPI_CS_High (void){
return;
sys_ctrl |= SD_SPI_SS_N;
IOWR_ALTERA_AVALON_PIO_DATA(PIO_0_BASE, sys_ctrl);
}
inline void SPI_Freq_High (void) {
return;
I2C_init(SD_SPI_BASE,ALT_CPU_FREQ,ALT_CPU_FREQ/SCL_MIN_CLKDIV);
}
inline void SPI_Freq_Low (void) {
return;
I2C_init(SD_SPI_BASE,ALT_CPU_FREQ,400000);
}
void SPI_Timer_On (WORD ms) {
sd_timer_ts = ms*(ALT_CPU_FREQ/1000);
alt_timestamp_start();
}
inline BOOL SPI_Timer_Status (void) {
return alt_timestamp() < sd_timer_ts;
}
inline void SPI_Timer_Off (void) {
return;
}