博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于arduino与SPI
阅读量:5332 次
发布时间:2019-06-15

本文共 1154 字,大约阅读时间需要 3 分钟。

参考:

 

 

作者:李俊轩   来源:本站原创   点击数:x  更新时间:2013年07月18日   【字体:大 中 小】

 

SPI的英文全称是:“Serial Peripheral Interface”,翻译成中文的意思是串口通信外围设备接口技术。也就是把数据用串口传输方式进行交换。它有一个主控制器,一般我们采用微处理器,比如常用的单片机,以及一些其它的外围设置,比如数码管,液晶显示频,SD卡等外围设备。

它一般是由5根线组成的:分别是MOSI,MISO,SCK, SS以及地线,电源线。
MOSI:是由主机向设备发出数据的。
MISO:是由设备向主机发送数据的。
SCK:是起到一个控制数据传输的校准,根据arduino官方的说法,好像还具备有对数据全能的控制作用。
SS线是用于一根使能线,特别是接多个外围设备的时候,可以通过控制SS线,对不同的外围设备进行通信。
写一个程序关于SPI必须注意的问题有:
1.
       字节的传输是从最高位(MSB)传输,还是从最低位(LSB)传输呢?这是由SPI.setBitOrder()函数进行设置的。
2.
       当数据不传输时,时钟线是高还是低?
3.      
触发方式是上升沿触发还是下降沿触发呢?这个由SPI.setDataMode()函数进行设置。
4.      
SPI运行的速度是多快呢?这个由SPI.setClockDivider()函数进行设置。
arduino2009
板上,
10
脚是
SS
11
脚是
MOSI, 12
脚是
MISO
13
脚是时钟引脚。当然在同时用这几根引脚控制多个外围设备的时候,
SS
引脚可以是其它引脚,比如
arduinoEhthernet
模块,利用第
4
个引脚去控制
SD
卡的
SS
端。第
10
引脚控制
Enthernet
模块的
SS
端,下面是三种不同的硬件接法示意图:
 
这是auduino
只控制一个外围设备的接法。

 

 

 
这是数据传输的时序图。
 
这是第三种方法,主机控制多个外围设备的接法。上文提到的控制网络模块与SD
卡两个外围设备用的电路 就是这种电路。
 
这是另外一种接法,也是同时控制多个外围设备,但是这种占用到主机的引脚相对于第二种来说会少一点。
下面再补充几个上文没有说到的关于
SPI
的函数:
SPI.begin()
作用是初始化
SPI
总线。设备
SCK, MOSI,
SS
为输出。把
SCK
MOSI
拉低,把
SS
线进行拉高。
SPI.end()
作用是结束SPI传输,或者准确地说是禁止SPI总线工作。
SPI.transfer(val)
作用是传输一个字节,这里要指出来的是val只能是字节。

转载于:https://www.cnblogs.com/MCSFX/p/11139601.html

你可能感兴趣的文章
CentOs环境下给PHP7.0安装fileinfo扩展
查看>>
UI_KVC赋值
查看>>
【刷题小记67】三角形面积
查看>>
Task
查看>>
【AS3代码】精确到点的不规则图形碰撞检测
查看>>
理解数据集
查看>>
CCDictionary
查看>>
mvc简单框架
查看>>
Ajax请求回调函数无法正确拿到String返回值
查看>>
第5次作业+049+尤帆贤
查看>>
Kafka的基础原理
查看>>
Mybatis中的jdbcType的作用
查看>>
jackson - jackson简述
查看>>
Java中lambda(λ)表达式的语法
查看>>
JDBC数据库相关
查看>>
maven项目创6 表现层整合
查看>>
导入代码时 eclipse的 src目录变为包名 的解决办法
查看>>
IT项目技术建议书核心内容
查看>>
自己写的基于java Annotation(注解)的数据校验框架
查看>>
JavaScript 中的函数式编程
查看>>