第8章SPI_1
- 格式:ppt
- 大小:402.50 KB
- 文档页数:38


SPI接口是一种同步串行总线(Serial Peripheral Interface)。
四线SPI接口连线图:
CS为片选脚,用于选中从机。
SCLK为时钟脚,用于数据传输时提供时钟信号。
MOSI为主output,从input,即主机发送脚。对应从机的引脚为SDI。
MISO为主input,从output,机主机接收脚。对应从机的引脚为SDO。
上述SPI为标准SPI协议(Standard SPI)或单线SPI协议(Single SPI),其中的单线是指该SPI协议中使用单根数据线 MOSI 进行发送数据,单根数据线 MISO 进行接收数据。为了适应更高速率的通讯需求,半导体厂商扩展SPI协议,主要发展出了 Dual/Quad/Octal SPI协议,加上标准SPI协议(Single SPI),这四种协议的主要区别是数据线的数量及通讯方式,见下表:
除了上述接法,SPI还支持半双工1bit模式:
SCLK:时钟线。 I/O:数据线,同一时刻要么主机发送,要么主机接收。
SS:片选脚。
Dual SPI的2bit模式:
由于是半双工,同一时刻要么主机使用MOSI、MISO线,要么从机使用MOSI、MISO线。
Quad SPI(4线)模式
与Dual SPI类似,也是针对SPI Flash,也是半双工,Quad SPI Flash增加了两根I/O线(SIO2,SIO3),目的是SCLK一次触发传输4bit数据。
以AC63芯片SPI接口为例,进行代码分析:
根据SPI接口的时序要求,SPI接口可以通过软件实现,也可以通过硬件实现。这里仅分析硬件实现方式。
查看数据手册可知,芯片最多支持三个SPI接口,SPI接口支持DMA发送、接收功能。
每个SPI接口引脚可以映射到不同的引脚,分别为不同的组,即组A、组B、组C、组D。
SPI硬件包含控制寄存器、波特率寄存器、buf缓冲区寄存器、DMA地址寄存器、DMA计数寄存器。
SPI Conductive Silver Paint
More useful information The SPI #5001-AB and #5002-AB Silver Paint Product (the same
product in two different
size bottles) is a highly
concentrated suspension
(43% �3% silver solids)
of specially prepared and
tightly controlled high
purity silver powder
combined with a highly
effective organic suspending and binder system.
The product is formulated to produce electrically conductive paths, patterns
or films over nonconductive surfaces. The product is also designed for
strictly room temperature air drying applications since for the most part,
samples being mounted for SEM can not tolerate higher temperatures. The
product is sufficiently versatile that it can be dried at elevated temperatures
as well, especially for those using the product in UHV (e.g. ultra high vacuum) systems. More often than not, the substrate composition dictates
SPI
由于SPI(setial peripheralinterface)总线占用的接口线少,通信效率高,并且支持大部分处理器芯片,因而是一种理想的选择。SPI是利用4根信号线进行通信的串行接口协议,包括主/从两种模式。4个接口信号为:串行数据输入(MISO,主设备输入、从设备输出)、串行数据输出(MOSI,主设备输出、从设备输入)、移位时钟(SCK)、低电平有效的从设备使能信号(cs)。SPI最大的特点是由主设备时钟信号的出现与否来确定主/从设备间的通信。一旦检测到主设备的时钟信号,数据开始传输。
目录
SPI工作方式简介
SPI的数据传输
SPI用户逻辑
SPI基本原理与结构
SPI工作方式简介
SPI是由美国摩托罗拉公司最先推出的一种同步串行传输规范,也是一种单片机外设芯片串行扩展接口。
SPI模式可以允许同时同步发送和接收8位数据,并支持4种工作方式:
1. 串行数据输出,对应RC5/SDO引脚;
2. 串行数据输入,对应RC4/SDI/SDA引脚;
3. 串行时钟,对应RC3/SCK/SCL引脚;
4. 从动方式选择,对应RA5/SS/AN4引脚。
SPI模式下与之相关的寄存器有10个,其中4个是与I2C模式共用的。
图1所示是由一个主机对接一个从机进行全双工通信的系统构成的方式。在该系统中,由于主机和从机的角色是固定不变的,并且只有一个从机,因此,可以将主机的丽端接高电平,将从机的SS端固定接地。
图1 全双工主机/从机连接方法
若干个具备SPI接口的单片机和若干片兼容SPI接口的外围芯片,可以在软件的控制下,构成多种简单或者复杂的应用系统,例如以下3种。
(1)一个主机和多个从器件的通信系统。
如图2所示,各个从器件是单片机的外围扩展芯片,它们的片选端SS分别独占单片机的一条通用I/O引脚,由单片机分时选通它们建立通信。这样省去了单片机在通信线路上发送地址码的麻烦,但是占用了单片机的引脚资源。当外设器件只有一个时,可以不必选通而直接将SS端接地即可。
SPI1SPI2_DMA通信实验(STM32)
STM32学习笔记(⼆)
——之SPI_DMA寄存器级操作
⼀、实验⽬标
学会配置STM32的SPI寄存器和DMA寄存器,实现STM32的SPI1与SPI2通信功能,每次发送⼀字节数据,并可多次发送,如果接收的数据正确,则点亮LED灯。
⼆、实验⽬的
加⼊DMA的SPI通信相对于普通SPI通信有什么好处?ST给SPI加了DMA功能出于什么⽬的?我觉得这是很重要的⼀个问题,⼀直边学习边想。以下是我的看法:减少CPU负荷?我想这应该是DMA最主要的功能,可是对于SPI通信来说,其实⼤部分时候我们需要根据发送的指令->⽬标器件的应答来决定下⼀个指令,所以此时CPU还是需要⼀直等待每次通信的结束。⽽且像SD卡的操作,是⼀个顺序流的指令操作过程,⽤中断也不容易控制。那到底加⼊了DMA有什么好处?仔细查看了STM32F10xxx的⽤户⼿册,发现这么⼀⾏字“连续和⾮连续传输:当在主模式下发送数据时,如果软件⾜够快,能够在检测到每次TXE的上升沿(或TXE中断),并⽴即在正在进⾏的传输结束之前写⼊SPI_DR寄存器,则能够实现连续的通信;此时,在每个数据项的传输之间的SPI时钟保持连续,同时BSY位不会被清除。如果软件不够快,则会导致不连续的通信;这时,在每个数据传输之间会被清除”以及
也就是说如果连续传输⽽不使⽤DMA的话,需要CPU不停检测TXE并很快地置⼊SPI->DR的值,对于复杂程序的话这是很难达到的,⽽如果使⽤DMA,就可以轻易实现连续传输,CPU只需等待其完成就好。我想到的⼀个应⽤就是在写SD卡的时候,每次写⼀个块512字节,就可以⽤到,能提⾼SD卡的写⼊数据速率。
其次还可以降低功耗,记得数字集成电路⽼师说过⼀句话“软件上降低数字电路功耗的⼀个⽅法就是减少电平转换。”那么连续通信的时候,像SPI的BSY电平转换会⼤⼤减少!
最后⼀点,虽然效果不⼤,就是如果不是⽤DMA,那么CPU的⼯作就是搬运⼯,把SPI->DR 的内容搬到内存存储起来,⽽如果使⽤DMA,就省略了这个环节!