1.问题的提出
当系统从SPI device启动时,若SCLK = 133M,则SPI的最大速度为33M。然而,有一些串行的flash设备能更快的运行,因此,如果我们使用SPORT口,它的最大速度为SCLK/2=66M。
2.硬件连接方法
SPI接口只有主设备发出SCK信号,因此需要将TSCLK配置为内部产生,RSCLK配置为从外部接收,并在硬件上将它们连接在一起;
DT1PRI作为MOSI,DR1PRI作为MISO。
根据帧同步信号的特点,将其作为片选信号,作为SCK的门控因子,指示SCK的有效时段。
3.配置方法
void Init_SPORT1( void ) /* 由于使用SPI读写时序,所以进行初始化 */ { ////////////////发送配置////////////// *pSPORT1_TCR1 = TCKFE|LATFS|LTFS|TFSR|ITFS|ITCLK; *pSPORT1_TCR2 = 0x0007; /*8位字长,正常模式*/ ////////////////接收配置////////////// *pSPORT1_RCR1 = RCKFE|LARFS|LRFS|RFSR; /*rising edge采样、延迟帧同步、低电平有效、需要帧同步、外部帧同步源、外部位时钟、MSB first、禁止接收*/ *pSPORT1_RCR2 = 0x0007; /*8位字长、正常模式*/ /////////////发送位时钟频率设置//////// *pSPORT1_TCLKDIV = 0x0003; // TCLK = SCLK/8; *pSPORT1_TFSDIV = 0x0008; *pSPORT1_TCR1 = (*pSPORT1_TCR1 | TSPEN); *pSPORT1_RCR1 = (*pSPORT1_RCR1 | RSPEN); //使能SPORT1接收 }
按照如上的配置,理论上可以产生的波形如下:
示波器实测:
从图可以看出,波形的时序关系正好符合SPI的时序关系。