×
单片机 > 单片机程序设计 > 详情

对51系列单片机SPI总线的认识

发布时间:2020-05-30 发布时间:
|

* UART、 I2C 和 SPI 是单片机系统中最常用的三种通信协议。*


1、SPI简介:

    SPI 是一种高速的、全双工、同步通信总线,标准的 SPI 也仅仅使用 4 个引脚,常用于单片机和 EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。 SPI 通信原理比 I2C要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的 SPI 是 4 根线,分别是 SSEL( 片选,也写作 SCS)、 SCLK( 时钟,也写作 SCK)、 MOSI( 主机输出从机输入Master Output/Slave Input) 和 MISO( 主机输入从机输出 Master Input/Slave Output)。


    SSEL:从设备片选使能信号。如果从设备是低电平使能的话,当拉低这个引脚后,从设备就会被选中,主机和这个被选中的从机进行通信。

    SCLK:时钟信号,由主机产生,和 I2C通信的 SCL 有点类似。

    MOSI:主机给从机发送指令或者数据的通道。

    MISO:主机读取从机的状态或者数据的通道。



2、程序设计

发送一个字节

void SPISendByte(unsigned char ch)

    unsigned char idata n = 8;      //向SDA上发送一位数据字节,共八位      

    SCLK = 1 ;                      //时钟置高

    SSEL = 0 ;                      //选择从机

    while(n--)

    { 

        delayNOP();

        SCLK = 0 ;                 //时钟置低

        if((ch & 0x80) == 0x80)    //若要发送的数据最高位为1则发送位1

        {       

            MOSI = 1;              //传送位1

        }

        else

        {  

            MOSI = 0;              //否则传送位0

        }

        delayNOP();

        ch = ch << 1;                //数据左移一位

        SCLK = 1 ;                  //时钟置高 

    }

}


接收一个字节

unsigned char SPIreceiveByte()

{

    unsigned char idata n = 8; // 从MISO线上读取一上数据字节,共八位

    unsigned char tdata;


    SCLK = 1;                   //时钟为高

    SSEL = 0;                  //选择从机

    while(n--)

    {

        delayNOP();

        SCLK = 0;               //时钟为低

        delayNOP();

        tdata = tdata << 1;     // 左移一位,或_crol_(temp,1)


        if(MISO == 1)

        {

            tdata = tdata | 0x01;    

        }// 若接收到的位为1,则数据的最后一位置1

        else

        { 

            tdata = tdata & 0xfe;    

        }// 否则数据的最后一位置0

        SCLK = 1;

    }

    return(tdata);

}



每次开始,时钟线SCLK都为高电平,MISO是数据接收位,先接受最高位,通过左移8次,得到数据,MOSI是数据发送位,先发送数据最高位。 

数据的发送和接收都是在SCLK=0;与SCLK=1;语句之间执行,即:


SCLK = 0;

数据的收发与移位

SCLK = 1;


即数据的收发都是以SCLK的下降沿开始,上升沿结束。

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

作者:浊之清 

来源:CSDN 

原文:https://blog.csdn.net/qq_34706280/article/details/78702106 

版权声明:本文为博主原创文章,转载请附上博文链接!



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

热门文章 更多
ARM 汇编的必知必会