嵌入式单片机基础篇(三十五)之SPI通信以及51单片机程序

SPI通信以及51单片机程序

SPI通信协议:
1、简而言之:
(1)利用时钟脉冲得上升沿和下降沿来实现数据传输。
(2)数据传输方式为字节高位在前,低位在后传输。
(3)标准SPI协议为4线制传输数据,4条信号线分别为:
MISO 主设备数据输入,从设备数据输出。
MOSI 主设备数据输出,从设备数据输入。
SCLK 时钟信号,由主设备产生。
CS 从设备片选信号,由主设备控制(一般低电平有效)。
(4)SPI内部结构简明图如下:
在这里插入图片描述

(5)由上图可以看出,SPI接口传输数据的方式是主机发送一字节数据的最高位的同时也会接收到从机的一字节数据的最高位并放在自己的最低位,从机亦然。
(6)如果主机在时钟信号的上升沿接收数据,那么主机在时钟信号的下降沿就会发送数据。
(7)标准的SPI协议为高速、全双工、同步的串行通信协议。
(8)四线制的SPI为标准的SPI接口,同时收发数据;三线制或二线制的SPI为非标准的SPI接口,一般使用SCL时钟信号线、片选线CS、和数据信号线DIO或片选信号线直接接地,只有SCL时钟信号线和数据线DIO。
(9)物理拓扑图:
在这里插入图片描述

2、传输模式:
(1)CPOL(Clock Polarity,时钟极性)表示SCK在空闲时为高电平还是低电平。当CPOL=0,SCK空闲时为低电平,当CPOL=1,SCK空闲时为高电平。
(2)CPHA(Clock Phase,时钟相位)表示SCK在第几个时钟边缘采样数据。当CPHA=0,在SCK第一个边沿采样数据,当CPHA=1,在SCK第二个边沿采样数据。(所谓的采样数据也就是接收数据)
(3)根据时钟的极性与相位的不同,SPI的传输模式可以分为4种模式,如下表:
在这里插入图片描述
(4)SPI的传输模式一般由从机决定。
3、51单片机模拟SPI读写单字节数据程序:

unsigned char SPI_WriteReadByte(unsigned char  dat)
{
   
unsigned char i = 0;
unsigned char temp = 0;
unsigned char read_data = 0x00;
//	SCK=0;
for(i=0;i<8;i++) 
	{
   
	SCK=0;
  temp=((dat&0x80)==0x80)?1
  • 9
    点赞
  • 93
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值