智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2052|回复: 8
打印 上一主题 下一主题

[软件类] ADS1252

[复制链接]

13

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
威望
550
贡献
288
兑换币
335
注册时间
2013-12-3
在线时间
81 小时
毕业学校
上海工程技术大学
跳转到指定楼层
1#
发表于 2014-7-22 13:59:34 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1贡献
小弟,现在正在调试TI 公司的24位AD,但是碰到了一些问题,上网查找也没得到什么好的资料,所以前来论坛看看是不是有大神已经玩过,能得小弟几点建议。相互交流交流。。。万分感激!

最佳答案

查看完整内容

这个是我用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_Rea ...
回复

使用道具 举报

4

主题

41

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1201
威望
634
贡献
359
兑换币
296
注册时间
2012-2-8
在线时间
104 小时
2#
发表于 2014-7-22 13:59:35 | 只看该作者
欲望~控♂ 发表于 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;
                         }
                 }       
}
/***************************************************************************************/       


回复

使用道具 举报

4

主题

41

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1201
威望
634
贡献
359
兑换币
296
注册时间
2012-2-8
在线时间
104 小时
3#
发表于 2014-7-22 16:56:43 | 只看该作者
控制好时序就行了
回复

使用道具 举报

13

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
威望
550
贡献
288
兑换币
335
注册时间
2013-12-3
在线时间
81 小时
毕业学校
上海工程技术大学
4#
 楼主| 发表于 2014-7-22 23:09:44 | 只看该作者
独孤行者 发表于 2014-7-22 16:56
控制好时序就行了

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

回复

使用道具 举报

4

主题

41

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1201
威望
634
贡献
359
兑换币
296
注册时间
2012-2-8
在线时间
104 小时
5#
发表于 2014-7-24 17:42:37 | 只看该作者
欲望~控♂ 发表于 2014-7-22 23:09
嗯 断断续续高了一天了 ,感觉输出还是不对那您可以帮我看看吗?

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

使用道具 举报

4

主题

41

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1201
威望
634
贡献
359
兑换币
296
注册时间
2012-2-8
在线时间
104 小时
6#
发表于 2014-7-24 17:44:45 | 只看该作者
欲望~控♂ 发表于 2014-7-22 23:09
嗯 断断续续高了一天了 ,感觉输出还是不对那您可以帮我看看吗?


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

13

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
威望
550
贡献
288
兑换币
335
注册时间
2013-12-3
在线时间
81 小时
毕业学校
上海工程技术大学
7#
 楼主| 发表于 2014-7-24 20:14:52 | 只看该作者
本帖最后由 欲望~控♂ 于 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. }
复制代码


回复

使用道具 举报

4

主题

41

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1201
威望
634
贡献
359
兑换币
296
注册时间
2012-2-8
在线时间
104 小时
8#
发表于 2014-7-25 15:19:23 | 只看该作者
欲望~控♂ 发表于 2014-7-24 20:14
我觉得我的时序控制的没什么问题,是要用逻辑分析仪来看吗?要是能跟我说一说整体控制策略那就最好了。
...

你的CLK的控制呢?
回复

使用道具 举报

13

主题

47

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1000
威望
550
贡献
288
兑换币
335
注册时间
2013-12-3
在线时间
81 小时
毕业学校
上海工程技术大学
9#
 楼主| 发表于 2014-7-25 22:56:07 | 只看该作者
独孤行者 发表于 2014-7-25 15:19
你的CLK的控制呢?

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

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-6 23:30 , Processed in 0.144303 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表