打印

AD7705采集不了电压,DRDY老是高电平,求大佬帮忙

[复制链接]
1564|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cyl395|  楼主 | 2022-4-19 19:27 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
#include "adc.h"
#include "stm32f4xx.h"
#include "delay.h"

// CS                 VDD
//CLK   SPI-SCK  PB3
//DOUT    MISO   PB4
// DIN          MOSI          PB5
// DRDY         PB8
//RST    PB9

//ÒÔÏÂÊÇSPIÄ£¿éµÄ³õʼ»¯´úÂ룬ÅäÖóÉÖ÷»úģʽ                                                   
//SPI¿Ú³õʼ»¯
//ÕâÀïÕëÊǶÔSPI1µÄ³õʼ»¯                        
                 
void SPI1_Init(void)
{         
  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef  SPI_InitStructure;
       


       
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//ʹÄÜGPIOBʱÖÓ
                          
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//PB8
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//ÆÕͨÊäÈëģʽ
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ÉÏÀ­
  GPIO_Init(GPIOF, &GPIO_InitStructure);//³õʼ»¯
        GPIO_SetBits(GPIOB,GPIO_Pin_8);
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//PB9
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//ÆÕͨÊä³öģʽ
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//ÍÆÍìÊä³ö
  GPIO_Init(GPIOF, &GPIO_InitStructure);//³õʼ»¯
  GPIO_SetBits(GPIOB,GPIO_Pin_9);
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);//ʹÄÜSPI1ʱÖÓ
  //GPIOB3,4,5³õʼ»¯ÉèÖÃ
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;//PB3~5¸´Óù¦ÄÜÊä³ö       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜ
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//ÍÆÍìÊä³ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ÉÏÀ­
  GPIO_Init(GPIOB, &GPIO_InitStructure);//³õʼ»¯

        GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3¸´ÓÃΪ SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4¸´ÓÃΪ SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5¸´ÓÃΪ SPI1
       
          SPI_Cmd(SPI1, DISABLE); //ʧÄÜÄÜSPIÍâÉè
               
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //ÉèÖÃSPIµ¥Ïò»òÕßË«ÏòµÄÊý¾Ýģʽ:SPIÉèÖÃΪ˫ÏßË«ÏòÈ«Ë«¹¤
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                //ÉèÖÃSPI¹¤×÷ģʽ:ÉèÖÃΪÖ÷SPI
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                //ÉèÖÃSPIµÄÊý¾Ý´óС:SPI·¢ËͽÓÊÕ8λ֡½á¹¹
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                //´®ÐÐͬ²½Ê±ÖӵĿÕÏÐ״̬Ϊ¸ßµçƽ
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;        //´®ÐÐͬ²½Ê±Öӵĵڶþ¸öÌø±äÑØ£¨ÉÏÉý»òϽµ£©Êý¾Ý±»²ÉÑù
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSSÐźÅÓÉÓ²¼þ£¨NSS¹Ü½Å£©»¹ÊÇÈí¼þ£¨Ê¹ÓÃSSI룩¹ÜÀí:ÄÚ²¿NSSÐźÅÓÐSSIλ¿ØÖÆ
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;                //¶¨Ò岨ÌØÂÊÔ¤·ÖƵµÄÖµ:²¨ÌØÂÊÔ¤·ÖƵֵΪ256
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;        //Ö¸¶¨Êý¾Ý´«Êä´ÓMSBλ»¹ÊÇLSBλ¿ªÊ¼:Êý¾Ý´«Êä´ÓMSBλ¿ªÊ¼
        SPI_InitStructure.SPI_CRCPolynomial = 7;        //CRCÖµ¼ÆËãµÄ¶àÏîʽ
        SPI_Init(SPI1, &SPI_InitStructure);  //¸ù¾ÝSPI_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèSPIx¼Ä´æÆ÷

        SPI_Cmd(SPI1, ENABLE); //ʹÄÜSPIÍâÉè

        SPI1_ReadWriteByte(0xff);//Æô¶¯´«Êä                 
}   
//SPI1ËÙ¶ÈÉèÖú¯Êý
//SPIËÙ¶È=fAPB2/·ÖƵϵÊý
//@ref SPI_BaudRate_Prescaler:SPI_BaudRatePrescaler_2~SPI_BaudRatePrescaler_256  
//fAPB2ʱÖÓÒ»°ãΪ84Mhz£º
void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler)
{
  assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//ÅжÏÓÐЧÐÔ
        SPI1->CR1&=0XFFC7;//λ3-5ÇåÁ㣬ÓÃÀ´ÉèÖò¨ÌØÂÊ
        SPI1->CR1|=SPI_BaudRatePrescaler;        //ÉèÖÃSPI1ËÙ¶È
        SPI_Cmd(SPI1,ENABLE); //ʹÄÜSPI1
}
//SPI1 ¶Áдһ¸ö×Ö½Ú
//TxData:ҪдÈëµÄ×Ö½Ú
//·µ»ØÖµ:¶ÁÈ¡µ½µÄ×Ö½Ú
u8 SPI1_ReadWriteByte(u8 TxData)
{                                          

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)== RESET){}//µÈ´ý·¢ËÍÇø¿Õ  
       
        SPI_I2S_SendData(SPI1, TxData); //ͨ¹ýÍâÉèSPIx·¢ËÍÒ»¸öbyte  Êý¾Ý
               
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){} //µÈ´ý½ÓÊÕÍêÒ»¸öbyte  

        return SPI_I2S_ReceiveData(SPI1); //·µ»Øͨ¹ýSPIx×î½ü½ÓÊÕµÄÊý¾Ý       
                    
}


//====================================
//º¯ÊýÃû:£Svoid AD7705_WriteByte(u8 Dst_Addr)     
//×÷Ó㺠   AD7705д¹¦ÄÜ
//ÊäÈ룺   
//·µ»ØÖµ£º
//===================================
void AD7705_WriteByte(u8 Dst_Addr)   
{   
        SPI1_ReadWriteByte(Dst_Addr);
}


//====================================
//º¯ÊýÃû:£Svoid Init_AD7705(u8 chnanel)     
//×÷Ó㺠   AD7705³õʼ»¯º¯Êý
//ÊäÈ룺   
//·µ»ØÖµ£º
//===================================



void Init_AD7705(u8 chnanel)
{
    u8 i;
                GPIO_ResetBits(GPIOB,GPIO_Pin_9);
                delay_ms(2);
                GPIO_SetBits(GPIOB,GPIO_Pin_9);
          delay_ms(2);
          GPIO_ResetBits(GPIOB,GPIO_Pin_9);
                delay_ms(2);
    for(i=0;i<4;i++)//¶àÓÚÁ¬Ðø32¸ö DIN=1 ʹ´®¿Ú¸´Î»
    {
                AD7705_WriteByte(0xff);//³ÖÐøDIN¸ßµçƽд²Ù×÷£¬»Ö¸´AD7705½Ó¿Ú
        }  
                delay_ms(2);

                        AD7705_WriteByte(0x20); // дͨѶ¼Ä´æÆ÷ÉèÖÃʱÖӼĴæÆ÷
                        AD7705_WriteByte(0x02); // 2.4576MHzʱÖÓ.100HzÊý¾Ý¸üÐÂËÙÂÊ  
                        AD7705_WriteByte(0x10); //Ñ¡ÔñÉèÖüĴæÆ÷,ʹÓÃchnanel 1
                        AD7705_WriteByte(0x44); //дÉèÖüĴæÆ÷ ,ÉèÖóÉË«¼«ÐÔ¡¢ÎÞ»º³å¡¢ÔöÒæΪ1¡¢Â˲¨Æ÷¹¤×÷¡¢×ÔУ׼
        }



//====================================
//º¯ÊýÃû:£Su16 GetData7705_CH1(void)   
//×÷Ó㺠   ¶ÁAD7705ת»»Êý¾Ý
//ÊäÈ룺   ÊäÈëͨµÀchannel
//·µ»ØÖµ£º ¶ÁÈ¡Öµ
//===================================



u16 GetData7705_CH1(void)
{
  u16 temp1 = 0;
        u16 DataL = 0;
  u16 DataH = 0;
        Init_AD7705(1);                        //³õʼ»¯Í¨µÀ1
        delay_ms(1);
        AD7705_WriteByte(0x38);   //Ñ¡ÖÐCH1Êý¾Ý¼Ä´æÆ÷¶Á  
  while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8)==1)
                {;}  //´ýÊý¾Ý×¼±¸ºÃAdDrdy=0  
        delay_ms(10);
        DataH = SPI1_ReadWriteByte(0xff);
        DataL = SPI1_ReadWriteByte(0xff);
        delay_us(200);
        DataH = DataH << 8;
  temp1  =  DataH | DataL;

  return temp1;
}

//====================================
//º¯ÊýÃû:£Sfloat Get_Data_AD7705_ch1(u8 chnanel)   
//×÷Ó㺠  Êý¾Ý´¦Àí....3´Î²É¼¯È¡Æ½¾ù
//ÊäÈ룺   Í¨µÀÖµ
//·µ»ØÖµ£º ²É¼¯Æ½¾ùÖµ
//×¢£º×ÜÑÓʱͨµÀ1 220*6
//===================================


float Get_Data_AD7705_ch1(u8 chnanel)
{
          u32         sum=0;
        u16 ad_get=0;
  float Get_Data_AD7705=0;
        u8 i=0;
           for(i=0;i<3;i++)
            {       
                                ad_get = GetData7705_CH1();   // = GetData7705_CH1();
                                sum=sum+ad_get;
        ad_get=0;                               
                          }
                                                              
  Get_Data_AD7705=sum/3;                       
  return Get_Data_AD7705;



}

老是在判断DRDY上出现问题,drdy接地却只能显示65535,大佬们看下是因为我引脚配置错了吗?spi用的是f4历程里面的

使用特权

评论回复
沙发
cyl395|  楼主 | 2022-4-19 19:35 | 只看该作者

AD7705采集不了电压,DRDY老是高电平,求大佬帮忙

#include "adc.h"
#include "stm32f4xx.h"
#include "delay.h"

// CS                 VDD
//CLK   SPI-SCK  PB3
//DOUT    MISO   PB4
// DIN          MOSI          PB5
// DRDY         PB8
//RST    PB9

//ÒÔÏÂÊÇSPIÄ£¿éµÄ³õʼ»¯´úÂ룬ÅäÖóÉÖ÷»úģʽ                                                   
//SPI¿Ú³õʼ»¯
//ÕâÀïÕëÊǶÔSPI1µÄ³õʼ»¯                        
                 
void SPI1_Init(void)
{         
  GPIO_InitTypeDef  GPIO_InitStructure;
  SPI_InitTypeDef  SPI_InitStructure;
       


       
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, ENABLE);//使能gpiob时钟
                          
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;//PB8
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;//普通输入
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//上拉
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化¯
        GPIO_SetBits(GPIOB,GPIO_Pin_8);
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;//PB9
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;//普通输出
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//50MHz
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//推挽输出
  GPIO_Init(GPIOF, &GPIO_InitStructure);//初始化
  GPIO_SetBits(GPIOB,GPIO_Pin_9);
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_SPI1, ENABLE);//是能spi
  //GPIOB3,4,5³õʼ»¯ÉèÖÃ
       
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5;//PB3~5¸´Óù¦ÄÜÊä³ö       
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//¸´Óù¦ÄÜ
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;//ÍÆÍìÊä³ö
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;//100MHz
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;//ÉÏÀ­
  GPIO_Init(GPIOB, &GPIO_InitStructure);//³õʼ»¯

        GPIO_PinAFConfig(GPIOB,GPIO_PinSource3,GPIO_AF_SPI1); //PB3¸´ÓÃΪ SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource4,GPIO_AF_SPI1); //PB4¸´ÓÃΪ SPI1
        GPIO_PinAFConfig(GPIOB,GPIO_PinSource5,GPIO_AF_SPI1); //PB5¸´ÓÃΪ SPI1
       
          SPI_Cmd(SPI1, DISABLE); //ʧÄÜÄÜSPIÍâÉè
               
        SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;  //ÉèÖÃSPIµ¥Ïò»òÕßË«ÏòµÄÊý¾Ýģʽ:SPIÉèÖÃΪ˫ÏßË«ÏòÈ«Ë«¹¤
        SPI_InitStructure.SPI_Mode = SPI_Mode_Master;                //ÉèÖÃSPI¹¤×÷ģʽ:ÉèÖÃΪÖ÷SPI
        SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;                //ÉèÖÃSPIµÄÊý¾Ý´óС:SPI·¢ËͽÓÊÕ8λ֡½á¹¹
        SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                //´®ÐÐͬ²½Ê±ÖӵĿÕÏÐ״̬Ϊ¸ßµçƽ
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;        //´®ÐÐͬ²½Ê±Öӵĵڶþ¸öÌø±äÑØ£¨ÉÏÉý»òϽµ£©Êý¾Ý±»²ÉÑù
        SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;                //NSSÐźÅÓÉÓ²¼þ£¨NSS¹Ü½Å£©»¹ÊÇÈí¼þ£¨Ê¹ÓÃSSI룩¹ÜÀí:ÄÚ²¿NSSÐźÅÓÐSSIλ¿ØÖÆ
        SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_256;                //¶¨Ò岨ÌØÂÊÔ¤·ÖƵµÄÖµ:²¨ÌØÂÊÔ¤·ÖƵֵΪ256
        SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;        //Ö¸¶¨Êý¾Ý´«Êä´ÓMSBλ»¹ÊÇLSBλ¿ªÊ¼:Êý¾Ý´«Êä´ÓMSBλ¿ªÊ¼
        SPI_InitStructure.SPI_CRCPolynomial = 7;        //CRCÖµ¼ÆËãµÄ¶àÏîʽ
        SPI_Init(SPI1, &SPI_InitStructure);  //¸ù¾ÝSPI_InitStructÖÐÖ¸¶¨µÄ²ÎÊý³õʼ»¯ÍâÉèSPIx¼Ä´æÆ÷

        SPI_Cmd(SPI1, ENABLE); //ʹÄÜSPIÍâÉè

        SPI1_ReadWriteByte(0xff);//Æô¶¯´«Êä                 
}   
//SPI1ËÙ¶ÈÉèÖú¯Êý
//SPIËÙ¶È=fAPB2/·ÖƵϵÊý
//@ref SPI_BaudRate_Prescaler:SPI_BaudRatePrescaler_2~SPI_BaudRatePrescaler_256  
//fAPB2ʱÖÓÒ»°ãΪ84Mhz£º
void SPI1_SetSpeed(u8 SPI_BaudRatePrescaler)
{
  assert_param(IS_SPI_BAUDRATE_PRESCALER(SPI_BaudRatePrescaler));//ÅжÏÓÐЧÐÔ
        SPI1->CR1&=0XFFC7;//λ3-5ÇåÁ㣬ÓÃÀ´ÉèÖò¨ÌØÂÊ
        SPI1->CR1|=SPI_BaudRatePrescaler;        //ÉèÖÃSPI1ËÙ¶È
        SPI_Cmd(SPI1,ENABLE); //ʹÄÜSPI1
}
//SPI1 ¶Áдһ¸ö×Ö½Ú
//TxData:ҪдÈëµÄ×Ö½Ú
//·µ»ØÖµ:¶ÁÈ¡µ½µÄ×Ö½Ú
u8 SPI1_ReadWriteByte(u8 TxData)
{                                          

  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE)== RESET){}//µÈ´ý·¢ËÍÇø¿Õ  
       
        SPI_I2S_SendData(SPI1, TxData); //ͨ¹ýÍâÉèSPIx·¢ËÍÒ»¸öbyte  Êý¾Ý
               
  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET){} //µÈ´ý½ÓÊÕÍêÒ»¸öbyte  

        return SPI_I2S_ReceiveData(SPI1); //·µ»Øͨ¹ýSPIx×î½ü½ÓÊÕµÄÊý¾Ý       
                    
}


//====================================

//===================================
void AD7705_WriteByte(u8 Dst_Addr)   
{   
        SPI1_ReadWriteByte(Dst_Addr);
}


//====================================
//===================================



void Init_AD7705(u8 chnanel)
{
    u8 i;
                GPIO_ResetBits(GPIOB,GPIO_Pin_9);
                delay_ms(2);
                GPIO_SetBits(GPIOB,GPIO_Pin_9);
          delay_ms(2);
          GPIO_ResetBits(GPIOB,GPIO_Pin_9);
                delay_ms(2);
    for(i=0;i<4;i++)//多于32个1复位
    {
                AD7705_WriteByte(0xff);//
        }  
                delay_ms(2);

                        AD7705_WriteByte(0x20); // 写通讯寄存器设置时钟寄存器
                        AD7705_WriteByte(0x02); // 2.4576MHz+100hz更新速率
                        AD7705_WriteByte(0x10); //写通讯寄存器设置通道一
                        AD7705_WriteByte(0x44); //双极性、无缓冲、增益为一、滤波器工作、自校准
        }



//====================================

//===================================



u16 GetData7705_CH1(void)
{
  u16 temp1 = 0;
        u16 DataL = 0;
  u16 DataH = 0;
        Init_AD7705(1);                        //初始化1通道
        delay_ms(1);
        AD7705_WriteByte(0x38);   //读1通道寄存器
  while(GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_8)==1)
                {;}  //准备AdDrdy=0  
        delay_ms(10);
        DataH = SPI1_ReadWriteByte(0xff);
        DataL = SPI1_ReadWriteByte(0xff);
        delay_us(200);
        DataH = DataH << 8;
  temp1  =  DataH | DataL;

  return temp1;
}

//====================================
//===================================


float Get_Data_AD7705_ch1(u8 chnanel)
{
          u32         sum=0;
        u16 ad_get=0;
  float Get_Data_AD7705=0;
        u8 i=0;
           for(i=0;i<3;i++)
            {       
                                ad_get = GetData7705_CH1();   // = GetData7705_CH1();
                                sum=sum+ad_get;
        ad_get=0;                               
                          }
                                                              
  Get_Data_AD7705=sum/3;                       
  return Get_Data_AD7705;



}

使用特权

评论回复
板凳
cyl395|  楼主 | 2022-4-19 19:36 | 只看该作者

AD7705采集不了电压,DRDY老是高电平,求大佬帮忙

大佬们,帮帮忙

使用特权

评论回复
地板
xch| | 2022-4-20 11:40 | 只看该作者
SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;                //´®ÐÐͬ²½Ê±ÖӵĿÕÏÐ״̬Ϊ¸ßµçƽ
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;

这初始化参数错了

使用特权

评论回复
评论
cyl395 2022-4-25 19:50 回复TA
我看f4例程里面也是这样的啊,那该改成什么?按他读取时序图来吗? 
5
xch| | 2022-4-25 20:09 | 只看该作者
本帖最后由 xch 于 2022-4-25 20:18 编辑

根据此图修改。

根据此图,SCLK 为低电平时,允许数据总线变化,SCLK 上升沿采集数据。
不要给CS信号给忽悠了。SCLK 在CS 信号为低前就可以为低电平。
几乎世界上99% spi 设备都是这种驱动模式。也就是SPI接口复位后默认方式就是正确的。即复位后对应这两个时序控制位逻辑为0.

SPI_InitStructure.SPI_CPOL = SPI_CPOL_Low;                //初始状态为低电平
        SPI_InitStructure.SPI_CPHA = SPI_CPHA_1Edge;    //第一边沿采集数据




使用特权

评论回复
评论
cyl395 2022-4-26 19:31 回复TA
大佬,昨天把I/O 口接错了,我今天再调试了一下,发现还是不对?程序还是跑死 
6
cyl395|  楼主 | 2022-4-25 20:32 | 只看该作者
xch 发表于 2022-4-25 20:09
根据此图修改。

根据此图,SCLK 为低电平时,允许数据总线变化,SCLK 上升沿采集数据。

明白了,感谢,搞了三周的难题终于解决了,感谢,

使用特权

评论回复
评论
cyl395 2022-4-26 19:20 回复TA
大佬,我今天再调试了一下,发现还是不对? 
7
xch| | 2022-4-26 19:53 | 只看该作者
cyl395 发表于 2022-4-25 20:32
明白了,感谢,搞了三周的难题终于解决了,感谢,

CS#  这支脚接那里了?VDD?
  

使用特权

评论回复
评论
cyl395 2022-4-28 16:18 回复TA
@地瓜patch :晶振没有问题,我测DRDY引脚出来是个正弦,频率都跑1khz了 
cyl395 2022-4-28 12:33 回复TA
晶振我还换了一个,但不知道起振了没有 
cyl395 2022-4-28 12:32 回复TA
@地瓜patch我再检查检查吧 
地瓜patch 2022-4-27 20:30 回复TA
@cyl395 :可能是没焊好,或引脚短路之类的 
cyl395 2022-4-27 15:24 回复TA
@地瓜patch :是指芯片坏了吗? 
地瓜patch 2022-4-26 22:32 回复TA
@cyl395 :觉得是硬件问题 
cyl395 2022-4-26 19:57 回复TA
rest是悬空的 
cyl395 2022-4-26 19:56 回复TA
GND,只是写错了 
8
xch| | 2022-4-27 00:11 | 只看该作者
看样子你的代码没啥问题,我说的不对。还是硬件问题吧。

使用特权

评论回复
评论
cyl395 2022-4-28 12:31 回复TA
应该没有问题,我用的师兄的焊的,下午我再看看吧 
9
xch| | 2022-4-27 21:06 | 只看该作者
晶体有没有问题?

使用特权

评论回复
评论
cyl395 2022-4-28 16:18 回复TA
晶振没有问题,我测DRDY引脚出来是个正弦,频率都跑1khz了 
cyl395 2022-4-28 12:42 回复TA
我之前换了一个,现在我不知道他起振了吗 
10
cyl395|  楼主 | 2022-4-29 19:30 | 只看该作者
解决了,导师给的ad芯片是坏的,换了新的就能用了,感谢大佬的帮助

使用特权

评论回复
11
芯片李现| | 2022-5-12 11:40 | 只看该作者

AD7705采集不了电压,DRDY老是高电平,求大佬帮忙

ADI的替代芯片,有兴趣的可以了解,毕竟价格便宜很多,可以送样测试

使用特权

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

本版积分规则

1

主题

17

帖子

0

粉丝