匿名
未登录
登录
丢石头百科
搜索
查看“Arduino系列教程九:SPI”的源代码
来自丢石头百科
名字空间
页面
讨论
更多
更多
页面选项
查看
查看源代码
历史
←
Arduino系列教程九:SPI
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
Arduino开发板ICSP接口中MOSI, MISO,SCK为SPI接口,有的开发板D11,D12,D13管脚默认和SPI接口连接(如UNO PLUS),有的开发板默认不连接。Accessory Shield开发板中OLED则是通过SPI接口控制。但本章教程作为Arduino的入门教程,OLED的程序较为复杂,在这里不打算讲解OLED的程序。在这里一Arduino IDE自带的例程讲解如何使用Arduino的SPI接口。 点击File->Examples->SPI->DigitalPotControl打开工程。程序如下: <syntaxhighlight lang="python"> // inslude the SPI library: #include <SPI.h> // set pin 10 as the slave select for the digital pot: const int slaveSelectPin = 10; void setup() { // set the slaveSelectPin as an output: pinMode (slaveSelectPin, OUTPUT); // initialize SPI: SPI.begin(); } void loop() { // go through the six channels of the digital pot: for (int channel = 0; channel < 6; channel++) { // change the resistance on this channel from min to max: for (int level = 0; level < 255; level++) { digitalPotWrite(channel, level); delay(10); } // wait a second at the top: delay(100); // change the resistance on this channel from max to min: for (int level = 0; level < 255; level++) { digitalPotWrite(channel, 255 - level); delay(10); } } } void digitalPotWrite(int address, int value) { // take the SS pin low to select the chip: digitalWrite(slaveSelectPin, LOW); // send in the address and value via SPI: SPI.transfer(address); SPI.transfer(value); // take the SS pin high to de-select the chip: digitalWrite(slaveSelectPin, HIGH); }</syntaxhighlight> <b>程序分析:</b> 程序开始先引入SPI头文件SPI.h。SPI接口包含MOSI, MISO,SCK,CS四根线。其中MOSI, MISO,SCK已经固定引脚。而CS为片选引脚,可随意选择哪个引脚作为CS.程序中const int slaveSelectPin = 10;定义D10作为片选信号。 setup()函数中调用SPI.begin()初始化SPI接口。此处为默认设置。若要设置具体参数可使用如下语句初始化SPI. <syntaxhighlight lang="python"> SPI.beginTransaction(SPISettings(14000000, MSBFIRST, SPI_MODE0));</syntaxhighlight> SPISettings()函数设置SPI传输模式,SPI.beginTransaction()函数根据SPISettings()初始化SPI. 此处为设置SPI速率为14MHZ,高位先传输,模式0。 <syntaxhighlight lang="python"> digitalWrite(slaveSelectPin, LOW);</syntaxhighlight> 传输SPI前先拉低片选管脚,使能SPI设备。 <syntaxhighlight lang="python"> SPI.transfer(val);</syntaxhighlight> SPI传输函数,参数val为要发送的字节,函数返回值为接收到的数据。 <syntaxhighlight lang="python"> digitalWrite(slaveSelectPin, HIGH);</syntaxhighlight> SPI传输结束释放片选管脚。
返回至
Arduino系列教程九:SPI
。
导航
导航
首页
最近更改
随机页面
MediaWiki帮助
首页
首页
树莓派
主机
配件包
外壳
键鼠
电源
扩展板
显示屏
墨水屏
摄像模块
通信模块
继电器
电机驱动板
游戏机
产品分类
树莓派
Arduino
micro:bit
STM32
Espressif
WiFi模块
蓝牙模块
无线模块
LoRa模块
4G模块
GSM
GPRS
以太网
导航模块
北斗卫星
GPS
LCD
墨水屏
OLED
摄像头
USB模块
串口模块
RS232
RS485
CAN
传感器
温度模块
湿度模块
气压模块
继电器
电机模块
指纹模块
电平转换
音频模块
编程器
Wiki工具
Wiki工具
特殊页面
页面工具
页面工具
用户页面工具
更多
链入页面
相关更改
页面信息
页面日志