spi.c

来自「data logging in mmc in KML format」· C语言 代码 · 共 56 行

C
56
字号
#include <ez8.h>
#include <stdio.h>
#include <sio.h>
#include "spi.h"


void TransmitSPI(void)
//waits for transmission to end
{
	while((SPISTAT & TXST) == 0x00);		//Wait until transmission	
	while((SPISTAT & TXST) == TXST); 		//Wait until end of transmission
}

unsigned char TransferSPI(unsigned char data)
//simultaneously transfers data from master to slave and from slave to master (from host to card and from card to host)
{
	SPIDATA = data;
	TransmitSPI();
	data = SPIDATA;
	return data;
}



void InitSPI(void) 
//initializes the SPI
{
	//SPI pins alternate function
	PCADDR = ALT_FUN;
	PCCTL |= PIN_ALT;
	PCADDR = 0x00;

	//SPI settings
	SPICTL = (PHASE|CLKPOL|MASTER|SPI_ENABLE);
	SPIMODE = (NUMBIT8|SSIO|SS_HIGH);
	
	//Baud Rate Generator
	SPIBRH = BAUD_H;
	SPIBRL = BAUD_L;	
}


void AssertSS()
//selects the MMC (slave)
//used at the start of an SPI transaction
{
	SPIMODE &= ~SS_HIGH;	//SS' assert	
}


void DeassertSS()
//deselects the MMC(slave)
//used at the end of an SPI transaction
{
	SPIMODE |= SS_HIGH;		//SS' deassert
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?