字体大小: 正文
嵌入式双CPU间的通信介绍(2009-10-27 16:56:22)
采用DSP和AVR单片机构成双CPU处理器平台,并充分利用DSP处理大容量数据和复杂算法的能力.以及单片机接口的控制能力。ATmegal28单片机负责外围电路控制,包括开关量输出报警与控制、监测输入开关量、模拟量的输出、与上位机的通信以及计时和存储参数,参数是由TMS320F2812 DSP采样计算获得,计算完成后,DSP将数据传送给AVR单片机,而监测的参数也由用户预先设置后再经DSP传输。
一、SPI通信
    根据系统设计需求,DSP和AVR单片机之间需SPI接口数据总线实现数据传输。SPI是一种串行总线的外设接口.只需4根总线就可与外设相连,而且SPI是一种真正的同步方式,两台设备在同一个时钟下工作嘲。正是由于SPI通信占用的接口线少,通信效率高,并且这两款:DSP与AVR单片机都支持SPI接口,因而SPI通信是目前一种较好的设计方案。
    由于DSP与AVR单片机的数据寄存器都是移位寄存器,当有数据从一个寄存器移出时,则另一端有数据移入.当移完8位,一次SPI通信结束。不同的是ATmegal28在通信过程中接收和发送的数据始终在一个寄存器SPDR中,因此才有同时收发。而DSP的收发寄存器是分开的,发送数据用SPITXBUF,接收数据用SPIRXBUF,8位的数据从AVR的SPDR移入DSP的SPIRXBUF,同时DSP的SPITXBUF又向AVR的SPDR移入数据,SPDR每移出1位,其本身也移进1位,相应DSP中的SPIRXBUF移入1位。SPITXBUF移出1位,从而完成16位环形移位。
二、系统硬件设计
    其中,SCK为时钟信号,用来为SPI提供时钟脉冲,SS为片选信号,当SS拉低时,SPI触发,DSP与AVR之间实现通信。MOSI是主出从入。对于主机来说,由MOSI引脚输出数据;对于从机来说,则是由MOSI引脚输入数据;而MISO则相反,是主人从出引脚,对于主机,是由MISO脚输人数据,对于从机,从MISO引脚输出数据。主机还可通过复位引脚在必要的条件下(如主机复位时)使从机复位。由于ATmegal28的MISO引脚是向外发送,与其他4个引脚不同,而74LVC4245方向是B到A,因此该引脚接法不同于其他引脚,需要通过一只分压电阻,并使用一个二极管将其电压箝位于3.3 V。
三、SPI初始化
    TMS320F2812的初始化包括:配置I/O端口为具有SPI特殊功能的接口,选定主从机,数据传送模式、波特率和发送接收数据长度,所有设置都是通过设计相应的SPI控制寄存器实现。ATmegal28的初始化与TMS320F12812相似,不同的是,由于ATmegal28是从机,因此不用选择波特率,同时应该注意的是,数据传送模式应保持与主机一致。数据传送模式有4种,是由设置控制寄存器里的CPOL和CPHA来设定的。TMS320F2812的SPI通信未采用中断方式.因为它是主要发送者,当ATmegal28有数据发送来时,通过外部中断得知。ATmegal28是采用中断方式,当有数据发送来时,进入SPI中断,开始接收数据。
四、注意事项
    1、拉低片选信号SS后,需延时再发送数据。由于逻辑电平的不同,应在TMS320F2812与ATmegal28之间加电平转换器74LV4245,当主机将片选信号拉低后。由于74LVC4245的存在,两者不能立即工作,会产生一个延时,因此在软件编程中,需要加一个延时函数。一般来说延时1μs就足够了。
    2、AVR往SPDR写数据时,SS被拉高。一般来说,两个MCU之间的数据传输不会只有1个字节。在设计中,当从机向主机发送数据时,当主机接收完第一个字节后,如果不将片选信号SS拉高.则会造成从机不能将数据写入寄存器内,主机也不能正确接收数据,这样造成数据丢失、错误。因此,每接收完一个字节主机都要将丙拉高.待从机写入数据后,再将SS拉低,这样数据才能够正确传输。
加载中,请稍候...
  • 评论加载中,请稍候...

验证码:请点击后输入验证码  收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...