×
嵌入式 > 技术百科 > 详情

freescale单片机SPI通信

发布时间:2020-09-15 发布时间:
|
//---主SPI初始化程序:

void InitSPI(void) 

{

    SPI1CR1 = 0b01010010;//SPIE SPE SPTIE MSTR CPOL CPHA SSOE LSBFE

                       //主模式,SS输出使能

    SPI1CR2 = 0b00010000;//0 XFRW 0 MODFEN BIDIROE 0 SPISWAI SPC0    

                       //8位输出

    SPI1BR = 0x70 | 0x05;//SPPR SPR

                       //Baudrate=fbus/[(SPPR+1)*2^(SPR+1)]

                       //        =80MHz/512=156.25kHz

    DDRP = 0b01110000;   //PP0   PP1   PP2  PP3

                       //MISO1 MOSI1 SCK1 SS1                      

                       //输入  输出  输出 输出

}

//---主SPI发送数据

void MasterData2Slave(uchar data) 

{  

    while(!SPI1SR_SPTEF){;} //SPI1SR_SPTEF 1:SPI数据寄存器为空;0:SPI数据寄存器为非空

                             //只要数据存储器有数据,就等待;否则进入下一步    

    SPI1DRL = data;           //存储器的数据发送之后,写入数据,这个很重要 

}   

-------------------------------------------------------------------------------------------

//---从SPI初始化程序:

void InitSPI(void) 

{

    SPI1CR1 = 0b11000000;//SPIE SPE SPTIE MSTR CPOL CPHA SSOE LSBFE

                       //SPI接收中断,从模式    

    SPI1CR2 = 0b00010000;//0 XFRW 0 MODFEN BIDIROE 0 SPISWAI SPC0    

                       //8位数据

    SPI1BR = 0x70 | 0x05;//SPPR SPR

                       //Baudrate=fbus/[(SPPR+1)*2^(SPR+1)]

                       //        =80MHz/512=156.25kHz

}

//---从SPI接收数据:

void MasterData2Me(void) 

{

    uchar data;     

    while(!SPI1SR_SPIF){;}    //先查询状态寄存器的状态,SPIF表示外部是否传入数据    

    data = SPI1DRL;

}

 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NS推出采用第二代PowerWise技术的能源管理单元及先进电源控制器