SPI与模拟量转换.ppt

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第十章 SPI与模拟量转换 主要内容 SPI的基本工作原理 GP32的SPI模块编程基础 A/D和D/A转换的基本问题 MC908GP32内部A/D转换模块 GP32 MCU A/D转换编程实例 *利用SPI进行高位扩A/D展接口 *利用SPI进行高位扩D/A展接口 *扩展实现D/A转换 *常用传感器及采样电路简介 10.1 SPI的基本工作原理 10.1.1 SPI的主要特性 ①全双工。 ②主、从工作方式。 ③发送和接收的数据寄存器相互独立从而实现双缓存操作。 ④主机可以设定4种工作频率(最大可达总线频率的二分之一)。 ⑤从机最大工作频率等于总线频率。 ⑥发送结束、接收结束、工作方式错误和溢出错误四种中断标志。 ⑦一个主控MCU和几个从控MCU相互连接。 ⑧几个MCU相互连接构成一个多主机系统。 ⑨一个主控MCU和一个或多个从属外设相互连接。 10.1.2 SPI的数据传输 利用SPI进行MCU之间的数据传输时,主机的程序控制着数据传输,从机的程序配合主机工作,完成传输过程。图10-1是SPI的主-从连接示意图。具体工作过程: 从主机CPU发出启动传输信号开始,此时要传送的数据装入8位移位寄存器,同时产生8个时钟信号从SPSCK引脚依次送出; 在SPSCK信号的控制下,主机中8位移位寄存器中的数据依次从MOSI引脚送出,到从机的MOSI引脚送入它的8位移位寄存器; 在此过程中,从机的数据也通过MISO引脚到主机中。 10.1.3 SPI模块的时序 SPI是在同步信号SPSCK的控制下完成数据的传输,根据控制位CPHA和CPOL的不同,数据线和时钟线产生4种可能的时序。图10-2、图10-3、图10-4和图10-5给出了数据线与SPSCK之间的关系。 图10-2 CPHA=0,CPOL=0时的数据/时钟时序图 10.1.3 SPI模块的时序 图10-3 CPHA=0,CPOL=1时的数据/时钟时序图 10.1.3 SPI模块的时序 图10-4 CPHA=1,CPOL=0时的数据/时钟时序图 10.1.3 SPI模块的时序 图10-5 CPHA=1,CPOL=1时的数据/时钟时序图 10.2 GP32的SPI模块编程基础 10.2.1 SPI模块的引脚 SPI模块通常引出4个引脚,分别为:SS、MISO、MOSI、SPSCK。 (1)从机选择引脚SS (Slave select) 若SPI工作于主机方式,置SS为高电平;若SPI工作于从机方式,当SS=0时,表示主机选中了该从机,反之则未选中该从机。 (2)主出从入引脚MOSI (Master out/slave in) MOSI是主机输出、从机输入数据线。 (3)主入从出引脚MISO (Master in/slave out) MISO是主机输入、从机输出数据线。 (4)SPI串行时钟引脚SPSCK(SPI serial clock) SPSCK用于控制主机与从机之间的数据传输。 10.2.2 SPI模块的寄存器 SPI模块有3个寄存器:数据寄存器SPDR,控制寄存器SPCR,状态和控制寄存器SPSCR。 (1)数据寄存器SPDR(SPI Data Register) SPDR由两个独立的数据寄存器组成:只能写入的发送数据寄存器和只能读出的接收数据寄存器,它们共用一个地址$0012。 写入时,为要发送的8位数据,记为:T7~T0; 读出时,为接收的8位数据,记为:R7~R0。 (2)控制寄存器SPCR(SPI Control Register) SPCR复位时写一次,以后不再对其写入,不再更改对SPI的设置,地址是$0010,各位定义: 3.SPI状态和控制寄存器SPSCR(SPI Status and Control Register) SPSCR的地址:$0011,定义为: SPI的波特率 = CGMOUT/(2xBD)。上式中:CGMOUT为时钟产生模块CGM的基准时钟输出。BD是分频系数,由SPR1、SPR0位决定: SPR1、SPR0 = 00 01 10 11 BD = 2 8 32 128 10.2.3 SPI编程基本方法 (1)SPI初始化 第一步: 写控制字到SPCR,确定是否允许SPI接收中断、SPI的工作方式、时钟极性、时钟相位、是否允许SPI等。 第二步:写控制字到SPSCR,确定SPI的波特率。 (2)发送一个数据与接收

文档评论(0)

ranfand + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档