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

📄 lpc_lib_spi.c

📁 使用embest IDE开发工具开发的基于LPC2294 的触摸屏开发
💻 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 + -