单片机
返回首页

PIC16F877 MSSP模块之SPI通信

2015-12-21 来源:eefocus

SPI模式允许同时、同步发送和接收 8位数据。支持 SPI的所有四种模式。一般用以下三个引脚来完成通信:

• 串行数据输出 (SDO)
• 串行数据输入 (SDI)
• 串行时钟 (SCK)

当工作在从动模式时,可能还需要第 4个引脚:
• 从动选择 (SS)

 

结构框图:

PIC16F877 <wbr>MSSP模块之SPI通信

SSP模块由一个发送/接收移位寄存器(SSPSR)和一个缓冲寄存器(SSPBUF)组成。SSPSR用于器件输入和输出数据的移位,高位在前。在新的数据接收完毕前,SSPBUF保存上次写入SSPSR的数据。一旦8位新数据接收完毕,该字节被送入SSPBUF寄存器。同时缓冲区满标志位BF(SSPSTAT <0>)和中断标志位 SSPIF置1。这种双重缓冲接收方式,允许接收数据被读走之前,开始接收下一个数据。在数据发送/接收期间,任何试图写SSPBUF寄存器的操作都无
效,却会将写冲突检测位WCOL(SSPCON<7>)置1。此时用户必须用软件将WCOL位清零,以判别下一次对SSPBUF的写操作是否成功完成。为确保应用软件有效地接收数据,应该在新数据写入SSPBUF之前,将SSPBUF中的数据读走。
缓冲区满标志位BF(SSPSTAT<0>)用于表示SSPBUF是否已经载入了接收的数据(发送完成)。当SSPBUF中的数据被读取后,BF位即被清零。如果SPI仅仅作为一个发送器,则不必理会这一位。通常可用SSP中断来判断发送或接收是否完成。如果需要接收数据,可从SSPBUF中读取。SSP中断一般用来确定发送/接收何时完成。必须对SSPBUF进行读和/写。如果不打算使用中断方法,用软件查询方法同样可确保不会发生写冲突。

PIC16F877 <wbr>MSSP模块之SPI通信

主控模式的操作
因为主控制器控制着SCK信号,所以它可以在任何时候启动数据传输,同时主控制器通过软件协议来决定从控制器何时发送数据。在主控模式下,数据一旦写入SSPBUF就开始发送或接收。如果SPI仅作为接收器,则SDO输出可以禁止(将其设置为输入口 )。SSPSR寄存器按编程设置的时钟速率,对SDI引脚上的信号进行连续地移位输入,每接收完一个字节,都把其送入 SSPBUF,就象普通的接收字节一样(相应的中断和状态位置1)。这在作为“在线主动监控”方式的接收器应用中是很有用的。时钟极性可通过对SSPCON寄存器的CKP位(SSPCON<4>)进行适当的编程来设定。在主控模式下,SPI 时钟速率(位速率)可由用户编程设定为下面几种方式之一 :
•FOSC/4 (或 TCY)
•FOSC/16 (或 4 • TCY)
•FOSC/64 (或 16 • TCY)
• 定时器2 输出 /2
这里允许的最大数据速率是8.25 Mbps(当晶振为 20 MHz时 )。图 17-6 给出了主控模式的时序图。当CKE位置1时,SDO数据在SCK的第一个时钟边沿前就有效。图中所示输入采样的变化则由SMP位的状态决定。图中同时给出了何时将接收到的数据写入SSPBUF。

PIC16F877 <wbr>MSSP模块之SPI通信

PIC16F877 <wbr>MSSP模块之SPI通信

 

典型应用
PIC16F877 <wbr>MSSP模块之SPI通信

 

进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • CCD图像传感器在微光电视系统中的应用

  • 非常简单的150W功放电路图

  • 一个简单的警笛电路图

  • 优化电路板布局的简单方法

  • 使用NE555和磁簧开关的橱柜照明电路

  • 一种构建12V和230V双直流电源的简单方法

    相关电子头条文章