智能车制作

标题: ADS1252 [打印本页]

作者: 欲望~控♂    时间: 2014-7-22 13:59
标题: ADS1252
小弟,现在正在调试TI 公司的24位AD,但是碰到了一些问题,上网查找也没得到什么好的资料,所以前来论坛看看是不是有大神已经玩过,能得小弟几点建议。相互交流交流。。。万分感激!


作者: 独孤行者    时间: 2014-7-22 13:59
欲望~控♂ 发表于 2014-7-24 20:14
我觉得我的时序控制的没什么问题,是要用逻辑分析仪来看吗?要是能跟我说一说整体控制策略那就最好了。
...

这个是我用DSP写的一个,在定时中断里用的
void Get_ADS1251_Sensor1()
{
        int temp=0;       
         Clk1_Count++;
                //clk取反
                 CLK1_LH;
                 if(Dout1_Ready==0)
                 {
                         if(Clk1_Count==1)
                         {
                                 Read_Data1=0;//AD数据清零
                                SCLK1_L;  
                                CLK1_L;
                         }
                         DOUT1_H;
                         temp=DOUT1_DATA;
                         DOUT1_L;                          
                         if (Dout1_Ready==0&&temp == 1)//如果检测到Dout高电平
                         {
                                 Dout1_Ready=1;
                          }        
                 }
                 else if(Dout1_Ready==1)//READY阶段
                 {
                         Clk72_Count1++;
                         if(Clk72_Count1>=75)
                         {
                                 Clk72_Count1=0;
                                 Dout1_Ready=2;
                         }
                 }       
                 else if(Dout1_Ready==2)
                 {
                          ClkDout1_Count++;
                         if(ClkDout1_Count==2)
                         {  Read_Count1++;       
                                 SCLK1_H;                
                                 DOUT1_H;
                                 temp=DOUT1_DATA;
                                 DOUT1_L;
                            Read_Data1=Read_Data1+temp;
                         }
                         if(ClkDout1_Count==4)
                         {
                                SCLK1_L;
                                if(Read_Count1 < ADS1251_BIT)
                                         Read_Data1 =Read_Data1<<1;
                                if(Read_Count1>=ADS1251_BIT)
                                {
                                         Dout1_Ready=0;               
                                         Read_Count1=0;
                                         Data1_Count++;
                                         Clk1_Count=0;
                                         DATA1_SUM=DATA1_SUM+Read_Data1;
                                 }
                                 ClkDout1_Count=0;
                         }
                 }       
}
/***************************************************************************************/       



作者: 独孤行者    时间: 2014-7-22 16:56
控制好时序就行了
作者: 欲望~控♂    时间: 2014-7-22 23:09
独孤行者 发表于 2014-7-22 16:56
控制好时序就行了

嗯 断断续续高了一天了 ,感觉输出还是不对那您可以帮我看看吗?


作者: 独孤行者    时间: 2014-7-24 17:42
欲望~控♂ 发表于 2014-7-22 23:09
嗯 断断续续高了一天了 ,感觉输出还是不对那您可以帮我看看吗?

之前用过ads1251,你给clk方波之后,看Dout输出的波形是不是帧头,主要是SCLK怎么控制。

作者: 独孤行者    时间: 2014-7-24 17:44
欲望~控♂ 发表于 2014-7-22 23:09
嗯 断断续续高了一天了 ,感觉输出还是不对那您可以帮我看看吗?

[attach]66202[/attach]

作者: 欲望~控♂    时间: 2014-7-24 20:14
本帖最后由 欲望~控♂ 于 2014-7-24 20:18 编辑
独孤行者 发表于 2014-7-24 17:44

我觉得我的时序控制的没什么问题,是要用逻辑分析仪来看吗?要是能跟我说一说整体控制策略那就最好了。
  1. #include "ADS1252.h"

  2. #include "ftm.h"
  3. #include "gpio.h"
  4. #include "common.h"

  5. unsigned char ads_data1,ads_data2,ads_data3;
  6. unsigned char temp1=0x80;
  7. long a;

  8. void ADS1252_Int(uint32_t req)
  9. {
  10.         FTM_PWM_QuickInit(FTM0_CH2_PA05,kPWM_EdgeAligned,req);
  11.         FTM_PWM_ChangeDuty(HW_FTM0, 2, 5000);
  12.        
  13.         GPIO_QuickInit(HW_GPIOC, 12, kGPIO_Mode_IFT);   //DOUT
  14.         GPIO_QuickInit(HW_GPIOC, 10, kGPIO_Mode_OPP);  //SCLK
  15.        
  16. }


  17. void StartADS1252(void)
  18. {
  19.                 ADS1252_SCLK = 1;
  20.                 DelayMs(200);     //TResetÂú×ã4TDRDY= TReset<20TDRDY(TDRDY=384t) t=1/f
  21.                 ADS1252_SCLK = 0;
  22.        
  23. }

  24. long ReadADS1252(void)
  25. {
  26.                 uint8_t i ;
  27.        
  28.                 ADS1252_SCLK = 1;
  29.                 DelayMs(10);
  30.                 ADS1252_SCLK = 0;
  31.                 DelayMs(10);
  32.                 if(ADS1252_DOUT==1) ads_data3+=temp1;
  33.                 temp1 >>= 1;
  34.                 for(i=0;i<7;i++)
  35.                 {
  36.                         ADS1252_SCLK = 1;
  37.                         DelayMs(10);
  38.                         ADS1252_SCLK = 0;
  39.                         DelayMs(10);
  40.                         if(ADS1252_DOUT==1) ads_data3+=temp1;
  41.                         temp1 >>= 1;
  42.                 }
  43.        
  44.                 temp1=0x80;
  45.                 for(i=0;i<8;i++)
  46.                 {
  47.                         ADS1252_SCLK = 1;
  48.                         DelayMs(10);
  49.                         ADS1252_SCLK = 0;
  50.                         DelayMs(10);
  51.                         if(ADS1252_DOUT==1) ads_data2+=temp1;
  52.                         temp1 >>= 1;
  53.                 }
  54.                
  55.                 temp1=0x80;
  56.                 for(i=0;i<8;i++)
  57.                 {
  58.                         ADS1252_SCLK = 1;
  59.                         DelayMs(10);
  60.                         ADS1252_SCLK = 0;
  61.                         DelayMs(10);
  62.                         if(ADS1252_DOUT==1) ads_data1+=temp1;
  63.                         temp1 >>= 1;
  64.                 }
  65.                
  66.                 a+=ads_data3;
  67.                 a=(a<<8);
  68.                 a+=ads_data2;
  69.                 a=(a<<8);
  70.                 a+=ads_data1;
  71. }
复制代码



作者: 独孤行者    时间: 2014-7-25 15:19
欲望~控♂ 发表于 2014-7-24 20:14
我觉得我的时序控制的没什么问题,是要用逻辑分析仪来看吗?要是能跟我说一说整体控制策略那就最好了。
...

你的CLK的控制呢?

作者: 欲望~控♂    时间: 2014-7-25 22:56
独孤行者 发表于 2014-7-25 15:19
你的CLK的控制呢?

clk是固定频率的方波,有单片机产生直接输入~





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2