STM32 SPI通信原理及编程步骤

STM32 SPI通信原理及编程步骤

ID:37956469

大小:356.06 KB

页数:5页

时间:2019-06-03

STM32 SPI通信原理及编程步骤_第1页
STM32 SPI通信原理及编程步骤_第2页
STM32 SPI通信原理及编程步骤_第3页
STM32 SPI通信原理及编程步骤_第4页
STM32 SPI通信原理及编程步骤_第5页
资源描述:

《STM32 SPI通信原理及编程步骤》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STM32SPI通信原理及编程步骤一、简介SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线。SPI接口一般使用4条线通信:MISO主设备数据输入,从设备数据输出。MOSI主设备数据输出,从设备数据输入。SCLK时钟信号,由主设备产生。CS从设备片选信号,由主设备控制。从图中可以看出,主机和从机都有一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节来发起一次传输。寄存器通过MOSI信号线将字节传送给从机,从机也将自己的移位寄存器中的内容通过MISO信号线返回给主机。

2、这样,两个移位寄存器中的内容就被交换。外设的写操作和读操作是同步完成的。如果只进行写操作,主机只需忽略接收到的字节;反之,若主机要读取从机的一个字节,就必须发送一个空字节来引发从机的传输。SPI主要特点有:可以同时发出和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志;写冲突保护;总线竞争保护等。SPI总线四种工作方式SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。如果CPOL=0,串行

3、同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。SPI主模块和与之通信的外设备时钟相位和极性应该一致。数据时钟时序图STM32的SPI功能很强大,SPI时钟最多可以到18Mhz,支持DMA,可以配置为SPI协议或者I2S协议(仅大容量型号支持,战舰STM32开发

4、板是支持的)。二、库函数讲解SPI相关的库函数和定义分布在文件stm32f10x_spi.c以及头文件stm32f10x_spi.h中。STM32的主模式配置步骤如下:1)配置相关引脚的复用功能,使能SPI2时钟我们要用SPI2,第一步就要使能SPI2的时钟。其次要设置SPI2的相关引脚为复用输出,这样才会连接到SPI2上否则这些IO口还是默认的状态,也就是标准输入输出口。这里我们使用的是PB13、14、15这3个(SCK.、MISO、MOSI,CS使用软件管理方式),所以设置这三个为复用IO。GPIO

5、_InitTypeDefGPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);//PORTB时钟使能RCC_APB1PeriphClockCmd(RCC_APB1Periph_SPI2,ENABLE);//SPI2时钟使能GPIO_InitStructure.GPIO_Pin=GPIO_Pin_13

6、GPIO_Pin_14

7、GPIO_Pin_15;GPIO_InitStructure.GPIO_Mode=GPIO_M

8、ode_AF_PP;//PB13/14/15复用推挽输出GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(GPIOB,&GPIO_InitStructure);//初始化GPIOB2)初始化SPI2,设置SPI2工作模式接下来我们要初始化SPI2,设置SPI2为主机模式,设置数据格式为8位,然设置SCK时钟极性及采样方式。并设置SPI2的时钟频率(最大18Mhz),以及数据的格式(MSB在前还是LSB在前)。这在库函数中是通过SPI_Ini

9、t函数来实现的。voidSPI_Init(SPI_TypeDef*SPIx,SPI_InitTypeDef*SPI_InitStruct);跟其他外设初始化一样,第一个参数是SPI标号,这里我们是使用的SPI2。下面我们来看看第二个参数结构体类型SPI_InitTypeDef的定义:typedefstruct{uint16_tSPI_Direction;uint16_tSPI_Mode;uint16_tSPI_DataSize;uint16_tSPI_CPOL;uint16_tSPI_CPHA;uint

10、16_tSPI_NSS;uint16_tSPI_BaudRatePrescaler;uint16_tSPI_FirstBit;uint16_tSPI_CRCPolynomial;}SPI_InitTypeDef;初始化的范例格式为:SPI_InitTypeDefSPI_InitStructure;SPI_InitStructure.SPI_Direction=SPI_Direction_2Lines_FullDuplex;//双线双向全双工

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。