stm32的spi通信总结(含dma)

stm32的spi通信总结(含dma)

ID:18458339

大小:702.00 KB

页数:15页

时间:2018-09-18

stm32的spi通信总结(含dma)_第1页
stm32的spi通信总结(含dma)_第2页
stm32的spi通信总结(含dma)_第3页
stm32的spi通信总结(含dma)_第4页
stm32的spi通信总结(含dma)_第5页
资源描述:

《stm32的spi通信总结(含dma)》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、STM32---SPI(DMA)通信的总结(库函数操作)本文主要由7项内容介绍SPI并会在最后附上测试源码供参考:1.SPI的通信协议2.SPI通信初始化(以STM32为从机,LPC1114为主机介绍)3.SPI的读写函数4.SPI的中断配置5.SPI的SMA操作6.测试源码7.易出现的问题及原因和解决方法一、SPI的通信协议SPI(SerialPeripheralInterface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换

2、。SPI接口一般由4根线组成,CS片选信号(有的单片机上也称为NSS),SCLK时钟信号线,MISO数据线(主机输入从机输出),MOSI数据线(主机输出从机输入),CS决定了唯一的与主设备通信的从设备,如没有CS信号,则只能存在一个从设备,主设备通过产生移位时钟信号来发起通讯。通讯时主机的数据由MISO输入,由MOSI输出,输入的数据在时钟的上升或下降沿被采样,输出数据在紧接着的下降或上升沿被发出(具体由SPI的时钟相位和极性的设置而决定)。一、以STM32为例介绍SPI通信1.STM32f10

3、3带有3个SPI模块其特性如下:2SPI初始化初始化SPI主要是对SPI要使用到的引脚以及SPI通信协议中时钟相位和极性进行设置,其实STM32的工程师已经帮我们做好了这些工作,调用库函数,根据自己的需要来修改其中的参量来完成自己的配置即可,主要的配置是如下几项:l引脚的配置SPI1的SCLK,MISO,MOSI分别是PA5,PA6,PA7引脚,这几个引脚的模式都配置成GPIO_Mode_AF_PP复用推挽输出(关于GPIO的8种工作模式如不清楚请自己百度,在此不解释),如果是单主单从,CS引脚

4、可以不配置,都设置成软件模式即可。l通信参数的设置1.SPI_Direction_2Lines_FullDuplex把SPI设置成全双工通信;2.在SPI_Mode里设置你的模式(主机或者从机),3.SPI_DataSize是来设置数据传输的帧格式的SPI_DataSize_8b是指8位数据帧格式,也可以设置为SPI_DataSize_16b,即16位帧格式4.SPI_CPOL和SPI_CPHA是两个很重要的参数,是设置SPI通信时钟的极性和相位的,一共有四种模式在库函数中CPOL有两个值SPI

5、_CPOL_High(=1)和SPI_CPOL_Low(=0).CPHA有两个值SPI_CPHA_1Edge(=0)和SPI_CPHA_2Edge(=1)CPOL表示时钟在空闲状态的极性是高电平还是低电平,而CPHA则表示数据是在什么时刻被采样的,手册中如下:我的程序中主、从机的这两位设置的相同都是设置成1,即空闲时时钟是高电平,数据在第二个时钟沿被采样,实验显示数据收发都正常。(要特别注意极性和相位的设置否则,数据传输会出现错位的现象)一般主从机的这两个位要设置的一样,但是网上也有人说不能设置

6、成一样的,在后文中我对主从机极性和相位的配置的16种情况都做了测试,结果见下文。下图很好的描述了4种模式下的时序状况引用网友的一句话::“SPI主模块和与之通信的外设备时钟相位和极性应该一致。个人理解这句话有2层意思:其一,主设备SPI时钟和极性的配置应该由外设的从设备来决定;其二,二者的配置应该保持一致,即主设备的SDO同从设备的SDO配置一致,主设备的SDI同从设备的SDI配置一致。因为主从设备是在SCLK的控制下,同时发送和接收数据,并通过2个双向移位寄存器来交换数据。”1.SPI_Bau

7、dRatePrescaler波特率的设置这在主机模式中,这一位的设置直接决定了通信的传输速率,而从机的设置不会影响数据传输的速率,手册中有这样一句话:(实际测试中发现:当STM32作为从机时,它对波特率的设置会影响数据的通信,特别是在大数据两传输时,当主机SPI时钟设置为15M时,STM32从机如果是2分频即18M则会在多次传输时出现错误,我记得在资料中看到过有前辈的经验贴说SPI从机的时钟设置不能高于SPI主机的时钟设置,虽然理论上从机的时钟设置不影响SPI通信,但是在试验中我也验证,当STM

8、32从机时钟设为4分频9M,低于15M时,通信就不会出现问题。所以SPI从机波特率的设置最好低于SPI主机波特率的设置。)2.SPI_FirstBit这一位是设置首先传输的高字节还是低字节SPI_FirstBit_MSB是先传输高字节,SPI_FirstBit_LSB是先传输低字节注意在初始化函数里还有两项重要的内容就是在初始化之前先使能SPI的时钟和在初始化配置完成后使能SPI。(………..初始化配置……………)一、SPI的读写函数SPI有一个16位的数据寄存器SPI_DR,它对应两个缓冲区,

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

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

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