您的位置 首页 电路

同步串行外设接口总线(SPI)的简介

SPI库这个库可以让你将Arduino作为主设备,其他外围设备作为从设备与主设备以串行方式进行通信及交换信息。同步串行外设接口总线(SPI)的

SPI

这个库能够让你将Arduino作为主设备,其他外围设备作为从设备与主设备以串行方法进行通讯及交流信息。
同步串行外设接口总线(SPI)的简介
同步串行外设接口总线(SPI)是用于MCU(微操控器)与一个或多个外围设备进行短距离快速通讯的同步串行数据协议。它也能够用于两个微操控器之间的通讯。 SPI的衔接始终是由一个主设备(通常是一个微操控器)来操控外围设备来进行。通常在一切设备上都有三条线,
Master In Slave Out (MISO) -主设备数据输入,从设备数据输出,
Master Out Slave In (MOSI) -主设备数据输出,从设备数据输入,
Serial Clock(SCK)-串行时钟,数据传输的时钟根据主处理器发生的时钟脉冲,
Slave Select(SS) -隶属挑选,从设备的管脚操控信号线,由主设备进行使能操控。当从设备的SS引脚置为低电平时,它与主设备进行通讯。当从设备的SS引脚置为高电平时,断开与主设备的通讯。因而,SPI答应一个主设备和多个从设备进行通讯,主设备经过不同的SS信号线挑选不同的从设备进行通讯。
给一个新的SPI设备写程序,你需求留意以下几点:
串行数据传输时,是先传输高位(MSB)仍是先传输低位(LSB),这是由 SPI.setBitOrder()函数来操控的。
数据时钟SCK在空闲时,是高电平仍是低电平?
采样时,是在时钟脉冲的上升沿仍是下降沿?这是由 SPI.setDataMode() 函数来操控的
SPI是在怎样速度下运转的,即SCLK供给多大的时钟脉冲使SPI运转?这是由 SPI.setClockDivider() 函数来操控的。
SPI标准是不严厉的,所以每个设备完成功用时稍有不同。这意味着当你写代码时,要特别留意设备的数据表。一般来说,有三种传输形式。这些形式操控着数据是在SCK的上升沿采样,仍是在SCK的下降沿采样(称为时钟相位),时钟信号在空闲时,是高电平仍是低电平(称为时钟极性)。由相位和极性组合得到三种形式。SPI.setDataMode() 函数用于操控时钟极性和相位,根据此表:
形式 时钟极性(CPOL) 时钟相位 (CPHA)
0 0 0
1 0 1
2 1 0
3 1 1
当你的SPI参数设置正确,你只需求挑选好需求的函数去操控你的设备,然后开端你的著作制造。这将被解释为您的设备数据表。
衔接
在Arduino Duemilanove和其他根据ATmega168 / 328的板子上,SPI总线运用引脚10(SS),引脚11(MOSI),引脚12(MISO)和引脚13(SCK)。而在Arduino Mega板上,运用的是引脚50(MISO),引脚51(MOSI),引脚52(SCK)和引脚53(SS)。需求留意的是,即便你不运用SS引脚,有必要将它的形式设置为输出;不然,SPI体系将会认为有一个外部主机将自己挑选为从设备(隶属形式),从而使库文件的操控失效。
它有或许运用其他脚比10脚,作为从机挑选引脚SS。例如,Arduino的以太网扩展板运用引脚4来操控的SPI衔接到主板上的SD卡,用引脚10来操控衔接到以太网操控器。
函数
begin()
end()
setBitOrder()
setClockDivider()
setDataMode()
transfer()
比如
BarometricPressureSensor: Read air pressure and temperature from a sensor using SPI
SPIDigitalPot: Control a digital potentiometer using SPI
拜见
shiftOut()
shiftIn()

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/dianlu/233416.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部