欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    嵌入式系统及应用 (15).pdf

    • 资源ID:52749039       资源大小:1.66MB        全文页数:21页
    • 资源格式: PDF        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    嵌入式系统及应用 (15).pdf

    嵌入式系统及应用嵌入式系统及应用第十五讲 SPI【课本9.1】课本第课本第9章阐述章阐述串行外设接口串行外设接口SPI、集成电路互联总线集成电路互联总线I2C、触摸感应触摸感应TSC三个模块三个模块,按照按照通用基础知识通用基础知识、构件的使用构件的使用、构件的制作方法构件的制作方法线条来讲解线条来讲解,本讲给出本讲给出SPI模块模块。嵌入式系统及应用嵌入式系统及应用9.1 串行外设接口串行外设接口SPI模块模块9.1.1 串行外设接口串行外设接口SPI的通用基础知识的通用基础知识1.SPI的基本概念的基本概念串行外设接口串行外设接口(Serial Periheral Interface,SPI)是原摩托罗拉公司推出的一是原摩托罗拉公司推出的一种种同步通信接口同步通信接口,主要用于主要用于微处理器与外围扩展芯片的微处理器与外围扩展芯片的板内板内通信通信。SPI一般使用一般使用4条线:串行时钟线条线:串行时钟线SCK、主机主机输入输入/从机输出数据线从机输出数据线MISO、主主机输出机输出/从从机输入数据线机输入数据线MOSI和从机选择线和从机选择线NSS。1)主机与从机主机与从机的概念的概念SPI是典型的主机是典型的主机-从机系统从机系统。提供提供SPI串行时钟的串行时钟的SPI设备称为设备称为SPI主机主机,其其他设备则称为他设备则称为SPI从机从机。第第2 2页页 共共2121页页嵌入式系统及应用嵌入式系统及应用2)主出从入引脚主出从入引脚MOSI与主入从出引脚与主入从出引脚MISO主出从入引脚主出从入引脚是主机输出是主机输出、从机输入数据线从机输入数据线。主入从出引脚主入从出引脚是主机输是主机输入入、从机输出数据线从机输出数据线。3)SPI串行时钟引脚串行时钟引脚SCKSCK引脚发出时钟信号引脚发出时钟信号,控制主机与从机之间的数据传输控制主机与从机之间的数据传输,这就是这就是同步同步通信通信之含义之含义。4)时钟极性与时钟相位时钟极性与时钟相位时钟极性时钟极性(CPOL)表示表示时钟信号时钟信号SCK平时平时(空闲空闲)处于何种电平处于何种电平,有有高电平高电平(CPOL=1)和和低电平低电平(CPOL=0)两种值两种值。时钟相位时钟相位(CPHA)表示时钟信号表示时钟信号SCK的第一个边沿出现在第一位数据的第一个边沿出现在第一位数据传输周期的传输周期的位置位置,有有开始位置开始位置(CPHA=1)和和中央位置中央位置(CPHA=0)两种两种值值。(难点难点)第第3 3页页 共共2121页页嵌入式系统及应用嵌入式系统及应用5)从机选择引脚从机选择引脚NSS一些芯片带有从机选择引脚一些芯片带有从机选择引脚NSS,也称为片选引脚也称为片选引脚。若若MCU的的SPI工工作于主机方式作于主机方式,则该为高电平则该为高电平。若若MCU的的SPI工作于从机方式工作于从机方式,当当NSS为为低电平时表示主机选中了该从机低电平时表示主机选中了该从机,反之则未选中该从机反之则未选中该从机。第第4 4页页 共共2121页页嵌入式系统及应用嵌入式系统及应用2.SPI的数据传输原理的数据传输原理SPI原理原理传输传输原理可以原理可以使用串行时钟线使用串行时钟线SCK、主机输入主机输入/从机输出数据线从机输出数据线MISO、主机输出主机输出/从机输入数据线从机输入数据线MOSI三线描述三线描述。每个工作过程传送每个工作过程传送8位数位数据据,主机发出启动传输信号主机发出启动传输信号,将数据装入将数据装入8位移位寄存器位移位寄存器,同时产生同时产生8个时钟信个时钟信号依次从号依次从SCK引脚送出引脚送出。在在SCK信号的控制下信号的控制下,主机中主机中8位移位寄存器中的数位移位寄存器中的数据依次从据依次从MOSI引脚送出至从机的引脚送出至从机的MOSI引脚引脚,并送入从机的并送入从机的8位移位寄存器位移位寄存器。在此过程中在此过程中,从机的数据也可通过从机的数据也可通过MISO引脚传送到主机中引脚传送到主机中,将之称为将之称为全双工全双工主主-从连接从连接。第第5 5页页 共共2121页页嵌入式系统及应用嵌入式系统及应用3.SPI的时序的时序SPI的数据传输是在时钟信号的数据传输是在时钟信号SCK的控制下完成的的控制下完成的。数据传输过程使用数据传输过程使用CPOL描述时钟极性描述时钟极性,CPHA描述时钟相位描述时钟相位。主机和从机必须使用同样的时钟极主机和从机必须使用同样的时钟极性与时钟相位性与时钟相位,才能正常通信才能正常通信。对发送方编程必须对发送方编程必须清楚二清楚二点:点:(1)接收接收方要求的时钟空闲电平是高电平还方要求的时钟空闲电平是高电平还是低电平是低电平;(2)接收接收方在时钟的上升沿取数还是下降沿取数方在时钟的上升沿取数还是下降沿取数。总体要求是:确保发送数据上线总体要求是:确保发送数据上线时刻比接收方提前时刻比接收方提前1/2周期周期,才能使得才能使得通信通信稳稳定定,据此设据此设定发送方的定发送方的时钟极性与时钟相位时钟极性与时钟相位。第第6 6页页 共共2121页页嵌入式系统及应用嵌入式系统及应用举例举例(难点实例化解析难点实例化解析):设接收方是设接收方是“下降沿取数下降沿取数,空闲电平低电空闲电平低电平平”,CPOL、CPHA应该如何应该如何取值取值?、首先确定首先确定CPOL,因为因为空闲电平低电平空闲电平低电平,所有所有CPOL=0;其次确定其次确定CPHA,根据下降沿取数这个要求根据下降沿取数这个要求,由于空闲电平为低由于空闲电平为低,要要产生下降沿产生下降沿,必须过半个时钟周期必须过半个时钟周期,所以所以时钟信号时钟信号SCK的第一个边沿的第一个边沿需需在在第一位数据传输第一位数据传输开始开始的位置的位置,所以所以CPHA=1,为为SPI初始化编程提供基础初始化编程提供基础。可以类比分析其他情况可以类比分析其他情况。第第7 7页页 共共2121页页嵌入式系统及应用嵌入式系统及应用9.1.2 基于构件的基于构件的SPI通信编程方法通信编程方法1.STM32L431芯片的芯片的SPI对外对外引脚引脚首先要了解芯片的哪些引脚具备首先要了解芯片的哪些引脚具备SPI功能。功能。STM32L431芯片内部具有三个芯片内部具有三个SPI模块,分别是模块,分别是SPI1、SPI2和和SPI3。表表9-1中是根据手册析出的中是根据手册析出的SPI模块使用的引模块使用的引脚脚,注意一个注意一个SPI模块可能分布在不同模块可能分布在不同引脚上,硬件设计时根据引线方便确引脚上,硬件设计时根据引线方便确定。定。第第8 8页页 共共2121页页嵌入式系统及应用嵌入式系统及应用2.SPI构件构件头文件头文件首先在首先在spi.h文件中宏定义文件中宏定义SPI_1、SPI_2所使用的引脚所使用的引脚。设设SPI_1使用使用PTA5,PTA6,PTA7,PTA15分别作为分别作为SPI的的SCK,MISO,MOSI,NSS引脚引脚;设设SPI_2使用使用PTB13,PTB14,PTB15,PTB12分别作为分别作为SPI的的SCK,MISO,MOSI,NSS引脚引脚。第第9 9页页 共共2121页页嵌入式系统及应用嵌入式系统及应用SPI初始化函数的参数初始化函数的参数void spi_init(uint8_t No,uint8_t MSTR,uint16_t BaudRate,uint8_t CPOL,uint8_t CPHA);函数名称:函数名称:spi_init函数参数:函数参数:No:模块号:模块号MSTR:SPI主从机选择主从机选择,0选择为从机选择为从机,1选择为主机选择为主机BaudRate:波特率:波特率,可取可取12000、6000、3000、1500、750、375,单位:单位:b/sCPOL:CPOL=0,SPI时钟时钟平时为低电平平时为低电平;CPOL=1,SPI时钟平时时钟平时为高电平为高电平;CPHA:CPHA=0,相位相位为为0;CPHA=1,相位相位为为1函数返回:函数返回:无无第第1010页页 共共2121页页嵌入式系统及应用嵌入式系统及应用SPI发送一字节数据发送一字节数据uint8_t spi_send1(uint8_t No,uint8_t data);函数名称:函数名称:spi_send1函数参数:函数参数:No:模块号:模块号data:需要发送的一字节数据:需要发送的一字节数据函数返回:函数返回:0:发送失败;:发送失败;1:发送成功:发送成功第第1111页页 共共2121页页嵌入式系统及应用嵌入式系统及应用第第1212页页 共共2121页页.基于基于构件的构件的SPI编程方法编程方法以以STM32L431中同一个芯片的中同一个芯片的SPI_1和和SPI_2之间的通信之间的通信为例,为例,介绍介绍SPI构件的使用方法构件的使用方法。(1)在主函数)在主函数main中,初始化中,初始化SPI模块,具体的参数包括模块,具体的参数包括SPI所用的所用的模块号、主从机模式、波特率、时钟极性和时钟相位。这里将模块号、主从机模式、波特率、时钟极性和时钟相位。这里将SPI_1初始初始化为主机,化为主机,SPI_2初始化为从机初始化为从机。嵌入式系统及应用嵌入式系统及应用(2)开启)开启SPI_2的接收中断。因为的接收中断。因为SPI_2被初始化为从机,所以需要被初始化为从机,所以需要开开SPI_2的接收中断,用于接收从主机发送来的数据。的接收中断,用于接收从主机发送来的数据。(3)在主循环中,通过)在主循环中,通过spi_sendN函数,把函数,把11个字节数据通过主机发个字节数据通过主机发送出去。送出去。(4)在中断函数服务例程中,通过)在中断函数服务例程中,通过SPI_2接收中断服务程序,接收主接收中断服务程序,接收主机发送过来的字节数据,并通过机发送过来的字节数据,并通过User串口转发到串口转发到PC机。机。第第1313页页 共共2121页页嵌入式系统及应用嵌入式系统及应用测试测试工程见工程见电子电子资源“资源“.04-SoftwareCH09SPI-STM32L431”,将”,将SPI_1和和SPI_2模块之间传输的模块之间传输的数据,通过数据,通过用户串口用户串口UART_User输出输出显示,显示,硬件硬件连接连接见工程见工程文档文档,功能,功能如下:如下:(1)使用)使用User串口通信,波特率为串口通信,波特率为115200,无校验;,无校验;(2)初始化)初始化SPI_1和和SPI_2,SPI_1模块作为主机,模块作为主机,SPI_2模块作为从机,模块作为从机,同时使能同时使能SPI_2的接收中断;的接收中断;(3)主机)主机SPI_1向从机向从机SPI_2发送数据,发送数据,SPI_2在接收中断中将接收到的数在接收中断中将接收到的数据通过据通过User串口发送到串口发送到PC机;机;(4)在)在PC机打开串口工具,机打开串口工具,观察观察UART_User串口串口输出输出SPI-Test!字符。字符。第第1414页页 共共2121页页嵌入式系统及应用嵌入式系统及应用AHL-STM32L431引脚连线实物图及样例程序运行演示引脚连线实物图及样例程序运行演示视频视频第第1515页页 共共2121页页嵌入式系统及应用嵌入式系统及应用9.1.3 SPI构件的制作过程构件的制作过程1SPI模块寄存器概述模块寄存器概述构件制作过程的第一步是了解编程所涉及的寄存器。构件制作过程的第一步是了解编程所涉及的寄存器。SPI的每个模块的寄存器的每个模块的寄存器数量和功能基本一致,共有数量和功能基本一致,共有7个寄存器个寄存器。SPI_1模块模块基地址为基地址为0 x4001_3000,其他寄其他寄存器的地址顺序加存器的地址顺序加4字节字节。详细说明见电子资源中的补充阅读材料。详细说明见电子资源中的补充阅读材料。第第1616页页 共共2121页页嵌入式系统及应用嵌入式系统及应用2SPI寄存器结构体类型寄存器结构体类型构件构件制作制作过程通常将过程通常将一个模块的寄存器用一个结构体类型封装起来一个模块的寄存器用一个结构体类型封装起来,方便,方便编程时使用,这些结构体存放在工程文件夹的芯片头文件中,编程时使用,这些结构体存放在工程文件夹的芯片头文件中,SPI模块结构体模块结构体类型为类型为SPI_TypeDef。STM32L431的的SPI模块各口基地址也在芯片头文件模块各口基地址也在芯片头文件(STM32L431xx.h)中以中以宏常数方式给出,直接作为指针常量宏常数方式给出,直接作为指针常量。第第1717页页 共共2121页页嵌入式系统及应用嵌入式系统及应用3SPI构件接口函数原型分析构件接口函数原型分析构件构件制作过程的制作过程的第二步第二步是对接口函数进行分析是对接口函数进行分析。在在spi.h中中,给给出了用于定义所用出了用于定义所用SPI口的宏定义口的宏定义、主机号从机号宏定义主机号从机号宏定义。在在spi.c中中,SPI的初始化的初始化,主要是对主要是对SPI控制寄存器控制寄存器SPIx_CR1、SPIx_CR2进行设置进行设置,使能使能SPI和对应和对应GPIO时钟时钟,定义定义SPI工作模工作模式式、时钟的空闲电平及相位时钟的空闲电平及相位,使能使能SCK、MISO、MOSI、NSS引脚引脚复用功能复用功能,配置配置SPI波特率波特率。SPI是一种通信模块是一种通信模块,它的基本功能就是接收和发送数据它的基本功能就是接收和发送数据。定义定义了发送单字节的函数了发送单字节的函数,接收单字节的函数接收单字节的函数。在这两个函数的基础上在这两个函数的基础上,又封装了发送多个字节的函数又封装了发送多个字节的函数,接收多个字节的函数接收多个字节的函数,除此之外还有除此之外还有使能接收中断使能接收中断、关中断函数等关中断函数等。在在SPI构件中构件中,含义相同的参数含义相同的参数,它它们命名必须是相同的们命名必须是相同的,这样可增加程序的可读性与易维护性这样可增加程序的可读性与易维护性。第第1818页页 共共2121页页嵌入式系统及应用嵌入式系统及应用4SPI构件制作的基本编程步骤构件制作的基本编程步骤实现简单的实现简单的SPI数据传输数据传输主要涉及以下几个寄存器:主要涉及以下几个寄存器:两个控制寄存器两个控制寄存器(SPIx_CR1 和和SPIx_CR2):用于用于SPI使能使能、波特率波特率与传输数据长度控制与传输数据长度控制、主从模式选择主从模式选择、时钟极性与时钟相位配置;时钟极性与时钟相位配置;一个状态寄存器一个状态寄存器(SPIx_SR):用于标志位判断;用于标志位判断;一个数据寄存器一个数据寄存器(SPIx_DR):用来存放已接收或要发送的数据用来存放已接收或要发送的数据。基本编程步骤如下:基本编程步骤如下:(1)将引脚复用为将引脚复用为SPI功能功能。(2)设置控制寄存器设置控制寄存器。(3)发送与接收编程发送与接收编程。第第1919页页 共共2121页页嵌入式系统及应用嵌入式系统及应用5SPI构件部分函数构件部分函数源码源码第第2020页页 共共2121页页嵌入式系统及应用嵌入式系统及应用谢谢!谢谢!第第2121页页 共共2121页页

    注意事项

    本文(嵌入式系统及应用 (15).pdf)为本站会员(刘静)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开