打印

Mcbsp设置SPI模式数据无法传输

[复制链接]
1624|6
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
折纸人G|  楼主 | 2017-4-26 21:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请大家帮忙看看,DSPF2812的mcbsp设置SPI模式,DSP为主机,从机是AVR ATMEGA128,时钟停止模式,时钟频率分频后是37.5M,这里的SCK是MFSX引脚出来,1.875M。

问题应该是出在AVR里面,仿真时无论是从机接收还是从机发送,程序总是卡在while(!(SPSR&(1<<SPIF)));这里,看资料上的描述,SPIF这一位在数据传输结束后会自动置位,可是程序里一直是0.

AVR从机初始化如下

void SPI_SlaveInit(void)
{
         /* 设置MOSI、SCK CS为输入,MISO为输出
                           CS        SCK  MOSI  MISO
                        PB0 PB1  PB2   PB3
                        I        I       I      O
                        0       0       0     1
        */
        DDRB&=0x00;
        DDRB|=0x08;              
        SPCR |=(1<<SPE)|(1<<CPHA);            //SPI允许,从机模式,高字节在前,工作模式0,4分频
                                                                  //SPIE  SPE  DORD  MSTR  CPOL  CPHA  SPR1  SPR0
                                                                 //0      1        0        0        0     1        0        0   
}
在一些例程里也没有看到将接收器和发送器使能的语句,不知道是不是这个问题。SPE是使能SPI,CHPA是设置发送接收在上升下降沿的。
接收和发送子函数如下
char SPI_SlaveSend(char sdata)
{
          SPDR=sdata;                       //把数据放入SPI数据寄存器,开始发送
          while(!(SPSR&(1<<SPIF)));                        //等待数据传输结束
          return SPDR;                 //接收主机传来的数据
}


char SPI_SlaveReceive(void)
{
        while(!(SPSR&(1<<SPIF)));
        return SPDR;
}

相关帖子

沙发
zhangmangui| | 2017-4-26 22:39 | 只看该作者
这个经常有很多网友遇到各种问题   你不如那IO口模拟的

使用特权

评论回复
板凳
折纸人G|  楼主 | 2017-4-26 22:50 | 只看该作者
zhangmangui 发表于 2017-4-26 22:39
这个经常有很多网友遇到各种问题   你不如那IO口模拟的

不行啊,课题要求的

使用特权

评论回复
地板
zhangmangui| | 2017-4-27 21:59 | 只看该作者
折纸人G 发表于 2017-4-26 22:50
不行啊,课题要求的

n年前玩的2812    那你只能找找网上资源了

使用特权

评论回复
5
折纸人G|  楼主 | 2017-4-28 15:21 | 只看该作者
zhangmangui 发表于 2017-4-27 21:59
n年前玩的2812    那你只能找找网上资源了

好吧,谢谢

使用特权

评论回复
6
angerbird| | 2017-4-29 14:43 | 只看该作者
是不是时钟有啥问题的

使用特权

评论回复
7
折纸人G|  楼主 | 2017-4-29 16:39 | 只看该作者
angerbird 发表于 2017-4-29 14:43
是不是时钟有啥问题的

其实我有一个问题一直不太懂,就是DSP是主机的时候,采样率发生器产生帧同步时钟我可以理解。但是为什么DSP是从机的时候,依旧要设置采样率发生器来同步MCBSP与外部主时钟?这个发生器产生的时钟是用在片选信号了?片选信号不是输入么,不应该是主机提供么?

使用特权

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

本版积分规则

1

主题

4

帖子

0

粉丝