SPI
什么是SPI
SPI是串行外设接口(Serial Peripheral Interface)的缩写。SPI,是一种高速的,全双工,同步的通信总线,在芯片的管脚上占用四根线。
所谓同步,即数据收发双方共用一个时钟;
所谓串行,即待传输的数据排成一行,一位一位地传送出去。
是一种数据通信方式,实现Arduino与外界传情达意
优点
全双工通信、高速、通信简单
缺点
【SPI】没有指定的流控制,没有应答机制确认是否接收到数据。
详细介绍
SPI以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要4根线。
它们是:
- MISO(主设备数据输入)
- MOSI(主设备数据输出)
- SCLK(时钟)
- CS(片选)
(1)MISO– Master Input Slave Output
主设备数据输入,从设备数据输出;
(2)MOSI– Master Output Slave Input
主设备数据输出,从设备数据输入;
(3)SCLK – Serial Clock
时钟信号,由主设备产生;
(4)CS – Chip Select
从设备使能信号决定选取哪个周边设备,由主设备控制
文章图片
一主一从
文章图片
一主多从 SPI是串行通讯协议,就是说数据是一位一位的传输的。这就是SCLK时钟线存在的原因,由SCLK提供时钟脉冲,SCLK信号线只由主设备控制,从设备不能控制信号线,至少要有一个主控设备。
SPI的数据输入和输出线独立,所以允许同时完成数据的输入和输出。
arduino中如何使用?
Arduino以SPIClass类的形式对SPI进行了封装
SPI 库主要有以下几个函数:
(1)begin()
(2)end()
(3)setBitOrder()
(4)setClockDivider()
(5)setDataMode()
(6)transfer()
- begin():
形式:SPI.begin()
返回值:none
- setBitOrder():
形式:SPI.setBitOrder(order)
参数:order: LSBFIRST 或者 MSBFIRST
返回值:none
- setDataMode():
形式:SPI.setDataMode(mode)
参数:mode:SPI_MODE0
SPI_MODE1
SPI_MODE2
SPI_MODE3
- setClockDivider():
形式:SPI.setClockDivider(divider)
参数:divider:SPI_CLOCK_DIV2
SPI_CLOCK_DIV4
SPI_CLOCK_DIV8
SPI_CLOCK_DIV16
SPI_CLOCK_DIV32
SPI_CLOCK_DIV64
SPI_CLOCK_DIV128
返回值:none
- transfer():
形式:SPI.transfer(val)
参数:val:要发送的字节
返回值:从bus上读取的字节。(读操作使用的时候)
- end():
后序将介绍如何利用SPI实现两块arduino板子之间通信
推荐阅读
- 热闹中的孤独
- 我要做大厨
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 爱就是希望你好好活着
- 太平之莲
- 为什么你的路演总会超时()
- 知识
- 叙述作文
- 时间老了
- 财商智慧课(六)