| SPI通信调试笔记:一、SPI硬件连接
 这里做BlackFin533兼容SPI口与PowerPC405 CPU的SCP口进行通信,由于PowerPC405 CPU的SCP口不完全兼容SPI,这样我们为了支持两个器件之间的双向通信,在保证数据信号建立时间和保持时间的前提下,牺牲一点传输速度,我们把SPI的时钟信号往后推迟1/4个时钟周期,利用硬件实现,具体实现方案待定!这样,我们的传输速度会有所降低,但是仍然能够保证我们传输码率为3Mbps的影音压缩文件。保守估计,SPI的最高传输速度应该在15Mbps。
 BF533的MISO------------PPC 405的SCP_TXD
 BF533的MOSI------------PPC 405的SCP_RXD
 BF533的SCK-------------PPC 405的SCP_CLK 时钟延时1/4个时钟周期
 BF533的SPISS(PF0)----PPC 405的SCP_ENO_N
 二、配置SPI寄存器(BF533)
 #define TIMOD_T 0x0001#define TIMOD_R 0x0000
     void Drv_Config_slave_read(){
 
 *pSPI_CTL = (((*pSPI_CTL)&0xFFFC)|TIMOD_R);
 }
 void Drv_config_slave_write(){
 *pSPI_CTL |= (((*pSPI_CTL)&0xFFFC)|TIMOD_T)  |EMISO;
 }
 void Drv_Config_master_read(){
 *pSPI_CTL = (((*pSPI_CTL)&0xFFFC)|TIMOD_R) | EMISO;
 }
 void Drv_config_master_write()
 {
 
 *pSPI_CTL |= (((*pSPI_CTL)&0xFFFC)|TIMOD_T);
 }
 void Drv_config_to_master(){
 *pSPI_FLG = FLS1;
 // Set baud rate SPI_SCK = HCLK/(2*SPIBAUD) SCK
 *pSPI_BAUD = 2;
 // configure spi port
 // 8-bit data, MSB first, SPI Master
 
  *pSPI_CTL = MSTR;}
 void Drv_config_to_slave(){
 *pSPI_CTL = PSSE;
 }
 void Drv_SPI_enable(){
 *pSPI_CTL |= SPE ;
 
 }
 void Drv_SPI_disable(){
 *pSPI_CTL &= ~SPE ;
 
 }
 三、注意事项
 为了与PowerPC 405之间正常通信,应该设置SPI_CTL的CPOL为1;
 在本应用中BF533设为从机。
 
 |