串行外设接口(SPI).PPT

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

* MAX5253测试程序 void main(void) { InitSysCtrl(); //初始化系统,使能SPI时钟 DINT; IER = 0x0000; IFR = 0x0000; InitPieCtrl(); //初始化PIE控制寄存器 InitPieVectTable(); // 初始化PIE参数表 InitSpi(); EINT; // spi initialization; for(;;) { if(Spi_TxReady() == 1) SpiaRegs.SPITXBUF =0x1400; delay_loop(); if(Spi_TxReady() == 1) SpiaRegs.SPITXBUF =0x5800; delay_loop(); if(Spi_TxReady() == 1) SpiaRegs.SPITXBUF =0x9C00; delay_loop(); if(Spi_TxReady() == 1) SpiaRegs.SPITXBUF =0xDFFF; delay_loop(); if(Spi_TxReady() == 1) SpiaRegs.SPITXBUF =0x4000; delay_loop(); } } 采用查询方式实现. * 相当于教材的第六章。 6.3为扩充内容,介绍了典型的SPI接口芯片。 6.4结合实验要求介绍了软件编程。 * 多通道缓冲串口(第九章)相当于增强型SPI接口。 * 多通道缓冲串口(第九章)相当于增强型SPI接口。 * SCI的数据长度1-8位。SCI的波特率寄存器16位。 四种时钟模式:无/有相位延迟的下降沿、无/有相位延迟的上降沿。 外部引脚:SPISIMO从输入/主输出(输出) SPISOMI从输出/主输入(输入) /SPISTE(SPI发送使能引脚) SPICLKE(SPI串行时钟引脚) 同步串行接口必须有靠同一个时钟同步,只需主控制器设置波特率。 而异步串口依靠各自的时钟同步,必须保证线路两端的波特率相同。 * SPI接口可以接收或发送16位数据,并且接收和发送都是双缓冲。 SPITXBUF:包含下一个要发送的数据; SPIRXBUF: 包含接收的数据; SPIDAT:作为发送接收移位寄存器使用。 阴影部分为与FIFO有关的寄存器。 * 如果两个DSP间通过SPI进行通信,需要一个为主模式,一个工作于从模式。 * 通常DSP工作于主模式,而外设芯片为从模式,无需进行配置。 * 双缓冲结构,但SPIDAT可直接写(右对齐),不建议直接读。 发送时是先移出最高位,接收时是先接收最低位。 SPI可工作于全双工或半双工。 * SPITXINT仅用于SPI FIFO模式,标准模式下仅用SPIRXINT一个中断向量。 标准模式下需要在ISR中判断是SPI中断还是超时中断。 * 因为数据长度为1位,因此,接收一位就将SPIDAT中数据送SPIRXBUF。 与SCI不同,没有起始位、停止位和校验位等,只有数据位。 * SCI的波特率最大值为LSPCLK/16,且需要包含额外的起始位、停止位等。 显而易见,SPI无法工作于较低的波特率,因此仅适于短距离的高速通信。 * 灵活的时序设置便于和多种串行外设接口。 下面举例说四种时钟模式。 * 提示:某一种SPI接口的外设芯片可能支持几种时钟模式,对于实验中采用MAX525芯片,测试一下支持那几种时钟模式。 * SPIDAT寄存器为16位,这里为了简化时序图,采用了8位方法。 具体传输过程见下面的时序图。 * 对于DAC芯片MAX5253而言,通常无需连接引脚SPIMISO。 而对于ADC芯片,通常无需连接SPIMOSI引脚。 * 菊花链式传输时间较长,但只需一个片选信号。 共享总线式各个SPI芯片的传输时间相同,但每个芯片需一个IO引脚作为片选。 基于SPI接口的多点温度检测。 * 复位后SPI接口不工作。使用SPI接口必须使能SPI时钟。 * 初始化过程见下面的函数InitSpi()。 * 可以时序分析和实验测试MAX5253可以采用那些时钟模式。 也可以设置不同的波特率,但要小于10MHz。 * 如果使用中断方式,标准SPI模式下只能使用SPIRX中断,在ISR中判断到底发生了什么事件。 * 注意在InitSysCtr()中使能SPI时钟。 * 1、SCI的主要特点 F2812包含两个SCI接口,记做SC

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档