Arduino的详细介绍(基于Mega2560)(分文)——SPI library

SPI接口协议总文有点介绍,不清楚的请找相关资料再看看。

MISO (主机输入,从机输出) 
MOSI (主机输出,从机输入)
SCK (时钟) 
SS (从机选择线) 

设备SS引脚为LOW则与主机通信,为HIGH则不与主机通信。


Arduino支持SPI协议,因此,有支持SPI的设备直接挂到Arduino的SPI线上就可以了。(如果是Arduino Due板子,用法请参考官网。)

SPI library主要有以下几个函数:

(1)begin()
(2)end()
(3)setBitOrder()
(4)setClockDivider()
(5)setDataMode()
(6)transfer()

begin():

功能:初始化SPI总线,设置SCK,MOSI和SS为输出:将SCK和MOSI拉低,将SS拉高。

形式:SPI.begin()

返回值:none

setBitOrder():

功能:设置进入和输出SPI总线比特(bit)的顺序:LSBFIRST (least-significant bit first) 或者 MSBFIRST (most-significant bit first)。

形式:SPI.setBitOrder(order)

参数:order: LSBFIRST 或者 MSBFIRST

返回值:none

setDataMode():

功能:设置数据模式;(具体请见百科)

形式:SPI.setDataMode(mode)

参数:mode:SPI_MODE0
SPI_MODE1
SPI_MODE2
SPI_MODE3

setClockDivider():

功能:设置SPI时钟为系统的分频。在AVR的板子上,分频系数可以为2,4,8,16,32,64或者128。默认设置为SPI_CLOCK_DIV4,即设置SPI时钟为系统时钟的1/4(如果板子为16MHz则SPI为4MHz)。

形式: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上传输一个字节(byte),发送和接收都是用这个函数;

形式:SPI.transfer(val)

参数:val:要发送的字节

返回值:从bus上读取的字节。(读操作使用的时候)

end():

功能:结束传输


这里有两个SPI使用的示例:http://arduino.cc/en/Tutorial/BarometricPressureSensor

http://arduino.cc/en/Tutorial/SPIDigitalPot


©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页