07SPI总线同步串行通信 - PC机与单片机通信技术.PPT

07SPI总线同步串行通信 - PC机与单片机通信技术.PPT

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
07SPI总线同步串行通信 - PC机与单片机通信技术

SPI同步串行通信;项目功能 项目知识点与技能点 硬件电路 软件设计 项目实施;【项目功能】;【项目知识点与技能点】;SPI总线通信协议概述;ATmega16单片机SPI接控制与数据传输过程;;2)SPI初始化及数据传送程序示例 下面将以ATmega16单片机为例说明如何将SPI设置为主机,以及如何进行简单的数据传送。MOSI对应ATmega16单片机PB5引脚,MISO对应ATmega16单片机PB6引脚,SCK对应ATmega16单片机PB7管脚,SS对应ATmega16单片机PB4管脚。;(1)设置SPI为主机并进行简单的数据发送。 void spi_masterset(void) { /* 设置MOSI 和SCK 为输出,其他为输入 */ DDRB = (1DDB5)|(1DDB7); /* 使能SPI 主机模式,设置时钟速率为fck/16 */ SPCR = (1SPE)|(1MSTR)|(1SPR0); } void spi_mastertransmit(char data) { /* 启动数据传输 */ SPDR = data; /* 等待传输结束 */ while(!(SPSR (1SPIF))) ; };(2)设置SPI为从机并进行简单的数据接收。 void spi_slaveset(void) { /* 设置MISO 为输出,其他为输入 */ DDRB = (1DDB6); /* 使能 SPI */ SPCR = (1SPE); } char spi_slavereceive(void) { /* 等待接收结束 */ while(!(SPSR (1SPIF))) ; /* 返回数据 */ return SPDR; }; 3)SS引脚的功能 ·从机方式 当SPI 配置为从机时,从机选择引脚SS 总是为输入。SS 为低将激活SPI 接口, MISO成为输出( 用户必须进行相应的端口配置) 引脚,其他引脚成为输入引脚。; ·主机方式 当SPI被配置为主机时(寄存器SPCR的MSTR位置“1”),用户可以决定SS引脚方向。如果SS引脚被设为输出,该引脚将作为通用输出口,不影响SPI系统,通常用于驱动从机的SS引脚。;ATmega16 SPI接口相关的寄存器简单介绍; ? Bit 5 – DORD: 数据次序 DORD 置位时数据的LSB 首先发送;否则数据的MSB 首先发送。 ? Bit 4 – MSTR: 主/ 从选择 MSTR置位时选择主机模式,否则为从机。如果MSTR为1”,SS配置为输入,但被拉低,则MSTR 被清零,寄存器SPSR 的SPIF 置位。用户必须重新设置MSTR 进入主机模式。 ? Bit 3 – CPOL: 时钟极性 CPOL 置位表示空闲时SCK 为高电平;否则空闲时SCK 为低电平。 ? Bit 2 – CPHA: 时钟相位 CPHA 决定数据是在SCK 的起始沿采样还是在SCK 的结束沿采样。 ? Bits 1, 0 – SPR1, SPR0: SPI 时钟速率选择1 与0 ; 确定主机的SCK 速率。SPR1 和SPR0 对从机模式没有影响。SCK和振荡器频率fOSC之间的关系下表所示。 SPI2X SPR1 SPR0 SCK频率(MHz) 0 0 0 fOSC/4 0 0 1 fOSC/16 0 1 0 fOSC/64 0 1 1 fOSC/128 1 0 0 fOSC/2 1 0 1 fOSC/8 1 1 0 fOSC/32 1 1

文档评论(0)

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

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

1亿VIP精品文档

相关文档