示例#1
0
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);
}
示例#2
0
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;
}
示例#3
0
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
}
示例#4
0
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
}
示例#5
0
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
}
示例#6
0
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;
}