⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 s12co_spiio.c

📁 source code for a sample alarm control panel system using Freescale MC9S12DP256 . The project was im
💻 C
字号:
//=============================================================================
// File: S12CO_SPIIO.C - V1.00
// Rem.: The ACPRD Project Page on the Web -> http://hc12web.de/acprd
//=============================================================================

//-- Includes -----------------------------------------------------------------

#include "datatypes.h"
#include "hcs12dp256.h"
#include "s12_spi.h"
#include "s12co_spiio.h"

//-- Code ---------------------------------------------------------------------

void initSPIIO(void) {
	PTH  = S12CO_SPICSH;
	DDRH = S12CO_SPICSH;
	}

//-----------------------------------------------------------------------------

// Note: CPHA=0, CPOL=0 required
//		 clock rate max. 2MHz
//		 conversion takes max. 8祍
//
UINT16 getADS8344(UINT8 channel) {

	volatile UINT8 n;
	UINT16 adcresult;

	// set up SPI mode
	SPI0CR1 = BM_SPE | BM_MSTR;			// CPOL=0 CPHA=0
	// send conversion command
	PTH = S12CO_SPICS2;					// enable /CS2 
	xferSPI0((channel << 4) | 0x86);	// single ended, internal clock mode
	PTH = S12CO_SPICSH;					// disable /CS2
	// wait 8祍
	for(n=0; n<100; n++) ;
	// get conversion result
	PTH = S12CO_SPICS2; 				// enable /CS2
	adcresult = xferSPI0(0) << 8;		// get bits 15..9
	adcresult += xferSPI0(0);			// get bits 8..1
	adcresult <<= 1;
	if(xferSPI0(0) & 0x80) adcresult++;	// get bit 0
	PTH = S12CO_SPICSH;					// disable /CS2
	return adcresult;	
	}


//-----------------------------------------------------------------------------

// Note: CPHA=0, CPOL=0 required
//
void putDAC8532(UINT8 channel, UINT16 value) {

	// set up SPI mode
	SPI0CR1 = BM_SPE | BM_MSTR | BM_CPHA; // CPOL=0 CPHA=1
	// send command
	PTH = S12CO_SPICS1;					// enable /CS1 
	if((channel & 1) == 0)
		xferSPI0(0x10);					// load & set DACA
	else
		xferSPI0(0x24); 				// load & set DACB
	// send data
	xferSPI0(value >> 8);				// send bits 15..8
	xferSPI0(value);					// send bits 7..0
	PTH = S12CO_SPICSH;					// disable /CS1
	}
 
//-----------------------------------------------------------------------------

UINT8 getSPIPI(void) {

	UINT8 abyte;

	// set up SPI mode
	SPI0CR1 = BM_SPE | BM_MSTR;			// CPOL=0 CPHA=0
	// latch input data
	PTH = S12CO_SPICS4; 
	PTH = S12CO_SPICSH;
	// serialize latched data
	PTH = S12CO_SPICS3;
	abyte = xferSPI0(0);
	PTH = S12CO_SPICSH;
	return abyte;
	}

//-----------------------------------------------------------------------------

void putSPIPO(UINT8 abyte) {

	// set up SPI mode
	SPI0CR1 = BM_SPE | BM_MSTR;			// CPOL=0 CPHA=0
	// send data
	PTH = S12CO_SPICS5;					// enable /CS5
	xferSPI0(abyte);
	PTH = S12CO_SPICSH;					// disable /CS5
	}

//=============================================================================

⌨️ 快捷键说明

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