mirror of
https://github.com/marqs85/ossc
synced 2026-11-15 03:00:51 +03:00
SD SPI implementation finished
This commit is contained in:
1 parent
71d60144e8
commit
f55e9a877e
46 files changed
+2349
-3392
No files matched your search
@@ -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;
|
||||
}
|
||||
Reference in new issue
Block a user