打印
[AVR单片机]

m16的奇怪问题……(关于SPI)

[复制链接]
1208|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
airbunny|  楼主 | 2008-5-4 12:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
把一段原本用在M8上的SPI程序移植到M16上,用来连接ADS8345,结果发现,SPI根本不工作……

现象是:SPI的所有管脚都没有任何的输出,只是一直维持着高电平或者低电平。有的时候开机的前一两秒SCK上有时钟信号,然后就什么都没有了……

奇怪,不知是哪里出了问题。按理说不应该有什么问题呀……

拜托大家想想办法啦~

下面是代码~

初始化:
void vInitSPI(void)
{

    SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPIE);//开SPI
    
    vSelIO(2, 7, 1);
    vSelIO(2, 6, 0);
    vSelIO(2, 5, 1);

    vWriteIO(2, 5);
    vWriteIO(2, 6);
    vWriteIO(2, 7);
}

下面是SPI通信
uint8 nRes;
SPCR|=(1<<SPE)|(1<<MSTR)|(1<<SPIE);//开SPI
SPF=0;
SPDR=nCom;
      
while(SPF!=1)
{};
      
nRes=SPDR;
      
return nRes;

相关帖子

沙发
lintar| | 2008-5-4 14:03 | 只看该作者

对比寄存器

    vSelIO(2, 7, 1);
    vSelIO(2, 6, 0);
    vSelIO(2, 5, 1);

    vWriteIO(2, 5);
    vWriteIO(2, 6);
    vWriteIO(2, 7);

请问是这几条语句什么意思呀?
检查下M16和M8的特殊功能寄存器的位吧!有可能不一样!

使用特权

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

本版积分规则

12

主题

24

帖子

0

粉丝