📄 lpc_lib_spi.c
字号:
/*
***********************************************************************
Embest Info&Tech Co., Ltd. All rights reserved.
www.embedinfo.com
***********************************************************************
---------------- file information -------------------------------------
file name: lpc_lib_spi.c
version : v0
author : peter pan / panqan@hotmail.com
begin : 2006-02-10
finish : 2006-02-10
define : lpc spi controll functions
notes :
---------------- modify information -----------------------------------
version :
modify :
begin :
finish :
define :
-----------------------------------------------------------------------
*/
// (--------------------- compiler condition --------------------------
/*
#ifdef xxx
#define xxx
#endif
*/
// --------------------- compiler condition --------------------------)
/*-------------------------------------------------------------------*/
/* include files */
/*---------------------------------------------------------------- --*/
#include "lpc_lib_spi.h"
/*-------------------------------------------------------------------*/
/* variable define */
/*-------------------------------------------------------------------*/
/*
INT32U XXXXXX;
*/
/*-------------------------------------------------------------------*/
/* extern function declare */
/*-------------------------------------------------------------------*/
/*--- define in XXX.c ---
extern void XXX();
*/
/*-------------------------------------------------------------------*/
/* extern variable declare */
/*-------------------------------------------------------------------*/
/*--- USED in XXX() ---
XXX SSS; // used inXXX()
*/
/*-------------------------------------------------------------------*/
/* function code */
/*-------------------------------------------------------------------*/
/**********************************************************************
* name : xxxxx
* func : xxxxx
* para : xxxx
* ret : xxxx
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
/*void xxx(xxx xxx)
{
}
*/
/**********************************************************************
* name : spi_init
* func : spi bus init
* para : channel: 0/1
mode: 0-slave
1-master
onoff: 0-off to gpio
1-on
* ret : none
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
void spi_init(INT8U channel, INT8U mode, INT8U onoff)
{
INT32U i,j;
if (0==channel)
{
if (0==onoff)
{ //off the spi
//set to input
//set pin to gpio
//set to input
}
else
{ //on the spi
if (1==mode)
{ //master mode
//set pin to spi
i = PINSEL0;
i &= (~SPI0_EN_MASK);
i |= SPI0_EN;
PINSEL0 = i;
//set spi to master
//set p0.24 to GPIO
i = PINSEL1;
i &= (~P0_24__GPIO_024_MASK);
i |= P0_24__GPIO_024;
PINSEL1 = i;
//set GPIO024 output
i = IODIR0;
i |= (0x01<<24);
IODIR0 = i;
//set output to 1
i = IOSET0;
i |= (0x01<<24);
IOSET0 = i;
//set clock
// SPI0_SPCCR = SPI_SPCCR_value_max;
SPI0_SPCCR=200;
//set SPCR
SPI0_SPCR = SPCR_SPI_595;
//
}
else
{ //slave mode
}
}
}
else if (1==channel)
{
if (0==onoff)
{ //off the spi
//set to input
//set pin to gpio
//set to input
}
else
{ //on the spi
if (1==mode)
{ //master mode
//set pin to spi
i = PINSEL1;
i &= (~SPI1_EN_MASK);
i |= SPI1_EN;
PINSEL1= i;
//set clock
// SPI0_SPCCR = SPI_SPCCR_value_max;
SPI1_SPCCR=200;
//set SPCR
SPI1_SPCR = SPCR_SPI_595;
//
}
else
{ //slave mode
}
}
}
}
/**********************************************************************
* name : spi_send
* func : spi bus send byte
* para : chr --in, send value
* ret : none
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
void spi_send(INT8U channel, INT8U data_send)
{
if (0==channel)
{ //spio
SPI0_SPDR = data_send;
// time_dly(1);
while( 0==(SPI0_SPSR & 0x80) );
}
else
{ //spi1
SPI1_SPDR = data_send;
while( 0==(SPI1_SPSR & 0x80) );
}
}
/**********************************************************************
* name : spi_data_send
* func : spi bus send byte
* para : channel
chr --in, send value
* ret : none
* glob : xxxx
* inc :
* author:
* date :
* modify:
* comment:
**********************************************************************/
void spi_data_send(INT8U channel, INT8U data_send)
{
INT32U i;
if (0==channel)
{
//spi0 init on
spi_init(0, 1, 1);
//data send
spi_send(0, data_send);
//return
}
if (1==channel)
{
//spi0 init on
spi_init(1, 1, 1);
//data send
spi_send(1,data_send);
//return
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -