- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
STM32的SPI通信总结含DMA
STM32---SPI(DMA)通信的总结(库函数操作)
本文主要由7项内容介绍SPI并会在最后附上测试源码供参考:
SPI的通信协议
SPI通信初始化(以STM32为从机,LPC1114为主机介绍)
SPI的读写函数
SPI的中断配置
SPI的SMA操作
测试源码
易出现的问题及原因和解决方法
SPI的通信协议
SPI(Serial Peripheral Interface)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。SPI 接口一般由4根线组成,CS片选信号(有的单片机上也称为NSS),SCLK时钟信号线,MISO数据线(主机输入从机输出),MOSI数据线(主机输出从机输入),CS 决定了唯一的与主设备通信的从设备,如没有CS 信号,则只能存在一个从设备,主设备通过产生移位时钟信号来发起通讯。通讯时主机的数据由MISO输入,由MOSI 输出,输入的数据在时钟的上升或下降沿被采样,输出数据在紧接着的下??或上升沿被发出(具体由SPI的时钟相位和极性的设置而决定)。
以STM32为例介绍SPI通信
STM32f103 带有3个SPI模块其特性如下:
SPI 初始化
初始化SPI 主要是对SPI要使用到的引脚以及SPI通信协议中时钟相位和极性进行设置,其实STM32的工程师已经帮我们做好了这些工作,调用库函数,根据自己的需要来修改其中的参量来完成自己的配置即可,主要的配置是如下几项:
引脚的配置
SPI1的SCLK, MISO ,MOSI分别是PA5,PA6,PA7引脚,这几个引脚的模式都配置成GPIO_Mode_AF_PP 复用推挽输出(关于GPIO的8种工作模式如不清楚请自己百度,在此不解释),如果是单主单从,CS引脚可以不配置,都设置成软件模式即可。
通信参数的设置
SPI_Direction_2Lines_FullDuplex把SPI设置成全双工通信;
在SPI_Mode 里设置你的模式(主机或者从机),
SPI_DataSize是来设置数据传输的帧格式的SPI_DataSize_8b是指8位数据帧格式,也可以设置为SPI_DataSize_16b,即16位帧格式
SPI_CPOL和SPI_CPHA是两个很重要的参数,是设置SPI通信时钟的极性和相位的,一共有四种模式
在库函数中 CPOL有两个值SPI_CPOL_High(=1)和SPI_CPOL_Low ( =0).
CPHA有两个值SPI_CPHA_1Edge (=0) 和SPI_CPHA_2Edge(=1)
CPOL表示时钟在空闲状态的极性是高电平还是低电平,而CPHA则表示数据是在什么时刻被采样的,手册中如下:
我的程序中主、从机的这两位设置的相同都是设置成1,即空闲时时钟是高电平,数据在第二个时钟沿被采样,实验显示数据收发都正常。
(要特别注意极性和相位的设置否则,数据传输会出现错位的现象)
一般主从机的这两个位要设置的一样,但是网上也有人说不能设置成一样的,在后文中我对主从机极性和相位的配置的16种情况都做了测试,结果见下文。
下图很好的描述了4种模式下的时序状况
引用网友的一句话::
“ SPI主模块和与之通信的外设备时钟相位和极性应该一致。个人理解这句话有 2层意思:其一,主设备SPI时钟和极性的配置应该由外设的从设备来决定;其二,二者的配置应该保持一致,即主设备的SDO同从设备的SDO配置一致,主设备的 SDI同从设备的SDI配置一致。因为主从设备是在SCLK的控制下,同时发送和接收数据,并通过2个双向移位寄存器来交换数据。 ”
SPI_BaudRatePrescaler 波特率的设置
这在主机模式中,这一位的设置直接决定了通信的传输速率,而从机的设置不会影响数据传输的速率,手册中有这样一句话:
(实际测试中发现:当STM32作为从机时,它对波特率的设置会影响数据的通信,特别是在大数据两传输时,当主机SPI时钟设置为15M时,STM32从机如果是2分频即18M则会在多次传输时出现错误,我记得在资料中看到过有前辈的经验贴说SPI从机的时钟设置不能高于SPI主机的时钟设置,虽然理论上从机的时钟设置不影响SPI通信,但是在试验中我也验证,当STM32从机时钟设为4分频 9M,低于15M时,通信就不会出现问题。所以SPI从机波特率的设置最好低于SPI主机波特率的设置。)
SPI_FirstBit 这一位是设置首先传输的高字节还是低字节
SPI_FirstBit_MSB 是先传输高字节,SPI_FirstBit_LSB 是先传输低字节
注意在初始化函数里还有两项重要的内容就是在初始化之前先使能SPI的时钟和在初始化配置完成后使能SPI。
(………..初始化配置……………)
SPI的读写函
您可能关注的文档
最近下载
- RBA6.0责任商业联盟行为准则管理体系全套程序文件汇编(含表格).pdf VIP
- 2024年时事政治知识点汇总.pdf VIP
- 预制舱安装方案.doc
- 三氯化铝(MSDS)安全技术说明书.pdf VIP
- 强责任转作风、严纪律、提效能活动心得体会范文(通用9篇).doc
- 肿瘤学复习重点总结.docx VIP
- 任务一:家庭垃圾我会分--垃圾分类我能行 (教案)浙教版劳动二年级上册.docx
- 第8单元 第24章 第1节 人口增长与环境保护2023-2024学年八年级下册生物同步教学设计(北师大版).docx
- 《HSK标准教程4上》第1课《简单的爱情》自用课件.pptx
- 2021必威体育精装版苏教版科学(2017)六年级上册教学计划及教学进度表.docx
文档评论(0)