如图,采集出来的结果竟然是32768 的数字,(我把输入接地后,跟不接地,均是32768)。求大神指点。。。
uint16 Read_ADS8317()
{
uint16 AD_Value=0,i=0;
// delay_us(1);
AD_CS_L;//SCLK_H;
AD_CLK_L;delay(72);
AD_CLK_H;delay(72);
AD_CLK_L;delay(72);
AD_CLK_H;delay(72);
AD_CLK_L;delay(72);
AD_CLK_H;delay(72);
AD_CLK_L;delay(72);
AD_CLK_H;delay(72);
AD_CLK_L;delay(72);
AD_CLK_H;delay(72);
AD_CLK_L;delay(72);
AD_CLK_H;delay(72);
for(i=0;i<16;i++)
{ AD_CLK_L;
delay(72);
AD_CLK_H;
AD_Value = AD_Value << 1;
if(AD_DA_IN)
{
AD_Value = AD_Value | 0x0001;
} delay(72);
} AD_CS_H;
return AD_Value;
}
Wanda WANG:
估计是时序问题。最好用示波器把波形抓出来分析。 另外需要确定delay(72)延迟时间是多少?
jesliebest:
请问楼主这段代码还在么?想模拟spi一直没写出来,能发给我么?
panpan ren:
回复 jesliebest:
有啊,帖子上不就有吗
jesliebest:
回复 panpan ren:
能说说dalay函数怎么写的么。。。谢谢啦
panpan ren:
回复 jesliebest:
哦,是这样的,我的单片机主频72MHZ,然后delay函数是这样,很简单
void delay(long x)
{
while(x–);}
所以72的话,应该要大于1US的时间
jesliebest:
回复 panpan ren:
嗯,谢谢,我再试试