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

📄 ssp.c

📁 lpc213x单片机 无线通信年nRF24L01源码
💻 C
字号:



#include   "SSP.H"

uchar    T_data[34];
uchar    R_data[34];

void    SPI_init(void);
UINT    SPI_SendData(uchar *T_data, uchar *R_data, uchar No);
void    SSP_init(void);
UINT    SSP_SendData(uchar *T_data, uchar *R_data, uchar No);


void    SPI_init(void)
{
    PINSEL0 &= 0xFFFF00FF;
    PINSEL0 |= 0x00001500;

    IO0DIR |= SLAVE0_CS;
    IO0SET  = SLAVE0_CS;

    S0SPCR  = S0SPCR_val;
    S0SPCCR = S0SPCCR_val;

}

UINT  SPI_SendData(uchar *T_data, uchar *R_data, uchar No)
{
    UINT i;

    IO0CLR  = SLAVE0_CS;
    for ( i = 0; i < No; i++ )
    {
	    S0SPDR = T_data[i];
	    while ((S0SPSR & 0x80) == 0);
	    R_data[i] = S0SPDR;		                /* Flush the RxFIFO */
    }
    IO0SET  = SLAVE0_CS;
    return 1;
}


void    SSP_init(void)
{
    PINSEL1 = (PINSEL1 & (~(0xFF << 2))) | (0xAA << 2) ;

    IO0DIR |= SLAVE_CS;
    IO0SET  = SLAVE_CS;

    SSPCR0 = SSPCR0_val;              
    SSPCR1 = SSPCR1_val;                      
    SSPCPSR = SSPCPSR_val;              // PCLK分频值
   // SSPIMSC = 0x07;                   // 中断屏蔽寄存器
    SSPICR  = 0x03;                     // 中断清除寄存器,清除所有的中断状态    
}

/*
UINT SLAVE_CS, UINT *T_data, UINT *R_data, UINT No
从机片选,发送数据地址,接受数据地址,数据个数
发送,接收数据位数由初始化程序决定(<=16,>=4),数据个数<8
*/

UINT  SSP_SendData(uchar *T_data, uchar *R_data, uchar No)
{ 
    UINT i;

    while ((SSPSR & 0x10) != 0);	    // 等待BSY置0,即空闲  
    while ((SSPSR & 0x04) != 0)         // 清空接收缓冲区
        i = SSPDR; 
       
    IO0CLR = SLAVE_CS;			        // 选择从机 

    for (i=0; i<No; i++)
    {
       SSPDR = T_data[i];
        while((SSPSR & 0x10) != 0);	        // 等待TFE置位,即发送FIFO空   
       R_data[i] = SSPDR;     
    
    }
    IO0SET = SLAVE_CS;
    return(1);
}

⌨️ 快捷键说明

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