首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 维修教程知识 > 单片机栏
嵌入式电网分析仪中双CPU间的通信
来源:本站整理  作者:佚名  2009-06-19 11:17:33



    TMS320F2812的SPI通信未采用中断方式.因为它是主要发送者,当ATmegal28有数据发送来时,通过外部中断得知。ATmegal28是采用中断方式,当有数据发送来时,进入SPI中断,开始接收数据。
5.3 DSP的接收和发送
    以下为DSP接收数据的程序代码:

   
    其中.SpiaRegs.SPISTS.bit.INT_FLAG是接收完成标志位。当一个字节传送完毕后.SpiaRegs.SPISTS.bit.INT_FLAG置1.由于TMS320F2812的SPI数据寄存器是16位的,因此取低8位即为所接收的数据。
    以下为DSP的发送数据的程序代码:

    void DSP_Spi_Write_Byte(Uchar Byte_Out) //向SPI总线发送1个字节
    { Byte_Out=(Byte_Out<<8)&0xFF00;//发送时高8位有效while(SpiaRegs.SPISTS.bit.BUFFULL_FLAG=1); //fFXBUF里有数据.还没被移走

    SpiaRegs.SPIT_XBUF=Byte_Out;
    }
    同理.当DSP发送数据时.首先判断缓存里的数据是否有被移走,一旦判断数据移走,马上将要发送的数据写入缓存。
5.4 AVR的发送和接收


    SPIF是发送完成标志,当SPDR里的数据发送完后,SPIF置1,此时可向SPDR写数据。注意AVR单片机向DSP发送数据前先向DSP发送一个中断信号。ATmegal28接收数据采用中断方式完成数据接收,中断程序的流程图如4所示。


6 注意事项
    (1)拉低片选信号SS后,需延时再发送数据。由于逻辑电平的不同,应在TMS320F2812与ATmegal28之间加电平转换器74LV4245,当主机将片选信号拉低后。由于74LVC4245的存在,两者不能立即工作,会产生一个延时,因此在软件编程中,需要加一个延时函数。一般来说延时1μs就足够了。
    (2)AVR往SPDR写数据时,SS被拉高。一般来说,两个MCU之间的数据传输不会只有1个字节。在设计中,当从机向主机发送数据时,当主机接收完第一个字节后,如果不将片选信号SS拉高.则会造成从机不能将数据写入寄存器内,主机也不能正确接收数据,这样造成数据丢失、错误。因此,每接收完一个字节主机都要将丙拉高.待从机写入数据后,再将SS拉低,这样数据才能够正确传输。


7 结语
    实验证明.SPI通信完成TMS320F2812与ATmegal28之间的通信完全满足系统需求。因为SPI时序简单,传输速度快,占用的接口线少,简化了系统设计。同时运用双CPU设计系统,增强了系统的实时处理能力,减轻主CPU负担,提高了产品的性能。

上一页  [1] [2] [3]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)

推荐阅读

图文阅读

热门阅读

Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:256,457.00000 毫秒