微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 使用dsPIC33FJ128MC804的SPI读取ADT7320,出现问题

使用dsPIC33FJ128MC804的SPI读取ADT7320,出现问题

时间:10-02 整理:3721RD 点击:

SPI初始化程序:

//ADT7320的SPI配置

void initSPI(void)

{

IFS0bits.SPI1IF = 0; // Clear theInterrupt flag

IEC0bits.SPI1IE = 0; // Disable theinterrupt

//SPIxSTAT

SPI1STATbits.SPIEN=0;//禁止模块

SPI1STATbits.SPISIDL=0;//在空闲模式下模块继续工作

//SPIxCON1

SPI1CON1bits.DISSCK=0;//使能内部SPI时钟

SPI1CON1bits.DISSDO=0;//SDOx 引脚由模块控制

SPI1CON1bits.MODE16=0;//采用字宽(8位)通信

SPI1CON1bits.SMP=0;//在数据输出时间的中间采样输入数据

SPI1CON1bits.CKE=1;//串行输出数据在时钟从空闲状态转变为工作状态时变化

SPI1CON1bits.SSEN=1;//模块使用 SSx 引脚

SPI1CON1bits.CKP=1;//空闲状态时时钟信号为高电平;工作状态时为低电平

SPI1CON1bits.MSTEN=1;//主模式

SPI1CON1bits.SPRE=6;//2分频

SPI1CON1bits.PPRE=0;//64分频

//

SPI1STATbits.SPIEN=1;//开启模块

SPI1BUF=0x0000;

IFS0bits.SPI1IF = 0; // Clear theInterrupt flag

//上电后,复位串行接口(在DIN上连续输入32个逻辑1)。这可以确保所有内部电路被适当复位

SPI1BUF=0xff;Nop();

SPI1BUF=0xff;Nop();

SPI1BUF=0xff;Nop();

SPI1BUF=0xff;

DELAY_MS(1000);

}

//写一个字节程序

uchar SPI1_WRT(uchar A)

{uchar BUF;

SPI1BUF=A;

while(SPI1STATbits.SPITBF==1);//等待写结束

while(SPI1STATbits.SPIRBF==0);//等待写结束

BUF=SPI1BUF;

return(BUF);

}

//主程序内的程序

while(1)                                                    //01 011 000

      {     SPI1_WRT(0x58);Nop();                //寄存器0x03,读ID

           tempervalue=SPI1_WRT(0x58);

delay_ms(100);

}

按照PDF上说的,应该得到0xc3

而得到的是0xc2,  下一次读取的是0x01

0xc2, 0x01 0xc2, 0x01 0xc2, 0x01 ………这样循环


你好,不知道问题有没有得到解决?我用ADT7320的时候也碰到了这种现象,读0x03寄存器得到的是194,不过重复读取不会出现变化。
如果不管这个问题继续读取温度的话 会出现 30(正常温度) → -15 → 0 这种三个数据循环..

请问下ADT7320你们采用的是几伏供电?单片机是几伏的?

3.3V的

解决了吗

temp=ReadFromADT7320(0x02);        //读取温度值数据
          //处理温度值
          temp= temp >> 3;
          if( (temp & 0x8000) == 0x8000 )        
          {
                 //continue;
                 flag=1;
                 temp=8192-temp;         
          }
          di=temp>>4;       // ___.   
          dd=(temp%16)*625/10; // 0.____        4
          display(flag,di,dd);   
解决了,不过忘了具体的过程。

供电正常嘛

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top