Arduino Language Reference-Functions-SPI-Functions
SPISettings
Description
SPISettings
对象用于配置您的 SPI 设备的 SPI 端口。所有 3 个参数被组合成一个单独的 SPISettings
对象,该对象被传递给 SPI.beginTransaction()
。
当所有的设置都是常量时,应该直接在 SPI.beginTransaction()
中使用 SPISettings。请参见下面的语法部分。对于常量,这种语法结果会产生更小更快的代码。
如果您的任何设置是变量,您可以创建一个 SPISettings 对象来保存这 3 个设置。然后你可以给这个对象命名,传递给 SPI.beginTransaction()。当您的设置不是常量时,创建一个命名的 SPISettings 对象可能更有效率,特别是当最大速度是一个被计算或配置的变量,而不是您直接输入到您的草图中的数字。
Syntax
SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0))
注意:所有 3 个设置都是常量时最好
SPISettings mySetting(speedMaximum, dataOrder, dataMode)
注意:任何设置是变量时最好
Parameters
speedMaximum
:通信的最大速度。对于一个额定速度高达 20 MHz 的 SPI 芯片,使用 20000000。dataOrder
:MSBFIRST 或 LSBFIRSTdataMode
:SPI_MODE0, SPI_MODE1, SPI_MODE2 或 SPI_MODE3
Returns
无。
SPI.begin()
Description
通过将 SCK、MOSI 和 SS 设置为输出,将 SCK 和 MOSI 拉低,SS 拉高来初始化 SPI 总线。
Syntax
SPI.begin()
Parameters
无。
Returns
无。
SPI.beginTransaction()
Description
初始化 SPI 总线。注意,在调用此函数之前,必须调用 SPI.begin()。
Syntax
SPI.beginTransaction(mySettings)
Parameters
mySettings: 选择的设置(参见 SPISettings)。
Returns
无。
SPI.endTransaction()
Description
停止使用SPI总线。通常,在取消选中芯片后调用此函数,以允许其他库使用SPI总线。
Syntax
SPI.endTransaction()
Parameters
无。
Returns
无。
SPI.end()
Description
禁用 SPI 总线(保持引脚模式不变)。
Syntax
SPI.end()
Parameters
无。
Returns
无。
SPI.setBitOrder()
Description
此函数不应在新项目中使用。请使用 SPISettings 与 SPI.beginTransaction() 来配置 SPI 参数。
设置移出和移入 SPI 总线的位的顺序,可以是 LSBFIRST(最低有效位优先)或 MSBFIRST(最高有效位优先)。
Syntax
SPI.setBitOrder(order)
Parameters
order: LSBFIRST 或 MSBFIRST
Returns
无。
SPI.setClockDivider()
Description
此函数不应在新项目中使用。请使用SPISettings与SPI.beginTransaction()来配置SPI参数。
设置SPI时钟分频器,相对于系统时钟。在基于AVR的板上,可用的分频器有2、4、8、16、32、64或128。默认设置是SPI_CLOCK_DIV4,这将SPI时钟设置为系统时钟频率的四分之一(对于16 MHz的板为4 MHz)。
对于Arduino Due: 在Due上,系统时钟可以被1到255之间的值分频。默认值是21,这将时钟设置为4 MHz,与其他Arduino板一样。
Syntax
SPI.setClockDivider(divider)
Parameters
divider(仅限AVR板):
- SPI_CLOCK_DIV2
- SPI_CLOCK_DIV4
- SPI_CLOCK_DIV8
- SPI_CLOCK_DIV16
- SPI_CLOCK_DIV32
- SPI_CLOCK_DIV64
- SPI_CLOCK_DIV128
chipSelectPin:外围设备CS引脚(仅限Arduino Due)divider:1到255之间的一个数(仅限Arduino Due)
Returns
无。
SPI.setDataMode()
Description
此函数不应在新项目中使用。请使用 SPISettings 与 SPI.beginTransaction() 来配置SPI参数。
设置SPI数据模式:即时钟极性和相位。有关详细信息,请参阅Wikipedia上关于 SPI 的文章。
Syntax
SPI.setDataMode(mode)
Parameters
mode:
- SPI_MODE0
- SPI_MODE1
- SPI_MODE2
- SPI_MODE3
chipSelectPin - 外设设备CS引脚(仅限Arduino Due)
Returns
无。
SPI.transfer()
Description
SPI传输基于同时发送和接收:接收到的数据将返回在receivedVal(或receivedVal16)中。在缓冲传输的情况下,接收到的数据将就地存储在缓冲区中(旧数据将被接收到的数据替换)。
Syntax
receivedVal = SPI.transfer(val)
receivedVal16 = SPI.transfer16(val16)
SPI.transfer(buffer, size)
Parameters
- val: 通过总线发送的字节
- val16: 通过总线发送的两个字节的变量
- buffer: 要传输的数据数组
Returns
接收到的数据。
SPI.usingInterrupt()
Description
如果您的程序将在中断中执行SPI事务,请调用此函数以在SPI库中注册中断号或名称。这允许SPI.beginTransaction()
防止使用冲突。请注意,在调用beginTransaction()
时,usingInterrupt()
中指定的中断将被禁用,并在endTransaction()
中重新启用。
Syntax
SPI.usingInterrupt(interruptNumber)
Parameters
interruptNumber:关联的中断号。
Returns
无。