- 1、本文档共13页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
ARM 学习资料 SPI 基本内容 嵌入式技术 如何使用 SPI 数据手册 SPI 全双工通信 STM32 SPI资料
SPI(Serial Peripheral Interface)总线 :串行外围总线接口
SPI总线的简介:
SPI是由摩托罗拉公司开发的全双工同步串行总线,没有总线仲裁机制,所以工作在单主机系统中。主设备启动与从设备的同步通讯,从而完成数据的交换。对于只能做从机的器件接口来说,SPI接口由SDI(串行数据输入),SDO(串行数据输出),SCK(串行移位时钟)和CS(从使能信号)。通讯时,数据由SDO输出,SDI输入,数据在时钟的上升沿或者下降沿由SDO输出,在紧接着的下降沿或者上升沿由SDI读入,这样经过8/16帧,以完成8/16位数据的传输。
对于有的微控制器来说,它的硬件SPI即可做主机,也可以做从机,即可实现主从配置,MOSI:主出从入、MISO:主入从出、SCK:串行时钟、SS:从属选择。(当做主机输出时,该信号用于选中需要访问的从机,SS输入高电平,外部决定其为主机;当做从机时,SS为输入或者一般的IO口使用)。常用的SPI接法:在软件配置的条件下SS不使用。
SPI总线的通信时序
在SPI通信中,在全双工模式下,发送和接收是同事进行的
数据传输的时钟基来自主控制器的时钟脉冲;摩托罗拉没有定义任何通用的SPI时钟的规范,最常用的时钟设置是基于时钟极性CPOL和时钟相位CPHA两个参数。
CPOL=0,表示时钟的空闲状态为低电平
CPOL=1,表示时钟的空闲状态为高电平
CPHA=0,表示同步始终的第一个边沿(上升或者下降)数据被采样
CPHA=1,表示同步始终的第二个边沿(上升或者下降)数据被采样
即CPOL和CPHA的设置决定了数据采样的时钟沿。
在多个从设备的系统中,每个设备需要独立的使能信号,硬件比I2C系统复杂
没有应答机制确定是否收到数据,没有I2C总线系统安全。
SPI主机与之通信的从机的时钟极性和相位应该一致
主设备SPI时钟和极性的配置由从机来决定
主设备的SDO、SDI和从设备的SDO、SDI一致
主从设备是在SCLK的控制下,同时发送和接受数据,并通过两个双向移位寄存器来交换数据。
工作原理如下:上升沿输出数据,下降沿输入数据
(6)SPI的四种工作模式
SPI通信是串行发送或接收数据的,即一位一位的发送和接收、且传输一般是高位MSB在前,低位在后LSB。
SPI总线通信的软件模拟
根据从机来选择SPI的工作模式(SPI0、SPI1、SPI2、SPI3),本例选择SPI0
上升沿输入数据,下降沿输出数据(AT45DB161D)
主机发送数据,即从机接收数据
SCK=0 ;
MOSI=n(1或0); //接从机的SDI引脚
Asm(NOP); //也许有适当的延时以使数据稳定
SCK=1; //产生一个上升沿,也就是在上升沿来时把数据读走
主机接收数据,即从机发送数据(接收一位数据)
SCK=1; //
SCK=0; //产生一个下降沿
Bit=MISO; //连接从机的SDO引脚
主机向从机写入一个字节的数据
Void SPI_Write(unsigned char data)
{
Uchar i;
Bit temp;
For(i=0;i8;i++)
{
Temp=(bit)(dat0x80);
Sck=0;
MOSI=temp;
Asm(NOP);
SCK=1; //产生一个上升沿
Data=data1;//传输下一位数据
}
}
d):从机向主机发送一个字节的数据
Uchar spi _read(void)
{
Uchar i,data =0;
For(i=0;i8;i++)
{
Data=data1;
Sck=1;
SCK=0;
Data|=MISO;//连接从机的SDO引脚
}
Return data;
}
STM32中的硬件SPI
特点:
(1)2个SPI接口:SPI1位于告诉总线的APB2总线上、SPI2位于低俗的APB1总线上。
(2)硬件接口有:3根弦的全双工同步通讯;2根线的单双工同步通讯;1根线的双向数据线(另外一根时钟线)
数据帧宽度可编程:支持8位和16位数据传输格式。(SPI_CR1的DFF位)
可编程的数据传输顺序:高位在前或者低位在前(SPI_CR1寄存器中的LSBFIRST位)
可作为主设备也可作从设备(SPI_CR1寄存器的MSTR位)
可编程的位传输速率:在主/从模式下,最大都可达18MHZ(SPI_CR1寄存器中的BR[2:0]位)
可通过硬件或软件控制主从设备的NSS引脚,使用软件时,可动态改变主从模式
可编程的时钟极性CPOL和时钟相位CPHA,可选择SPI四种模式中的一种
带终端性能的发送和接受标志:发送缓冲区空(SPI_SR寄存器中的TXE位),接收缓冲区非空(SPI_SR中的RXNE位
文档评论(0)