首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

哈工大DSP精品讲义!!!(连载)

好多啊  楼主不能一起发上来吗

第9章 串行外设接口SPI

SPI是一个高速同步串行输入/输出端口,传送速率可编 程,应用:外部移位寄存器、D/A转换器、 A/D转换器、 串行EEPROM、LED显示驱动器等外部设备进行扩展。

9.1 串行外设接口的结构

4个外部引脚,以下引脚都可用作数字I/O引脚。

* SPISIMO,SPI从输入、主输出;

* SPISOMI,SPI主输入、从输出;

* SPICLK,SPI时钟;

* SPISTE*,SPI从发送使能。

SPI模块中有9个寄存器用于控制该模块的操作:

(1)SPICCR:SPI配置控制寄存器。

(2)SPICTL:SPI操作控制寄存器。

(3)SPISTS:SPI状态寄存器。

(4)SPIBRR:SPI波特率寄存器。

(5)SPIRXEMU:SPI仿真缓冲寄存器。

(6)SPIRXBUF:SPI串行输入缓冲寄存器。

(7)SPITXBUF:SPI串行发送缓冲寄存器。

(8)SPIDAT:SPI串行数据寄存器。

(9)SPIPRI:SPI优先级控制。

9.2 SPI操作

图9-2是SPI用于两个控制器(一个主控制器和一个从

控制器)通信的典型连接方式。

SPI主控制器 SPI从控制器

SPISIMO 主出/从入 SPISIMO

SPISTE* SPI选通 SPISTE*

SPISOMI 主入/从出 SPISOMI

SPICLK 串行时钟 SPICLK

SPI有两种工作模式:主模式和从模式,操作模式由SPICTL.2(MASTER/SLAVE位)决定。 主控制器控制SPICLK信号,通过发出SPICLK信号启动数据发送,从控制器则通过检测SPICLK信号接收数据。一个主控制器可以连接多个从控制器,但是一次只允许一个从控制器给主控制器发送数据


SPI可工作于主模式或从模式。

SPICTL.2位---MASTER/SLAVE用来选择操作模式和 SPICLK的源。

1)主模式

将Master的数据传送给Slave,8位数据传送,传送完毕,申请中断。

SPIMOSI SPIMOSI

SPICLK SPICLK

(2)从模式

SPIMISO SPIMISO

SPISTE SPISTE

SPICLK SPICLK

时钟

8位数据传送,传送完毕,申请中断。


9.3 串行外设接口中断

有五个控制位用于初始化串行外设接口的中断:

SPI中断使能位:SPI INT ENA (SPICTL.0);

SPI中断标志位:SPI INT FLAG(SPISTS.6);

SPI超限中断使能位:OVERRUN INT ENA(SPICTL.4);

SPI接收器超限中断标志位:RECEIVER OVERRUN FLAG(SPISTS.7)

SPI中断优先级选择位:SPI PRIORITY(SPIPRI.6)。

9.4 数据格式

MSB 移位寄存器SPIDAT LSB

SPI通信时,要发送的数据从SPIDAT寄存器的MSB依次移出,接收的数据则从SPIDAT的LSB依次移入。

SPI数据字符位数(1-16位)由SPICCR.3-0指定。当写入SPIDAT或SPITXBUF时,数据必须是左对齐的。

数据从SPIRXBUF读回时是右对齐的。

9.5 SPI波特率和时钟模式

SPI模块支持125种不同的波特率和4种不同的时钟模式。SPI最大波特率为CLKOUT频率的四分之一。

9.5.1 SPI波特率的确定

SPI波特率取决于CLKOUT和SPIBRR的值。

(1)对于SPIBRR3-127 SPI波特率=CLKOUT/(SPIBRR+1)

(2) 对于SPIBRR0-2 SPI波特率=CLKOUT/4 SPI最大波特率=CLKOUT/4=10MHz

9.5.2 SPI时钟模式

SPI有四种时钟模式,由CLOCK POLARITY 和CLOCK PHASE位控制。 CLOCK POLARITY 位选择时钟的有效沿是上升沿还是下降沿, CLOCK PHASE位选择是否有半个时钟周期的延时。

(1)下降沿,无延时:SPI在时钟下降沿发送数据,在时钟的上升沿接收数据;

(2)下降沿,有延时:SPI在时钟下降沿前半个周期送数据,在时钟的下降沿接收数据;

(3)上升沿,无延时:SPI在时钟上升沿发送数据,在时钟的下降沿接收数据;

(4)上升沿,有延时:SPI在时钟上升沿前半个周期发送数据,在时钟的上升沿接收数据。

9.6 SPI的复位和初始化

系统复位使SPI管脚功能被选定为通用输入,要对SPI的配置,需要做以下工作:

(1)设置SPI SW RESET位(SPICCR.7)的值为0,强制SPI复位;

2)初始化SPI的配置、格式、波特率和管脚功能为期望值;

(3)设置SPI SW RESET位为1,从复位状态释放SPI;

4)向SPIDAT或SPITXBUF写数据;

(5)数据发送完成后(SPISTS.6=1),读取SPIRXBUF已确定接收的数据。


SPI应用实例(控制串行D/A)

DAC714是美国BB公司生产的16位具有串行接口的数模

转换器,电压输出型,输出范围是-10V+10V。

串行时钟

数据输入

使能引脚

串行数据

输入引脚

数据更新

使能引脚

2407 DAC714 SPISIMO 串行数据 SDI

SPISTE* SPI选通 A0 UP/ SPISOMI A1*

SPICLK 串行时钟 SPICLK

,SPI时钟模式应为下降沿,无延

时。即SPI在时钟下降沿发送数据,在时钟的上升沿

将数据锁存到DAC714。

第10章 CAN控制器模块

世界向着网络化方向发展,测控系统也不例外。 CAN总线的出现,使控制系统的网络化成为可能,是国际公认的一种现场总线协议。

CAN (Controller Area Network)总线是德国Bosch 公司为解决现代汽车中众多的控制单元与测试仪器之间的数据交换而开发的一种串行数据通信协议。

CAN总线问世以来,以高效率、低成本和快速性等特点 迅速在汽车电子、测量仪器、控制系统得到广泛的应用。

返回列表