您好,欢迎来电子发烧友网! ,新用户?[免费注册]

您的位置:电子发烧友网>电子元器件>接口定义>

SPI通信设计 - AT89C5131实现与DSP、PC通信的接口设计

2011年08月30日 12:17 本站整理 作者:刘王莹,董春曦 用户评论(0
1.3 SPI端口特性及SPI通信设计

  SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,它可以使MCU与各种外围设备以串行方式进行通信以交换信息。SPI有三个寄存器分别为:控制寄存器SPCR,状态寄存器SPSR,数据寄存器SPDR.外围设置FLASHRAM网络控制器、LCD显示驱动器、A/D转换器和MCU等。SPI总线系统可直接与各个厂家生产的多种标准外围器件直接接口,该接口一般使用4条线:串行时钟线(SCLK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择线SS(有的SPI接口芯片带有中断信号线INT、有的SPI接口芯片没有主机输出/从机输入数据线MOSI)。SPI接口的全称是"Serial Peripheral Interface",意为串行外围接口,是Motorola首先在其MC68HCXX系列处理器上定义的。SPI接口主要应用在EEPROM,FLASH,实时时钟AD转换器,还有数字信号处理器和数字信号解码器之间。

  AT89C5131的SPI模块允许在McU和其他外围设备之间实现全双工、同步、串行通信,它能以配置为主或者从两种操作模式提供可编程极性和相位串行时钟,同时还提供8个可编程的主机时钟率。SPI模块包括4个端点(MOSI,MISO,SCK,SS),MOSI和MISO都是用来传输数据的,且每次只能传输1个字节的数据。不同的是,MOSI将数据由主机输出从机输入,而MISO正好相反。SCK信号用以使通过MOSI和MI-SO的数据输人/输出设备同步,它可以由主机驱动产生8个时钟周期,用以完成一个字节在串行通道上的交换。SS用于从机的选择,低有效。SPI模块的配置和初始化可以通过寄存器SPCON完成,而数据的交换则需要使用寄存器SPSTA和SPDAT两个寄存器,在软件编写过程中,SPI能否正常工作主要取决于对上述3个寄存器的操作。

  在该设计中,SPI被配置为主机模式;SS端口处于无效状态;AT89C5131通过MOSI端口向DSP传输参数及控制命令;DSP通过软件设置P1.1(SS)端口的状态表明数据是否正确接收,即若正确接收,则置P1.1为1,否则置P1.1为0;AT89C5131通过检测P1.1的值来决定是否重传数据。

  2 系统实现

  要使得上述设计在工程应用中得以实现,在硬件设计的基础上。还需对接口进行软件设计。AT89C5131的软件设计主要是USB固件程序的设计,软件设计采用C语言编程,最后软件通过FLIP下载到AT89C5131芯片中。这里所采用的编译环境为KeilμVision 3软件设计平台。在具体的工程实现过程中,也遇到了一些问题,但经过反复的修改及调试,这些问题都得到了很好的解决,其中主要有以下几个方面:

  按键功能实现控制面板按键的功能是通过电平触发中断实现的。在设计之初,手动按下一次按键总会触发多次中断,对应的LED显示总会很快的跳变,不能满足按一次按键就显示一个状态的要求,于是笔者就在按键功能实现的程序中添加了等待函数,即每发生完一次中断,就等待一段时间,经过调试,上面的问题没有再出现。

  USB通信系统系统要求USB能够快速、高效地实现通信,对于速度问题可以通过Ping-pong模式得以解决。系统还要求USB实现双向通信,为使其接收和发送数据互不干扰,所以选用了几个端口实现不同数据的传输。

  SPI端口通信 SPI端口工程实现的关键是速度和工作模式的匹配。在设计之初,AT89C5131的SPI工作于从机模式,其数据传输受到DSP的控制,由于其传输速度远远低于DSP中SPI端口的处理速度,所以每通过AT89C5131的SPI传输一组数据时,DSP总需要通过软件控制等待很长一段时间,既便如此也不能保证数据得到正确接收。于是,后来就将AT89C5131的SPI工作模式修改为主机模式,由AT89C5131主动控制数据的传输。然而实现双向通信的关键是对SS信号的控制,在上述工作模式下,SS必须无效,Slave才能较可靠地向发送寄存器写数。

  3 结 语

  文中介绍基于AT89C5131的接口设计,主要是实现PC机与MCU以及MCU与DSP的通信,该设计已经在工程实际中得到应用。经过实践检验,证明其合理且操作灵活,具有一定的实用意义。编译正确且逻辑没有问题的程序源代码,将其烧写至芯片后,硬件电路并不一定能完全地实现所要求的功能,所以必须经过反复的修改程序、烧写、调试,直至正确实现功能。

非常好我支持^.^

(1) 100%

不好我反对

(0) 0%

( 发表人:小兰 )

      发表评论

      用户评论
      评价:好评中评差评

      发表评论,获取积分! 请遵守相关规定!