ADμC812串行外设接口_第1页
ADμC812串行外设接口_第2页
ADμC812串行外设接口_第3页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、AD口 C812的串行外设接口 vSPI)及其应用日期:2004-12-10来源:单片机与嵌入式系统应用作者:李素芬 李冈U字体:大中小摘要:ADu C812是一种新型的集成12位数据采集系统。它的串行外设接口SPIvserial peripheral interface)可进行主机和多片从外围器件的信息传递,即主机对从机的控制及从机向主机提供各种信息等,从而实现系统之间的各种控制和操作。关键词:ADy C812串行通信SPI串行端口概述ADu C812是一种全集成的12位数据采集系统。它在单个芯片内包含了高性能的自校准多通道ADC、2个12位DAC以及可编程的8位MCU与8051兼容)。为便

2、于 MCU与各种外围设备进行通信,AD C812提供了 3种串行I/O端口: UART接口、I2C兼容的串行接口和串行外设接口 SPI )。其中,SPI接口是工 业标准的同步串行接口,是一种全双工、三线通信的系统。它允许MCU与各种外围设备以串行方式 8位数据同时、同步地被发送和接收)进行通信。在SPI接口中,数据的传输需要1个时钟信号和两条数据线。SPI可工作在主模式或从模式下。在主模式,每一位数据的发送/接收需要1次时钟作用;而在从模式下,每一位数据都是在接收到时钟信号之后才发送/接收。1个典型的SPI系统包括1个主MCU和1个或几个从外围器件。SPI接口可设置成在发送/接收1个字节的结束

3、时产生1次中断。主时钟可以通过编程而成为不同的状态,既可编程为4种不同主波特率的任一种,又可对时钟的极性和相位进行编程。SPI也可用于那些需要比微控制器O端口更多输入或输出端的场合中。SPI扩展I/O功能的最简单的办法,只需使用 制器引脚。写到SPIDATSCbOCK MSB接收缓沖器(SPIDAljMOSI 12 3 4 5 6 7 8 iII主从MISO上的并行I/提供了一种最少的微控MOSI 8 7 6 5,4 3 2 1 MISOSCLOCK MSB接收缓冲器(SPIDAT)图2主机和从机的发送和接收操作SCLOCK (CPOL-1) SCI.OCK (CPOL-O)ss(CPHA=l

4、)J t I I 1111 J * I 1 I I 1 I 1(CPHA-O)L ISP1标志 采样输入 数据输岀L IEPI标志SPI时序图采样输入 数据輸出、工作原理1.SPI的信号说明SPI系统使用4条线可与多种标准外围器件直接接口 :串行时钟线SCLOCK )、主机输入/从机输出数据线MISO、主机输出/从机输入数据线 MOSI和低电平有效的从机选择线SS。SCLOCK是主机的时钟线,为 MISO数据的发送和接收提供同步时钟信号。每一位数据的传输都需要 1次时钟作用,因而发送或接收1个字节的数据需要 8个时钟的作用。主机的时钟是通过主机的硬件设置的,并和各个从机的 SCLOCK相连。时

5、钟的波特率、极性、相位是由SPICONSPI控制寄存器)来设置的。MISO是主机的输入/从机的输出数据线。主机的 MISO应与从机的MISO相连进行高位在前的数据交 换。MOSI是SPI接口的SPI主机输出/从机输入数据引脚。这一引脚应当连接主微控制器的数据输出和从微控制器的数据输入端 MOSI,进行高位在前数据的交换。SS只在从方式中用于低电平选中从。SS对应的是P1.5,在初始化时P1 口被设置为模拟输入,因而通过清除P1.5可将其设置为数据输入,才可完成主、从机的通信。2.SPI的寄存器SPI有2个相关寄存器:SPICON和SPIDAT,其中SPICON包含各种标志位、使能位、方式位及时

6、钟位。各位都是可寻址的,如表1及表2所列。表1 SPICON寄存器ISPIWCOLSPESPIMCPOLCPHASPR1SPR0FFH0FEH 0FDH0FCH0FBH 0FAH 0F9H 0F8H 0R/WR/WR/WR/WR/WR/WR/WR/W表2 SPICON各位功能位功能ISPI中断标志位。当发送和接收1字节数据完毕时自动置全。该位也可以通过软件控制。当于中断时,应 当打开中断EA,将IE2.0置位。当执行中断服务程序时,硬件自动清除该位WCOL写冲突错误标志位。当SPI正进行数据交换时,若向SPIDAT中写数据将产生写冲突错误,写入的数据将无效,原有交换继续执行。必须由软件清除SP

7、ESPI使能位。SPE=0,I2C 串口使能,SPI串口禁止;SPE=1,I2C串口禁止,SPI串口使能SPIM主模式选择位。SPIM=0,SPI工作于从模式;SPIM=1,SPI工作于主模式CPOL时钟极性选择位。CPOL=0,主机时钟有高到低的跳变读取数据,数据字节之间传输时,时钟处于高电平 空闲状态;CPOL=1,主机时钟有低到高的跳变读取数据,各数据字节之间传输时时钟处于低电平 空闲状态 见图1)CPHA时钟相位选择位。CPHA=0,传输数据的高位 MSB在SS的降沿出现,在时钟第 1个前沿读入;之后下 一数据位在时钟后沿出现,在下一个前沿读入;直到8位数据读完。CPHA=1,数据在时

8、钟前沿出现,在同一时钟周期的后沿读入见图1)。读位还可控制从机的冋步方式SPR1SPR0SPI波行选择位。SPR1 SPR0 波特率0 0 fosc/40 1 fosc/81 0 fosc/321 1 fosc/64注:从方式下这两位都清零另一个SPI寄存器是SPIDAT。对这一寄存器的写操作会产生从高位开始的一位位的数据发送。如果写操作发生在其他数据正在传递的过程中,那么WCOL将置位。如果写操作进行时没有其他数据在传递,SPIDAT中的数据将自动锁存到移位寄存器中,移位寄存器从高位开始发送数据,发送结束后输入的字节将锁存 到SPIDAT中,可进行软件读出。3.主模式发送和接收可以同时工作在

9、主模式下。主模式的显著特征是不论是发送还是接收始终有SCLOCK信号,SS信号不是必需的。因为 SPI串口只能有一片主机,因而不存在主机的选择问题。发送操作是由向SPIDAT中写数据而触发的。在主模式下,时钟信号的1次作用对应一位数据的发送 MISO )和另一位数据的接收 MOSI )。如图2所示,在主机中数据从移位寄存器中自左向右发出送到从机 MOSI ),同时从机中的数据自右向左发到主机MISO ),经过8位时钟周期完成1个字节的发送。输入字节保留在移位寄存器中,此时ISPI自动置位 SCLOCK(26)MOSI (27)MISO (19) 甥 P3-5(23)MOSI(27)MISO(1

10、9)SS(12) ADuC812P3.1从机GNDGND Vpp初始化之后,要设置为数字输入CLR P 1.5),当SS信号无效时,数据的发送无法进行并且输入的数据视为无效。这是因为输入的时钟信号是与SCLOCK的逻辑与操作,而 SCLOCK信号是SS的反转。这样当 SS为高时,就没有时钟信号输入。当CPHA=1时,SS始终置地;当 CPHA=0时,在从机接收到第 1个时钟之前SS必然置低,在接收 完毕之后必然置高。数据的发送和接收的过程见图2,与主模式下基本相似,只是移位寄存器的数据移出和输入方向与之相反。从模式下的SS信号也须通过连接其他口线来读取状态。5.从模式下的时钟同步通过设置CPH

11、A位可以获得从模式下的两种同步方式。因为SCLOCK信号线可能存在干扰脉冲,如果这些干扰脉冲大到一定程序,从机时就会误认为收到了时钟信号,将导致接收数据错误。这样依靠同步结构 的SPI将失去同步的意义。CPAH=1时,如果有其他脉冲的干扰,AD C812将无法与主机获得同步。选择这种方式,当SS为低时,时钟计数器才开始工作。每经过8个时钟同周期,ISPI将置位 如果中断设置正确将产生中断),并且移位寄存器的数据锁存到SPIDAT中。SS保持低电平不会使时钟计数器复位。CPHA=0时,如果有其他脉冲的干扰,AD C812也可与主机获得同步。在这种方式下,从机通过SS信号获得的,而不是通过时钟信号

12、获得的。当SS信号变低时,时钟计数器复位,数据位在此后的每一个时钟发送和接收;当 SS变高时,ISPI位置位 如果中断设置正确,将产生中断),并且移位寄存器的数据锁 存到SPIDAT中。ISPI置位与数据的锁存始终与时钟计数值无关,因此当SS的触发在多于或少于 8个时钟SS时,在SS返回高电平瞬间,ADu C812将产生中断,并且收到或发送的数据将不可靠。在这种方式下,不可始终置低,如果始终置低,那么从机将始终发送00。当了与主机获得同步,从机 SS的下降沿必然由主机控制。当SS变低时,从机产生外部中断,中断服务中SPE位由软件清除,然后重新置位。SPE位的置位将使时钟计数器复位到零。须注意的

13、一点是这一中断必须有比其他中断更高的优先级,才可使从机在主机第1个时钟到来之间获得同步。主机程序必须为从机中断执行中断服务提供足够的时间,以对SPE进行操作。典型的操作是在清除SS和向SPIDAT中写数据之间用1215个NOP指令。设置中断E仏1E24V送 SPICON|淸 P3.5(SS)12】5个 NOP向SPIDAT中写数据发送完毕SS置高设置中断EA,I&送 SPICONI设置外部中断设建SS为数字输入 特SS变咼向SPIDATf写数据在中断中清、置SPI读 SPIDAT 下:个数据J(a)主机流程图| 发送完毕读SPIDAT 下一个数据J(b)从机流程图4主、从机工作流程图、实际应用

14、图3所示为1个主机和1个从机典型的电路连接图。注意主、从机要有公共的地。根据图3的连接情况及前面分析的主、从机工作项目,绘制流程图如图4所示。主机程序:SET EA ;打开中断允许SET IE2.0 ;打开 SPI 中断MOV SPICON , #30H ;送 SPI 控制字MASTER :CLR P3.5 ;置 SS 为低NOP ;等待从机中断执行完毕NOPNOPNOPMOV SPIDAT ,#DATA ;向 SPIDAT 中写数据也可用中LCALL DELAY ;根据选择的分频比算出数据传输的时间,确定 DELAY 子程序的延时时间 断方式)SETB P3.5 ;将 SS 置高LJMP M

15、ASTER ;送下一个数从机程序:ORG 0013H ;外部中断 INT0 入口CLR SPE ; SPE 位清除SETB SPE ;与主机时钟获得同步SETB P3.2 ;撤销中断RETISETB EA ;打开中断允许SETB IE2.0;打开 SPI 中断SETB EXO ;打开外部中断MOV SPICON , #20H ;送 SPI 控制字CLR P1.5 ;设置为数字输入JB P3.1$ ;判断P3.1是否为低CLR P3.2 ;产生INTO中断CLALL DELAY ;等待数据传送完毕ADMC812与8051礎件连接MOV A,SPIDAT ;读取数据VCpVCcSSSDAffA S

16、CLOCK ADUC812 主机 pgs GNDP3.3P348051从机P3.2GND通过以上程序可以实现从主机向从机中发送数据的操作。在某些情况下,从微控制器所完成的功能较少,如果采用ADu C812会产生资源和经济的浪费,为此可以采用MCS-51系列的微控制器作为从机。这样不仅实现了必要的功能又节约了资源。因为MCS-51没有SPI串口,所以采用 MCS-51作为从机需要模拟 SPI的工作模式来完成数据的传送。下面给出模拟SPI接收数据的电路连接图 见图5)和相关程序。ADy C812作为主机的程序与前面相同。8051模拟SPI串口接收数据程序如下:ORG 0013HINT0 : MOV

17、 R0 , #8 ;移位计数值INTO : JB P3.4 , INTO ;输入时钟位高电平时等待MOV C , P3.3 ;输入时钟下降沿接收数据RLC A ;将数据存入A中DJNZ RO,INTO ; 8位是否传送完SETB P3. ; 8位数据接收完毕,关中断MOV R1 ,#DATA ;将接收数据存到内部RAMINC R1 ;指向下一个内部 RAM单元CJNE R1 ,#00H,RECMOV R1 ,#80HRETISETB EASETB EX0MOV R1 , #80H ;内部存储器 80HFFH单元存储接收的数据总结通过对SPI串口原理的介绍,SPI串行接口可以在短距离内进行主机与

18、从机的数据传送,并且具有多种 可调的传输方式、连接电路简单、使用方便等优点。为实现主机和从机及从外围设备的通信提供了一种简 单、易行的方案。国ADUC812 内部ADC的应用作者:孙 会朱 文章来源:南昌大学点击数:2699 更新时间:2003-10-211 AD卩C812单片机内部 ADC简介1.1 ADC 电路AD卩C812内部的ADC转换块包含一个 5卩s转换时间、8通道、12位、单电源的 A/D转换器。A/D 转换器由电容式 DAC 的常规逐次转换器组成。 ADC 具有单独的模拟电源和参考电压,可最大限度地减 少数字电路的干扰。转换器接受的模拟电压输入范围为0+ VREF ;片内提供高

19、精度、低漂移并经厂家校准的 2.5V基准电压。AD卩C812内集成的ADC转换模块有其特殊性,如果应用不当,轻则影响ADC的性能,重则电路完全不能工作,甚至烧毁器件。下面对基准电压和模拟输入电压作详细的介绍。1 )基准电压AD卩C812内A/D转换器的2.5V 基准电压既可由片内提供,也可由外部基准经VREF 引脚提供。若使用内部基准,则在 VREF 和CREF引脚与AGND之间都应当连接 0.1卩F电容以便去耦。这些去耦电容应放在紧靠 VREF和CREF引脚 处。为了达到规定的性能,建议在使用外部基准时,该基准应当在2.3V 和模拟电源 AVDD 之间。图 1 给出使用外部基准电源时的应用电

20、路。因为片内基准高精度、低漂移且经工厂校准,并且当ADC 使能时,在 VREF 引脚会出现此基准电压。因此,在进行系统扩展时,可将片内基准作为一个 2.5V 的参考电源来使用。若要把片内基准用到微转换器之外,则应在VREF 引脚上加以缓冲并应在此引脚与AGND之间连接0.1卩F电容。图 2 示出了把片内基准用到微转换器之外时的应用电路。 在实际应用中应当特别注意,内部 VREF 将保持掉电直到 ADC 外围设备模块之一被它们各自的使 能位上电为止。2)模拟输入与其它ADC芯片相比,AD卩C812的ADC模块有一个缺点,就是ADC正常工作的模拟输入范围为 0+2.5V,而允许输入的电压范围只能为

21、正电压0+5V。经实验证明,若输入的模拟电压超过+2.5 V最大值为+5V ), ADC 的采样结果为最大值 0FFFH ),虽然结果不对,但并没有影响AD卩C812正常工作;但是,一旦输入负的模拟电压,则会影响AD卩C812正常工作,表现为 ADC的基准电压 VREF = +2.5V )消失和采样结果不正确,且若长时间输入负电压,将有可能损坏芯片。因此,在实际应用中,若发现启动 ADC 之后 VREF 端无电压,则应立即将芯片复位,并检查模拟输入 信号的采集放大部分。在确保进入AD卩C812的模拟信号在0+2.5V范围内之后,才能再次启动 ADC。实际应用时,应保证输入的模拟电压为正电平。

22、一般情况下, ADC 的输入缓冲放大器采用 05V的电源工作,这样,可以保证ADC的输入在AD卩C812的A/D转换器的安全输入范围内,如图3所示。如果实际情况不许可, ADC 的输入缓冲放大器的电源超出 05V,则应采用图4所示钳位电路,可保证 ADC的输入在AD卩C812的A/D转换器的安全输入范围内。注意, ADC的输入端有一个 0.01卩F的电容,这个电容是为了保证 ADC 的转换精度。1.2 控制 ADC 工作的特殊功能寄存器ADC 的工作由三个特殊功能寄存器控制,即 ADCCON1 、 ADCCON2 和 ADCCON3 。 ADCCON1 寄存器控制转换与采集时间、硬件转换模式以

23、及掉电模式。寄存器地址: FFH ;寄存器缺省值: 20H ;位可寻址: 否。 ADCCON2 寄存器控制 ADC 通道选择和转换模式。寄存器地址: D8H ; 寄存器上电缺省值: 00H ;位可寻址:是。 ADCCON3 寄存器对用户软件给出 ADC 忙标志指示。寄存器地址: F5H ;寄存器上电缺省值: 00H ;位可寻址:否。1.3 ADC 的工作模式1)典型运用当特殊功能寄存器ADCC0N13完成设置后,ADC将转换模拟输入并在特殊功能寄存器ADCDATAH/L 中提供 ADC12 位结果字。用通道选择位写寄存器 ADCDATAH 的高 4 位以识别通道。2 ) ADC 的 DMA 模

24、式AD卩C812片内ADC设计成5卩s完成一次采样,在中断驱动子程序中要求用户在5卩s时间内完成中断服务、读 ADC 转换结果并为进一步的后续处理存储作准备等全部工作。如果没有完成,则下一次的 ADC采样可能丢失。因此,在 AD卩C812不能支持中断速率的应用中,可采用ADCDMA 模式。通过 DMA 使能位 ADCC0N2.6 ),使能 ADCDMA 模式,它允许 ADC 在每次设置寄存器 ADCC0N 后连续采样。每次采样结果被写入外部静态 RAM,无需AD卩C812内核的任何干预。这种方式确保 ADC处于全速更新速率时,AD卩C812能捕获连续的采样流。2使用AD卩C812内部ADC的C51驱动程序下面将给出两个使用 AD卩C

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论