lphaff 发表于 2013-11-21 13:12

SPI的配置;
void spi_init()
{   
      SpiaRegs.SPICCR.all =0x0007;                     // Reset on, rising edge, 16-bit char bits
      SpiaRegs.SPICTL.all =0x0006;                         // Enable master mode, normal phase,
         SpiaRegs.SPIBRR =0x00FF;                                             // enable talk, and SPI int disabled.
//      SpiaRegs.SPIBRR =0x0085;                                                                        
    SpiaRegs.SPICCR.all =0x0087;                         // Relinquish SPI from Reset   
    SpiaRegs.SPIPRI.bit.FREE = 1;                // Set so breakpoints don't disturb xmission
}


void spi_fifo_init()                                                                              
{
// Initialize SPI FIFO registers
   SpiaRegs.SPIFFTX.all=0xE040;
   SpiaRegs.SPIFFRX.all=0x204F;
   SpiaRegs.SPIFFCT.all=0x0;
}



实际使用时:


                              AD_CS=0;
                                 SpiaRegs.SPITXBUF=DA_Data;

                                 SpiaRegs.SPITXBUF=DA_Data;   

                                 SpiaRegs.SPITXBUF=DA_Data;
                              while(1)
                              {
                                        if((SpiaRegs.SPISTS.all&0x40)==1)      break;//如果的中断标志位为1,则证明SPI已经发送成功,则停止等待      
                              }
                              SpiaRegs.SPIRXBUF=SpiaRegs.SPIRXBUF;//虚读SPIRXBUF,以清除SPI中断标志
                        //    while(SpiaRegs.SPIFFTX.bit.TXFFST!=0){}   
                              AD_CS=1;


zhangmangui 发表于 2013-11-21 13:13

lphaff 发表于 2013-11-21 13:11 static/image/common/back.gif
是啊,,前段时间是用示波器加了一个延时,让这个延时刚好等于8个时钟,但是这终究不是长久之计啊。
现在 ...

是的我下来再看看相关寄存器

lphaff 发表于 2013-11-21 13:14

愿意是希望通过查询中断位这段时间来拉高CS的,
但是如果没有查到中断位,则CS直接被拉高了
这样,可能BUFF的数据刚刚送到SPI_DAT里面
所以就出现了几个时钟在CS的高电平后面了

满哥,你有参考例程的话,提供一个给我学习下吧

lphaff 发表于 2013-11-21 19:37

在这个帖子里:https://bbs.21ic.com/icview-132026-1-1.html
特意提到了,在标准SPI模式下,才会有SPI_INTFLAG置位
但是因为DA芯片是24位,需要一次发送24个bit
若使用标准SPI模式,则相邻八个字节会有时间间隔
所以必须使用FIFO发送

现在FIFO的INT标志位时钟为1,,

zhangmangui 发表于 2013-11-22 00:00

不好意思啊没有那么多的时间帮你分析
关于寄存器的相关配置我也就不住还望你多多对比分析
参考TI提供的相关代码

lphaff 发表于 2013-11-22 13:22

zhangmangui 发表于 2013-11-22 00:00 static/image/common/back.gif
不好意思啊没有那么多的时间帮你分析
关于寄存器的相关配置我也就不住还望你多多对比分析
参考TI提供 ...

谢谢哈。

我再看看
页: 1 [2]
查看完整版本: 求助mangui哥,关于DSP的SPI问题