TMS320F2812 的SPI 是一个高速的同步串行输入/输出端口,一般用来实现DSP 控制器 之间和DSP 与外围设备之间的通信。SPI 有两种操作模式:主操作模式和从操作模式。主片 控制了时钟信号(SPICLK),它可以在任何时候通过发送SPICLK 信号来启动数据传输。无论是主片还是从片,数据都是在SPICLK 的某个边沿移出移位寄存器,在SPICLK 相反的边沿锁存在移位寄存器中,并且输出和接受数据都是同时进行的。
芯片的 SCI 是一个双线通信的异步串行通信接口,也称UART 口,一般用于接上位机(以下简称PC 机)。
3 同步通信模块的设计
3.1 基于SPI 模块的硬件设计
让两个 DSP 分别工作在主、从操作模式下,两者的引脚连接如图2 所示。主处理器通 过SPICLK 脚向整个通信网提供串行时钟,控制着系统的数据传输;通过SPISTE 脚给从处 理器提供片选信号,低电平有效;通过SPISIMO 脚把数据输出到从处理器的SPISIMO 脚上; 通过SPISOMI 脚接受从机处理器SPISOMI 脚上的数据。
3.2 同步通信流程设计及软件实现
在设计时,主处理器先向从处理器发送给定信息,发送完毕后,循环发送0,使SPICLK 不停地有时钟脉冲输出,并等待接受从处理器发送的数据。从处理器先是等待给定信息,如果接收到非零数据,则进行下一步运行并不断向主处理器发送当前数据。
SPI 通信主处理器的流程图和从处理器的流程图分别如图3、图4 所示。
在完成两个DSP 时钟和中断初始化后,分别对其SPI 寄存器进行设置,让其分别处于 master 和slave 模式。主、从处理器都采用查询方式发送数据,中断方式接受数据。
查询方式发送是判断SPI 发送缓冲器已满标志位(SPISTS.bit.BUFFULL_FLAG)是否为空,如果为空,则将数据写入发送缓冲寄存器(SPITXBUF)中,启动SPISIMO 引脚的数据发送,数据发送完毕后SPISTS.bit.BUFFULL_FLAG 自动清零,等待下一次发送。
中断方式接受是在SPI 中断使能位(SPICTL.bit.SPIINTENA)置位的情况下,如果接收 到数据传送到SPI 串行数据寄存器(SPIDAT)中,SPI 中断标志位(SPISTS.bit.INT_FLAG)置位且触发中断,并将数据转移到接受缓冲寄存器(SPIRXBUF)中,如果SPIRXBUF 中数据被读取,则SPISTS.bit.INT_FLAG 自动清零,等待下一次接受中断。