发新帖我要提问
12
返回列表
打印
[DSP编程]

求助mangui哥,关于DSP的SPI问题

[复制链接]
楼主: lphaff
手机看帖
扫描二维码
随时随地手机跟帖
21
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[0];

                                   SpiaRegs.SPITXBUF=DA_Data[1];     

                                   SpiaRegs.SPITXBUF=DA_Data[2];
                                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;


使用特权

评论回复
22
zhangmangui| | 2013-11-21 13:13 | 只看该作者
lphaff 发表于 2013-11-21 13:11
是啊,,前段时间是用示波器加了一个延时,让这个延时刚好等于8个时钟,但是这终究不是长久之计啊。
现在 ...

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

使用特权

评论回复
23
lphaff|  楼主 | 2013-11-21 13:14 | 只看该作者
愿意是希望通过查询中断位这段时间来拉高CS的,
但是如果没有查到中断位,则CS直接被拉高了
这样,可能BUFF的数据刚刚送到SPI_DAT里面
所以就出现了几个时钟在CS的高电平后面了

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

使用特权

评论回复
24
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,,

使用特权

评论回复
25
zhangmangui| | 2013-11-22 00:00 | 只看该作者
不好意思啊  没有那么多的时间帮你分析
关于寄存器的相关配置我也就不住  还望你多多对比分析
参考TI提供的相关代码

使用特权

评论回复
评分
参与人数 1威望 +2 收起 理由
lphaff + 2 神马都是浮云
26
lphaff|  楼主 | 2013-11-22 13:22 | 只看该作者
zhangmangui 发表于 2013-11-22 00:00
不好意思啊  没有那么多的时间帮你分析
关于寄存器的相关配置我也就不住  还望你多多对比分析
参考TI提供 ...

谢谢哈。

我再看看

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则