在调ADS8345时,采用模拟SPI控制ADS8345,但时钟波形出现如下如所示,在上升沿和下降沿有个峰值,出现这个的原因?怎么解决啊?会不会对数据的传输有影响? |
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一直没有正常工作!下面是我的程序和实验波形,您帮忙看看有什么问题?
#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输出一直没有正常出数据!