kaiyun官方注册
您所在的位置: 首页> 嵌入式技术> 设计应用> TMS320C5402与MAX1270的SPI接口设计与实现
TMS320C5402与MAX1270的SPI接口设计与实现
刘文良,高 山,王 杰
摘要:根据MAXIM公司的12位串行模数转换芯片MAX1270及TI公司TMS320C5402 DSP的多通道缓冲串口(McBSP)的工作原理,设计了高速传输通道,采用McBSP的SPI(Series Protocol Interface)工作模式,将McBSP与MAX1270直接相连,不需要占用并行数据总线,避免了总线冲突。给出了MAX1270与TMS320C5402的McBSP的接口电路及软件编程实现。
Abstract:
Key words :

摘 要:根据title="MAXIM">MAXIM公司的12位串行模数转换芯片MAX1270及TI公司TMS320C5402DSP的多通道缓冲串口(McBSP)的工作原理,设计了高速传输通道,采用McBSP的SPI(Series Protocol Interface)工作模式,将McBSP与MAX1270直接相连,不需要占用并行数据总线,避免了总线冲突。给出了MAX1270与TMS320C5402的McBSP的接口电路及软件编程实现。
关键词:TMS320C5402;MAX1270;多通道缓冲串口;SPI

  TMS320C5402是一种具有高处理能力和低功耗特性的16位定点DSP芯片,处理能力高达100MIPS,其多功能串口McBSP(Multi-channel Buffered Serial Port)不仅可以完成标准串口的全双工串行通信,还具有支持SPI设备、多达128个通道的数据收发能力等特性。核心电压为1.8V,I/O电压为3.3V,尤其适合于便携式设备。MAX1270是8通道、多量程双极性输入、串行输出、逐次逼近型12位AD转换器。支持SPI/QSPI和MICROWIRE等多种接口方式,可方便地与各种微控制器直接级联。
1 MAX1270原理
1.1 MAX1270引脚功能

  MAX1270引脚分布如图1所示。

  各引脚功能如下:1-VDD:+5V电源输入;2,4-DGND:数字地;5-SCLK:串行时钟输入,为串口数据的输入输出提供移位时钟;6-:片选输入端,低电平有效,当为高时,DOUT呈高阻状态;7-DIN:串行数据输入引脚,从该引脚写入控制字;8-SSTRB:转换完成指示引脚,在不同的时钟模式下,该引脚的高低电平变化反映转换是否完成;10-DOUT:串行数据输出引脚,用来输出转换结果;方法:掉电模式控制输入端,低电平有效,正常工作模式下置高;12-AGND:模拟地;13~20-CH0~CH7:模拟信号输入端;21-REFADJ,参考电压输出/外部调节输入;23-REF,参考电压缓冲输出/ADC的参考输入。
1.2 MAX1270的控制字
  MAX1270的控制字如表1所示。


  其中PD0、PD1为时钟模式选择位,其取值与相对应的功能如表2所示。


  在外部时钟模式下,串行数据的输入、输出和数据的采样保持、转换全部由SCLK输入的外部时钟所控制。在内部时钟模式下,数据的转换时钟由芯片内部产生,从而减轻了外部微控制器的负荷,提高了工作效率。本文所设计的系统就是工作在内部时钟模式下,由DSP提供2MHz的时钟。由于DSP的收发寄存器为16位,故采用16个时钟周期转换一个数据的工作时序,使得每次转换只需分别读写一次寄存器,大大简化了软件的设计。在此模式下,转换速率可达到43ks/s。
RNG、BIP两位决定了模拟电压的输入极性和范围,其取值与相对应的功能如表3所示。


  MAX1270具有软件可编程极性选择功能,只需要写相应控制字就可轻松实现,这一特点降低了输入电路设计的复杂性。对于单极性输入,转换结果为12位二进制码;对于双极性输入,转换结果为12位二进制补码。只要把存储转换结果的变量定义为有符号整数类型(signed int)就可正确读取结果。
  SEL2、SEL1、SEL0为模拟通道选择位,其取值与相对应功能如表4所示。


  START位为控制字的开始位,在CS低电平期间标志着8位控制字的开始,其后的控制字在SCLK作用下先高位后低位的顺序由DIN输入[2]
2 McBSP原理
  McBSP内部结构如图2所示,包括数据通路和控制通路两部分,并通过7个引脚与外部器件相连。


  各引脚功能:DX为发送引脚,与McBSP相连接;DR为接收引脚,与接收数据总线相连接;CLKX为发送时钟引脚;CLKR为接收时钟引脚;FSX为发送帧同步引脚;FSR为接收帧同步引脚。
  在时钟信号和帧同步信号的控制下,接收和发送过程通过DR和DX引脚与外部器件直接通信;DSP内部对McBSP的操作是利用16位控制寄存器,通过片内外设总线进行存取控制。数据发送过程:将数据写入数据发送寄存器DXR;然后,发送移位寄存器XSR将数据经DX引脚移出发送。数据接收过程:通过DR引脚将接收的数据移入接收移位数据寄存器RSR中;然后,将这些数据分别复制到接收缓冲寄存器RBR和DRR中;最后,由CPU或DMA控制器读出。这个过程允许内部和外部数据通信同时进行[3]
3 TMS320C5402与MAX1270的接口设计
3.1 接口时序

  TMS320C5402的McBSp与MAX1270都支持SPI(Series Protocol Interface)总线协议。SPI总线是Motorola公司推出的三线同步接口,同步串行三线方式进行通信:一条时钟线SCK,一条数据输入线MOSI,一条数据输出线MISO;用于CPU与各种外围器件进行全双工、同步串行通信。SPI主要特点有:可以同时发送和接收串行数据;可以当作主机或从机工作;提供频率可编程时钟;发送结束中断标志。传输的起始由主机的时钟信号控制,一旦检测到主机有时钟信号发出,主机和从机的通信就开始,分别在时钟的不同跳变沿发送和接收数据,当主机时钟信号结束时,通信就停止,在通信过程中从机的片选信号要保持有效。
  本文采用MAX1270内部时钟模式下16时钟周期的工作时序,由5402作为主机提供串行时钟,MAX1270作为从机输出转换结果,其时序如图3。


  当片选信号CS置低时,主机的串行时钟开始发出时钟信号,在时钟的每个下降沿主机向DIN上写数据,在时钟的每个上升沿数据打入从机。在DIN上第7位控制字建立的上升沿开始采样模拟电压信号,并保持2个外部时钟周期和4个内部时钟周期,随后在第8个控制字之后的下降沿转换开始。转换的过程中,SSTRB置低直到转换完成,查询此引脚的状态可判断转换是否完成,同时为了去除噪声干扰,在转换过程中应保持高电平直到转换完成。转换完成后,12位转换结果由高到低由从机输出到DOUT上,并在每个时钟的上升沿打入主机,从而得到转换结果。
  由图3的时序图可以看出,每次转换都必须写入控制字,相邻两次转换的控制字之间间隔16个时钟周期,两次转换结果同样间隔16个时钟周期,而且如果在第一次读取结果的D3位同时在DIN上写入下一次的控制字,在下个周期到来时就可以直接读取结果而不用在等待一个空周期。这样可以充分利用SPI总线的特点,在一个周期内主机写DIN读DOUT,而从机写DOUT读DIN。由于McBSP的DXR(发送寄存器)和DDR(接收寄存器)都是16位的,故选择了16个时钟周期的工作时序与之相匹配。
3.2 接口电路
  根据McBSP的引脚特性和上述时序分析,设计了如图4的接口电路。


  5402作为主机通过Mcbsp0的时钟输出引脚BCLKX0给MAX1270提供串行时钟,通过帧输出引脚BFSX0选通MAX1270,通过BDX0引脚写入控制字。同时,通过BDR0引脚接收转换结果,并把BCLKR1设置成通用I/O与MAX1270的SSTRB引脚相连,通过查询此引脚的状态来判断转换是否完成。
  由于5402的I/O管脚电压为3.3V,而MAX1270的I/O管脚电压则为5V,因此在MAX1270向5402传输的方向上加了一片电平转换芯片74LVC4245A,把5V的TTL电平转换成3.3V的TTL电平,以避免5402无法承受高于3.3V的电压而烧毁芯片。
3.3 软件设计
  软件设计分为初始化和数据传输两大部分。
  初始化部分包括5402的初始化和McBSP的初始化,其中5402的初始化是对系统上电复位后对DSP的整个工作坏境的基本设置,包括对系统时钟、处理器工作方式、存储器分配、中断、外设等待状态等的设置。而对McBSP的初始化则是软件设计的核心,其步骤如下:
  (1)禁止McBSP0发送器发送,接收器接收。
  (2)设置5402为SPI主机模式,串行时钟采用5402主时钟的50分频,在时钟的上升沿接收数据,在时钟的下降沿发送数据,接收数据为右对齐高位补零格式。
  (3)设置每个帧信号由DXR(数据发送寄存器)向XSR(发送移位寄存器)复制数据时产生,接收和发送都为单项帧,每帧一个数,每个数16位。
  (4)使能McBSP0接收器,发送器。
  (5)等待两个时钟周期,保证内部信号同步,接收器和发送器激活[1]
  数据传输部分完成控制字的写入和转换结果的保存,其步骤如下:
  (1)向DXR中写入控制字,查询发送控制字状态,确认发送完成。
  (2)查询SSTRB状态,确认转换完成。
  (3)查询接收控制字状态,确认接收完成,从DRR中读出转换结果。
  (4)循环执行上述步骤。
  软件基本流程如图5所示。

3.4 实验结果
  图6为采集由信号发生器产生的1kHz的正弦波的结果。其中横坐标为连续时间段内采集数据的序号,纵坐标为转换后的数字量结果。由图可以看出,采集的数字量很好地复现了模拟电压波形。而实际上,图中一个周期的正弦波之间是43个点,说明了对于1kHZ的正弦波,每周期采样43次,由此可知采样率达到了43kHz。这与MAX1270内部时钟工作模式的最大采样率完全一致,而且可以实现双极性采样,证明了本设计在实践中是可行的。

  本文详细介绍了MAX1270与TI公司的16位高性能定点DSP TMS320C5402之间的SPI接口设计和编程实现。实现了MAX1270真正的SPI接口,并达到了最大内部转换速率43kHz。基于SPI接口的特点使得电路设计十分简洁,软件编程采用C语言完成,通俗易懂且可移植性强,已经应用在光栅信号的采集、细分与辩向系统中,有一定的实用性。

参考文献
[1] 张勇.C/C++语言硬件程序设计[M].西安:西安电子科技大学出版社,2003.
[2] MAXIM Corp,MAX1270/MAX1271 Data Sheet[Z],2004.

[3] 汪安民,陈明欣,朱明.TMS320C54xx实用技术[M].北京:清华大学出版社,2007.

此内容为AET网站原创,未经授权禁止转载。
Baidu
map