static void skip_mmc ( WORD n /* Number of bytes to skip */ ) { #if BITBANG DI_H(); /* Send 0xFF */ #endif do{ #if BITBANG CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); #else SPIC.DATA = 0xFF; while(!(SPIC.STATUS & SPI_IF_bm)); #endif } while (--n); }
static BYTE rcvr_mmc (void) { BYTE r; #if BITBANG DI_H(); /* Send 0xFF */ r = 0; if (DO) r++; /* bit7 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit6 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit5 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit4 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit3 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit2 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit1 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit0 */ CK_H(); CK_L(); #else SPIC.DATA = 0xFF; while(!(SPIC.STATUS & SPI_IF_bm)); r = SPIC.DATA; #endif return r; }
static void xmit_mmc ( BYTE d /* Data to be sent */ ) { #if BITBANG if (d & 0x80) DI_H(); else DI_L(); /* bit7 */ CK_H(); CK_L(); if (d & 0x40) DI_H(); else DI_L(); /* bit6 */ CK_H(); CK_L(); if (d & 0x20) DI_H(); else DI_L(); /* bit5 */ CK_H(); CK_L(); if (d & 0x10) DI_H(); else DI_L(); /* bit4 */ CK_H(); CK_L(); if (d & 0x08) DI_H(); else DI_L(); /* bit3 */ CK_H(); CK_L(); if (d & 0x04) DI_H(); else DI_L(); /* bit2 */ CK_H(); CK_L(); if (d & 0x02) DI_H(); else DI_L(); /* bit1 */ CK_H(); CK_L(); if (d & 0x01) DI_H(); else DI_L(); /* bit0 */ CK_H(); CK_L(); #else SPIC.DATA = d; while(!(SPIC.STATUS & SPI_IF_bm)); #endif }
static void skip_mmc ( WORD n /* Number of bytes to skip */ ) { #if AXI_SPI do { BYTE w = 0xff; //xil_printf("skip_mmc\r\n"); XStatus Status = XSpi_Transfer(&Spi, &w, 0, 1); if(Status != XST_SUCCESS) { xil_printf("Error in skip transfer\r\n"); xil_printf("Status = %d\r\n", Status); } //DLY_US(1); } while (--n); #else DI_H(); /* Send 0xFF */ do { CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); CK_H(); CK_L(); } while (--n); #endif }
static void xmit_mmc ( BYTE d /* Data to be sent */ ) { #if AXI_SPI //xil_printf("xmit_mmc\r\n"); XStatus Status = XSpi_Transfer(&Spi, &d, 0, 1); if(Status != XST_SUCCESS) { xil_printf("Error in write transfer\r\n"); } //DLY_US(1); #else if (d & 0x80) DI_H(); else DI_L(); /* bit7 */ CK_H(); CK_L(); if (d & 0x40) DI_H(); else DI_L(); /* bit6 */ CK_H(); CK_L(); if (d & 0x20) DI_H(); else DI_L(); /* bit5 */ CK_H(); CK_L(); if (d & 0x10) DI_H(); else DI_L(); /* bit4 */ CK_H(); CK_L(); if (d & 0x08) DI_H(); else DI_L(); /* bit3 */ CK_H(); CK_L(); if (d & 0x04) DI_H(); else DI_L(); /* bit2 */ CK_H(); CK_L(); if (d & 0x02) DI_H(); else DI_L(); /* bit1 */ CK_H(); CK_L(); if (d & 0x01) DI_H(); else DI_L(); /* bit0 */ CK_H(); CK_L(); #endif }
static BYTE rcvr_mmc (void) { BYTE r; #if AXI_SPI //xil_printf("rcvr_mmc\r\n"); BYTE w = 0xff; XStatus Status = XSpi_Transfer(&Spi, &w, &r, 1); if(Status != XST_SUCCESS) { xil_printf("Error in read transfer\r\n"); return XST_FAILURE; } //DLY_US(1); #else DI_H(); /* Send 0xFF */ r = 0; if (DO) r++; /* bit7 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit6 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit5 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit4 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit3 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit2 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit1 */ CK_H(); CK_L(); r <<= 1; if (DO) r++; /* bit0 */ CK_H(); CK_L(); #endif return r; }