This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

关于ADS8345的问题

Other Parts Discussed in Thread: ADS8345
在调ADS8345时,采用模拟SPI控制ADS8345,但时钟波形出现如下如所示,在上升沿和下降沿有个峰值,出现这个的原因?怎么解决啊?会不会对数据的传输有影响?
  • 在上升沿和下降沿有个过冲尖峰, 不影响数据传输, 但过大可能损坏芯片

  • 您好!现在ADS8345一直没有正常工作!下面是我的程序和实验波形,您帮忙看看有什么问题?

    #include "spi_simulation.h"
    #include "stdio.h"

    void Delay_us(__IO uint32_t nTime)
    {
    u32 temp;
    SysTick->LOAD = 9*nTime - 1;
    SysTick->VAL = 0x00; //¼ÆÊýÆ÷ÇåÁã
    SysTick->CTRL =0x01;
    do
    {
    temp=SysTick->CTRL;//
    }while((temp&0x01)&&(!(temp&(1<<16))));
    SysTick->CTRL =0x00;//¹Ø¶¨Ê±Æ÷
    SysTick->VAL =0x00; //¼ÆÊýÆ÷ÇåÁã
    }

    void Spi_Simulation_Init(void)
    {
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);

    GPIO_InitStructure.GPIO_Pin=ADS8345_CLK_PIN|ADS8345_CS_PIN|ADS8345_DIN_PIN;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(Spi_Simulation_Port,&GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin=ADS8345_BUSY_PIN|ADS8345_DOUT_PIN;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING;
    GPIO_Init(Spi_Simulation_Port,&GPIO_InitStructure);

    ADS8345_CS_SET;
    ADS8345_CLK_RESET;
    ADS8345_DIN_RESET;
    }

    uint16_t ADS8345_GetValue(uint8_t SetValue)
    {
    uint8_t i=0;
    uint16_t ADSValue=0;

    ADS8345_CLK_RESET;
    ADS8345_DIN_SET;
    ADS8345_CS_RESET;
    Delay_us(1);

    for(i=0;i<8;i++)
    {
    if(SetValue&0x80)
    {ADS8345_DIN_SET;}
    else
    {ADS8345_DIN_RESET;}
    SetValue<<=1;
    ADS8345_CLK_RESET;
    Delay_us(2);
    ADS8345_CLK_SET;
    Delay_us(2);
    }

    // ADS8345_CLK_RESET;
    // Delay_us(5);
    // while(ADS8345_BUSY_Value==SET);

    ADS8345_DIN_RESET;
    ADS8345_CLK_RESET;
    Delay_us(2);
    ADS8345_CLK_SET;
    Delay_us(2);


    for(i=0;i<24;i++)
    {
    ADS8345_CLK_SET;
    Delay_us(2);
    ADS8345_CLK_RESET;
    Delay_us(2);
    if(ADS8345_DOUT)
    {ADSValue|=0x0001;}
    else
    {ADSValue&=0xFFFE;}
    if(i<16)
    ADSValue<<=1;

    }

    ADS8345_CLK_RESET;
    ADS8345_DIN_RESET;
    Delay_us(2);
    ADS8345_CS_SET;

    return ADSValue;
    }

    以下为实验波形:

    ADS输入端DIN波形

    ADS8345的BUSY输出端的波形

    输入2.5V时的DOUT端数据输出波形

    将输入通道接地的DOUT输出波形

    您好!我想问一下在片选信号CS=1时,ADS8345的BUSY脚和DOUT脚应该是什么状态?在调试过程中,DOUT输出一直没有正常出数据!