搜索
bottom↓
回复: 72

ADS1110用了一下午的时间终于搞定了

  [复制链接]

出0入53汤圆

发表于 2013-4-20 15:44:50 | 显示全部楼层 |阅读模式
今天把在TI申请的样片ADS1110焊接上,开始从头开始写测试程序,
一边看数据手册一边写,写完了在对照逻辑分析仪,验证自己的时序,今天太幸运了,一步到位搞定了。我用的芯片是000地址的。这个一定要注意哦。
测试了芯片数据稳定性,觉得这个芯片很完美,1倍放大15sps速度  16bit数据很稳定。
写这篇文章的目的是回报阿莫论坛的无私精神。希望更多的莫友发表自己的成果,给正在挣扎的朋友一点帮助,
下面我用的是STM32F205芯片读取的,废话少说,上代码
/**
  ******************************************************************************
  * @File                                :ADS1110.c
  * @Author                                :Flame
  * @Email                                :zhcj66@163.com
  * @Version                        :V1.0.0
  * @FileNewDate                :2013-04-20
  * @FileChangeDate                :2013-04-20
  * @Brief                                :16Bit_AD,自带2.048V ±.05%的电压基准,采样率:15/30/60/240sps;放大倍数:1/2/4/8
                                                :2013-04-20程序测试成功
  ******************************************************************************
  */
#include "includes.h"

#define ADS1110_SCL_CLR() GPIO_ResetBits(GPIOC,GPIO_Pin_7);
#define ADS1110_SCL_SET() GPIO_SetBits(GPIOC,GPIO_Pin_7);

#define ADS1110_SDA_CLR() GPIO_ResetBits(GPIOC,GPIO_Pin_8);
#define ADS1110_SDA_SET() GPIO_SetBits(GPIOC,GPIO_Pin_8);
#define ADS1110_SDA_Get() GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8)

#define ADS1110Addr                                        0x90                        //ADS1110地址
#define ADS1110ReadAddr                                ADS1110Addr+1        //ADS1110读地址
#define ADS1110WriteAddr                        ADS1110Addr+0        //ADS1110写地址
#define ADS1110Reg                                        0x0C                        //连续,15sps,1倍

void ADS1110_GPIO_In(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
}

void ADS1110_GPIO_Out(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
}

void ADS1110_GPIO_Configuration(void)
{
        GPIO_InitTypeDef GPIO_InitStructure;
        RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
       
        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
        GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
        GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
        GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOC, &GPIO_InitStructure);
       
       
        ADS1110_GPIO_Out();
}


void ADS1110_Delays(unsigned int count)//6us
{
        uint16_t i,j;
        for(i=count;i>0;i--)
                for(j=12;j>0;j--);
}

void ADS_delay(void)
{
  unsigned char i;
  for(i=0;i<5;i++);
}


void ADS1110_Start(void)     
{
        ADS1110_GPIO_Out();
       
        ADS1110_SDA_SET();
        ADS1110_SCL_SET();
        ADS1110_Delays(1);
        ADS1110_SDA_CLR();
        ADS1110_Delays(1);
        ADS1110_SCL_CLR();
}

void ADS1110_Stop(void)
{
        ADS1110_GPIO_Out();
       
        ADS1110_SDA_CLR();
        ADS1110_SCL_CLR();
        ADS1110_Delays(1);
        ADS1110_SCL_SET();
        ADS1110_Delays(1);
        ADS1110_SDA_SET();
        ADS1110_Delays(1);
}

//等待应答信号到来         返回值:1,接收应答失败 ;0,接收应答成功      
unsigned char ADS1110_Wait_Ack(void)
{
        u8 ucErrTime=0;
        ADS1110_GPIO_In();      //SDA设置为输入  
        ADS1110_SDA_SET();
        ADS1110_Delays(1);   
        ADS1110_SCL_SET();
        ADS1110_Delays(1);
        while(ADS1110_SDA_Get())
        {
                ucErrTime++;
                if(ucErrTime>250)
                {
                        ADS1110_Stop();
                        return 1;
                }
        }
        ADS1110_SCL_CLR();//时钟输出0     
        return 0;  
}

//产生ACK应答
void ADS1110_Ack(void)
{
        ADS1110_SCL_CLR();
        ADS1110_GPIO_Out();
        ADS1110_SDA_CLR();
        ADS1110_Delays(2);
        ADS1110_SCL_SET();
        ADS1110_Delays(2);
        ADS1110_SCL_CLR();
}

//不产生ACK应答   
void ADS1110_NAck(void)
{
        ADS1110_SCL_CLR();
        ADS1110_GPIO_Out();
        ADS1110_SDA_SET();
        ADS1110_Delays(2);
        ADS1110_SCL_SET();
        ADS1110_Delays(2);
        ADS1110_SCL_CLR();
}
               
//IIC发送一个字节          
void ADS1110_Send_Byte(u8 txd)
{                        
        u8 t;   
        ADS1110_GPIO_Out();      
        ADS1110_SCL_CLR();//拉低时钟开始数据传输
        for(t=0;t<8;t++)
        {              
                //IIC_SDA=(txd&0x80)>>7;
                if (txd&0x80)  {ADS1110_SDA_SET();}
                else           {ADS1110_SDA_CLR();}
                txd<<=1;   
                ADS1110_Delays(2);   
                ADS1110_SCL_SET();
                ADS1110_Delays(2);
                ADS1110_SCL_CLR();
                ADS1110_Delays(2);
        }  
}

//读1个字节,ack=1时,发送ACK,ack=0,发送nACK   
unsigned char ADS1110_Read_Byte(unsigned char ack)
{
        unsigned char i,receive=0;
        ADS1110_GPIO_In();//SDA设置为输入
        ADS1110_SDA_SET();
        for(i=0;i<8;i++ )
        {
                ADS1110_SCL_CLR();
                ADS1110_Delays(2);
                ADS1110_SCL_SET();
                receive<<=1;
                if(ADS1110_SDA_Get())receive++;   
                ADS1110_Delays(1);
        }      
        if (!ack)
        ADS1110_NAck();//发送nACK
        else
        ADS1110_Ack(); //发送ACK   
        return receive;
}

void ADS_WriteCfgReg(unsigned char CfgData)   //Write ADS1110 Congiguration Register
{
        ADS1110_Start();
        ADS1110_Send_Byte(ADS1110WriteAddr);
        ADS1110_Wait_Ack();
        ADS1110_Send_Byte(CfgData);
        ADS1110_Wait_Ack();
        ADS1110_Stop();
}

unsigned int ReadDataCfgReg(unsigned int ReadType)  //Read data from ADS1110 Data register  ReadType=0x01返回AD值,ReadType=0x00返回寄存器值
{
unsigned int temp,temp1;
        ADS1110_Start();
        ADS1110_Send_Byte(ADS1110ReadAddr);
        ADS1110_Wait_Ack();
        temp=ADS1110_Read_Byte(1)<<8;
        ADS1110_Ack();
        temp+=(ADS1110_Read_Byte(1));
        ADS1110_Ack();
        temp1 = ADS1110_Read_Byte(1);
        ADS1110_Ack();
        ADS1110_Stop();
        if(ReadType == 0x01)//返回AD值
        {
                return(temp);
        }
        else         return(temp1);//返回寄存器值  
}

void ADS1110_Configuration(void)
{
        ADS1110_GPIO_Configuration();
        ADS_WriteCfgReg(ADS1110Reg);
}


void GetADS1110Data(void)
{
unsigned char Temp[8];
unsigned int Temp24;
        Temp24 = ReadDataCfgReg(1);
        Temp[0] = Temp24/10000%10+0x30;
        Temp[1] = Temp24/1000%10+0x30;
        Temp[2] = Temp24/100%10+0x30;
        Temp[3] = Temp24/10%10+0x30;
        Temp[4] = Temp24%10+0x30;
        Temp[5] = 0x0D;
        Temp[6] = 0x0A;
        Temp[7] = 0;
        USART1_Puts(Temp);
}

本帖子中包含更多资源

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

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

阿莫论坛才是最爱国的,关心国家的经济、社会的发展、担心国家被别国牵连卷入战争、知道珍惜来之不易的和平发展,知道师夷之长,关注世界的先进文化与技术,也探讨中国文化的博大精深,也懂得警惕民粹主义的祸国殃民等等等等,无不是爱国忧民的表现。(坛友:tianxian)

出0入53汤圆

 楼主| 发表于 2013-4-20 15:45:35 | 显示全部楼层
自己顶一下,

出0入53汤圆

 楼主| 发表于 2013-4-20 15:46:41 | 显示全部楼层
有用过ADS1247的朋友希望给我看看我发的ADS1247文章

出0入53汤圆

 楼主| 发表于 2013-4-20 15:48:05 | 显示全部楼层
http://www.amobbs.com/thread-5530199-1-1.html   ads1247

出0入0汤圆

发表于 2013-4-20 17:56:13 | 显示全部楼层
谢谢楼主分享。。。。。。。

出0入0汤圆

发表于 2013-4-20 23:02:53 | 显示全部楼层
谢谢楼主分享。。。。。。。

出0入0汤圆

发表于 2013-4-20 23:40:34 | 显示全部楼层
我替你整理成 code 模式
  1. /**
  2.   ******************************************************************************
  3.   * @File                                :ADS1110.c
  4.   * @Author                                :Flame
  5.   * @Email                                :zhcj66@163.com
  6.   * @Version                        :V1.0.0
  7.   * @FileNewDate                :2013-04-20
  8.   * @FileChangeDate                :2013-04-20
  9.   * @Brief                                :16Bit_AD,自带2.048V ±.05%的电压基准,采样率:15/30/60/240sps;放大倍数:1/2/4/8
  10.                                                 :2013-04-20程序测试成功
  11.   ******************************************************************************
  12.   */
  13. #include "includes.h"

  14. #define ADS1110_SCL_CLR() GPIO_ResetBits(GPIOC,GPIO_Pin_7);
  15. #define ADS1110_SCL_SET() GPIO_SetBits(GPIOC,GPIO_Pin_7);

  16. #define ADS1110_SDA_CLR() GPIO_ResetBits(GPIOC,GPIO_Pin_8);
  17. #define ADS1110_SDA_SET() GPIO_SetBits(GPIOC,GPIO_Pin_8);
  18. #define ADS1110_SDA_Get() GPIO_ReadInputDataBit(GPIOC, GPIO_Pin_8)

  19. #define ADS1110Addr                                        0x90                        //ADS1110地址
  20. #define ADS1110ReadAddr                                ADS1110Addr+1        //ADS1110读地址
  21. #define ADS1110WriteAddr                        ADS1110Addr+0        //ADS1110写地址
  22. #define ADS1110Reg                                        0x0C                        //连续,15sps,1倍

  23. void ADS1110_GPIO_In(void)
  24. {
  25.         GPIO_InitTypeDef GPIO_InitStructure;
  26.         
  27.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  28.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  29.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
  30.         GPIO_Init(GPIOC, &GPIO_InitStructure);
  31. }

  32. void ADS1110_GPIO_Out(void)
  33. {
  34.         GPIO_InitTypeDef GPIO_InitStructure;
  35.         
  36.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;
  37.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  38.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  39.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  40.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  41.         GPIO_Init(GPIOC, &GPIO_InitStructure);
  42. }

  43. void ADS1110_GPIO_Configuration(void)
  44. {
  45.         GPIO_InitTypeDef GPIO_InitStructure;
  46.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
  47.         
  48.         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  49.         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  50.         GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  51.         GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  52.         GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  53.         GPIO_Init(GPIOC, &GPIO_InitStructure);
  54.         
  55.         
  56.         ADS1110_GPIO_Out();
  57. }


  58. void ADS1110_Delays(unsigned int count)//6us
  59. {
  60.         uint16_t i,j;
  61.         for(i=count;i>0;i--)
  62.                 for(j=12;j>0;j--);
  63. }

  64. void ADS_delay(void)
  65. {
  66.   unsigned char i;
  67.   for(i=0;i<5;i++);
  68. }


  69. void ADS1110_Start(void)     
  70. {
  71.         ADS1110_GPIO_Out();
  72.         
  73.         ADS1110_SDA_SET();
  74.         ADS1110_SCL_SET();
  75.         ADS1110_Delays(1);
  76.         ADS1110_SDA_CLR();
  77.         ADS1110_Delays(1);
  78.         ADS1110_SCL_CLR();
  79. }

  80. void ADS1110_Stop(void)
  81. {
  82.         ADS1110_GPIO_Out();
  83.         
  84.         ADS1110_SDA_CLR();
  85.         ADS1110_SCL_CLR();
  86.         ADS1110_Delays(1);
  87.         ADS1110_SCL_SET();
  88.         ADS1110_Delays(1);
  89.         ADS1110_SDA_SET();
  90.         ADS1110_Delays(1);
  91. }

  92. //等待应答信号到来         返回值:1,接收应答失败 ;0,接收应答成功      
  93. unsigned char ADS1110_Wait_Ack(void)
  94. {
  95.         u8 ucErrTime=0;
  96.         ADS1110_GPIO_In();      //SDA设置为输入  
  97.         ADS1110_SDA_SET();
  98.         ADS1110_Delays(1);   
  99.         ADS1110_SCL_SET();
  100.         ADS1110_Delays(1);
  101.         while(ADS1110_SDA_Get())
  102.         {
  103.                 ucErrTime++;
  104.                 if(ucErrTime>250)
  105.                 {
  106.                         ADS1110_Stop();
  107.                         return 1;
  108.                 }
  109.         }
  110.         ADS1110_SCL_CLR();//时钟输出0     
  111.         return 0;  
  112. }

  113. //产生ACK应答
  114. void ADS1110_Ack(void)
  115. {
  116.         ADS1110_SCL_CLR();
  117.         ADS1110_GPIO_Out();
  118.         ADS1110_SDA_CLR();
  119.         ADS1110_Delays(2);
  120.         ADS1110_SCL_SET();
  121.         ADS1110_Delays(2);
  122.         ADS1110_SCL_CLR();
  123. }

  124. //不产生ACK应答   
  125. void ADS1110_NAck(void)
  126. {
  127.         ADS1110_SCL_CLR();
  128.         ADS1110_GPIO_Out();
  129.         ADS1110_SDA_SET();
  130.         ADS1110_Delays(2);
  131.         ADS1110_SCL_SET();
  132.         ADS1110_Delays(2);
  133.         ADS1110_SCL_CLR();
  134. }
  135.                
  136. //IIC发送一个字节           
  137. void ADS1110_Send_Byte(u8 txd)
  138. {                        
  139.         u8 t;   
  140.         ADS1110_GPIO_Out();      
  141.         ADS1110_SCL_CLR();//拉低时钟开始数据传输
  142.         for(t=0;t<8;t++)
  143.         {              
  144.                 //IIC_SDA=(txd&0x80)>>7;
  145.                 if (txd&0x80)  {ADS1110_SDA_SET();}
  146.                 else           {ADS1110_SDA_CLR();}
  147.                 txd<<=1;   
  148.                 ADS1110_Delays(2);   
  149.                 ADS1110_SCL_SET();
  150.                 ADS1110_Delays(2);
  151.                 ADS1110_SCL_CLR();
  152.                 ADS1110_Delays(2);
  153.         }  
  154. }

  155. //读1个字节,ack=1时,发送ACK,ack=0,发送nACK   
  156. unsigned char ADS1110_Read_Byte(unsigned char ack)
  157. {
  158.         unsigned char i,receive=0;
  159.         ADS1110_GPIO_In();//SDA设置为输入
  160.         ADS1110_SDA_SET();
  161.         for(i=0;i<8;i++ )
  162.         {
  163.                 ADS1110_SCL_CLR();
  164.                 ADS1110_Delays(2);
  165.                 ADS1110_SCL_SET();
  166.                 receive<<=1;
  167.                 if(ADS1110_SDA_Get())receive++;   
  168.                 ADS1110_Delays(1);
  169.         }      
  170.         if (!ack)
  171.         ADS1110_NAck();//发送nACK
  172.         else
  173.         ADS1110_Ack(); //发送ACK   
  174.         return receive;
  175. }

  176. void ADS_WriteCfgReg(unsigned char CfgData)   //Write ADS1110 Congiguration Register
  177. {
  178.         ADS1110_Start();
  179.         ADS1110_Send_Byte(ADS1110WriteAddr);
  180.         ADS1110_Wait_Ack();
  181.         ADS1110_Send_Byte(CfgData);
  182.         ADS1110_Wait_Ack();
  183.         ADS1110_Stop();
  184. }

  185. unsigned int ReadDataCfgReg(unsigned int ReadType)  //Read data from ADS1110 Data register  ReadType=0x01返回AD值,ReadType=0x00返回寄存器值
  186. {
  187. unsigned int temp,temp1;
  188.         ADS1110_Start();
  189.         ADS1110_Send_Byte(ADS1110ReadAddr);
  190.         ADS1110_Wait_Ack();
  191.         temp=ADS1110_Read_Byte(1)<<8;
  192.         ADS1110_Ack();
  193.         temp+=(ADS1110_Read_Byte(1));
  194.         ADS1110_Ack();
  195.         temp1 = ADS1110_Read_Byte(1);
  196.         ADS1110_Ack();
  197.         ADS1110_Stop();
  198.         if(ReadType == 0x01)//返回AD值
  199.         {
  200.                 return(temp);
  201.         }
  202.         else         return(temp1);//返回寄存器值  
  203. }

  204. void ADS1110_Configuration(void)
  205. {
  206.         ADS1110_GPIO_Configuration();
  207.         ADS_WriteCfgReg(ADS1110Reg);
  208. }


  209. void GetADS1110Data(void)
  210. {
  211. unsigned char Temp[8];
  212. unsigned int Temp24;
  213.         Temp24 = ReadDataCfgReg(1);
  214.         Temp[0] = Temp24/10000%10+0x30;
  215.         Temp[1] = Temp24/1000%10+0x30;
  216.         Temp[2] = Temp24/100%10+0x30;
  217.         Temp[3] = Temp24/10%10+0x30;
  218.         Temp[4] = Temp24%10+0x30;
  219.         Temp[5] = 0x0D;
  220.         Temp[6] = 0x0A;
  221.         Temp[7] = 0;
  222.         USART1_Puts(Temp);
  223. }
复制代码

出0入0汤圆

发表于 2013-4-22 00:59:10 | 显示全部楼层
做个记号,以备后用。

出0入0汤圆

发表于 2013-4-22 09:13:47 | 显示全部楼层
嗯 。这个不错。。

出0入53汤圆

 楼主| 发表于 2013-4-22 11:12:24 | 显示全部楼层
aureole 发表于 2013-4-20 23:40
我替你整理成 code 模式

这种更容易看了,谢谢。这个怎么弄的?

出0入0汤圆

发表于 2013-4-22 11:15:32 | 显示全部楼层
是多少位的AD?

出0入53汤圆

 楼主| 发表于 2013-4-22 11:43:22 | 显示全部楼层
liangjiatian 发表于 2013-4-22 11:15
是多少位的AD?

16BIT的AD 可以说基本上稳定在16bit上

出0入0汤圆

发表于 2013-4-22 11:55:20 | 显示全部楼层
zhcj66 发表于 2013-4-22 11:43
16BIT的AD 可以说基本上稳定在16bit上

我想做一个数控电源 想找一个AD和DA 比较高精度的 DAC芯片 有什么好推荐

出0入0汤圆

发表于 2013-4-22 12:12:40 | 显示全部楼层
这个好,收藏

出0入53汤圆

 楼主| 发表于 2013-4-22 12:24:14 | 显示全部楼层
liangjiatian 发表于 2013-4-22 11:55
我想做一个数控电源 想找一个AD和DA 比较高精度的 DAC芯片 有什么好推荐

还没有研究过数控电源,AD你可以使用ADS1110这个芯片,体积小  SOT6封装

出0入0汤圆

发表于 2013-4-22 12:24:49 | 显示全部楼层
zhcj66 发表于 2013-4-22 12:24
还没有研究过数控电源,AD你可以使用ADS1110这个芯片,体积小  SOT6封装

DA有没有推荐

出0入53汤圆

 楼主| 发表于 2013-4-22 13:02:40 | 显示全部楼层
liangjiatian 发表于 2013-4-22 12:24
DA有没有推荐

DAC没有用过,你可以去TI或者ADI网站找一下哦

出0入0汤圆

发表于 2013-4-22 17:02:49 | 显示全部楼层
zhcj66 发表于 2013-4-22 13:02
DAC没有用过,你可以去TI或者ADI网站找一下哦

好的

出0入53汤圆

 楼主| 发表于 2013-4-22 17:05:11 | 显示全部楼层
liangjiatian 发表于 2013-4-22 17:02
好的

请问你用过ADS1247/6/8片子吗?

出0入0汤圆

发表于 2013-4-22 17:55:07 | 显示全部楼层
zhcj66 发表于 2013-4-22 17:05
请问你用过ADS1247/6/8片子吗?

没有哦

出0入0汤圆

发表于 2013-4-22 18:12:09 | 显示全部楼层
zhcj66 发表于 2013-4-22 11:12
这种更容易看了,谢谢。这个怎么弄的?

在发帖子时候, 最右边一栏 里面第一个 添加代码文字 。。。复制到框里 即可。

出0入53汤圆

 楼主| 发表于 2013-4-22 18:34:19 | 显示全部楼层
lyg407 发表于 2013-4-22 18:12
在发帖子时候, 最右边一栏 里面第一个 添加代码文字 。。。复制到框里 即可。 ...

哦  谢谢

出0入0汤圆

发表于 2013-5-2 02:30:31 | 显示全部楼层
12位的话推荐DAC7512

出0入0汤圆

发表于 2013-5-2 07:36:13 来自手机 | 显示全部楼层
楼主的程序好用!

出0入0汤圆

发表于 2013-5-2 08:06:10 | 显示全部楼层
谢谢楼主。

出0入0汤圆

发表于 2013-5-2 08:09:53 | 显示全部楼层
这个东东最好改成单极化测量,我就是这么做的

出0入0汤圆

发表于 2013-5-2 08:49:23 | 显示全部楼层
ADS系列的这些都非常好用

用过ADS1100 ADS1115 数据准的一塌糊涂,一次平均不用取都很稳,这就是积分型AD,,,但就是速度慢了,高速的话不行

顺便问下,你现在买多少钱一片,我当年是35买的

出0入0汤圆

发表于 2013-5-2 09:19:57 | 显示全部楼层
感谢楼主无私奉献

出0入0汤圆

发表于 2013-5-3 08:01:31 | 显示全部楼层

出0入0汤圆

发表于 2013-5-3 08:11:24 | 显示全部楼层
Ti 一次能申请几种,每种 几片?

出0入53汤圆

 楼主| 发表于 2013-5-3 08:25:57 | 显示全部楼层
zuu0 发表于 2013-5-2 08:49
ADS系列的这些都非常好用

用过ADS1100 ADS1115 数据准的一塌糊涂,一次平均不用取都很稳,这就是积分型A ...

我在TI申请的样片,还没有买

出0入53汤圆

 楼主| 发表于 2013-5-3 08:26:51 | 显示全部楼层
wkman 发表于 2013-5-3 08:11
Ti 一次能申请几种,每种 几片?

好像一次最多每种申请3pcs 最多5种

出0入0汤圆

发表于 2013-5-10 10:22:35 | 显示全部楼层
shiyingyifan 发表于 2013-5-2 02:30
12位的话推荐DAC7512

   额。。。。亲,你说的DAC7512  应该是 12bit DA 芯片吧。  ADS1110 是AD 芯片喔。

出0入18汤圆

发表于 2013-11-22 08:44:15 | 显示全部楼层
备用  备用

出0入0汤圆

发表于 2014-2-18 11:40:16 | 显示全部楼层
正在使用这款芯片做产品。。。收藏

出0入0汤圆

发表于 2014-2-18 12:14:19 | 显示全部楼层
这个封装貌似太小了,以前测试过。

出0入0汤圆

发表于 2014-5-2 18:45:37 | 显示全部楼层
ads1110   mark

出0入0汤圆

发表于 2014-5-2 21:59:05 | 显示全部楼层
刚申请了ADS1120,不过有ADS1220程序,稍稍修改就可以用了

出0入0汤圆

发表于 2014-5-2 22:03:03 | 显示全部楼层
wkman 发表于 2013-5-3 08:11
Ti 一次能申请几种,每种 几片?

一次最多5种,每种最多3片

出0入0汤圆

发表于 2014-5-2 22:22:14 | 显示全部楼层
赞一个!厉害!

出0入0汤圆

发表于 2014-5-2 22:28:42 | 显示全部楼层
谢谢楼主!!!

出0入0汤圆

发表于 2014-5-6 10:13:07 | 显示全部楼层
做个记号,以备后用。

出0入0汤圆

发表于 2014-10-21 18:44:38 | 显示全部楼层
我用楼主的程序读回来的数据都是65535?什么原因?

出0入53汤圆

 楼主| 发表于 2014-10-22 08:09:59 | 显示全部楼层
zjb879653946 发表于 2014-10-21 18:44
我用楼主的程序读回来的数据都是65535?什么原因?

1.拿逻辑分析仪 分析一下muc的数据,
2.芯片IO损坏

出0入0汤圆

发表于 2014-10-22 08:22:50 | 显示全部楼层
zhcj66 发表于 2014-10-22 08:09
1.拿逻辑分析仪 分析一下muc的数据,
2.芯片IO损坏

我发现问题了,是我用的器件地址和你不一样,改了地址后能读回来,调节外部电压数据也会变化,但是数据不准确,和实际电压不一样,我的verf-接的地

出0入0汤圆

发表于 2014-10-22 08:33:53 | 显示全部楼层
收藏,mark

出0入0汤圆

发表于 2015-3-22 00:32:07 | 显示全部楼层
真好,正考虑这款芯片,看样子可以放心使用了

出0入53汤圆

 楼主| 发表于 2015-3-23 07:40:36 | 显示全部楼层
zdc 发表于 2015-3-22 00:32
真好,正考虑这款芯片,看样子可以放心使用了

ADS1100和ADS1110程序通用

出0入0汤圆

发表于 2015-3-23 08:35:09 | 显示全部楼层
MARK

出0入0汤圆

发表于 2015-8-11 11:04:47 | 显示全部楼层
        temp=ADS1110_Read_Byte(1)<<8;
        ADS1110_Ack();
        temp+=(ADS1110_Read_Byte(1));
        ADS1110_Ack();
        temp1 = ADS1110_Read_Byte(1);
        ADS1110_Ack()

ADS1110_Read_Byte(1);这个函数中有ACK 跳出后再加个ACK正常吗?

出0入0汤圆

发表于 2015-8-11 16:31:03 | 显示全部楼层
备用 谢谢了

出0入0汤圆

发表于 2015-8-18 16:33:42 | 显示全部楼层
LZ你好,没接触过STM
while(ADS1110_SDA_Get())  这句是什么意思?

出0入53汤圆

 楼主| 发表于 2015-8-19 07:56:44 | 显示全部楼层
sos9616 发表于 2015-8-18 16:33
LZ你好,没接触过STM
while(ADS1110_SDA_Get())  这句是什么意思?

while(ADS1110_SDA_Get()) ;这句是等待SDA管脚变为低(表示数据转换完成),跳出获取ADS1110的数据;可以把ADS1110_SDA_Get()认为成51单片机的Px.x管脚

出0入0汤圆

发表于 2015-8-19 09:17:46 | 显示全部楼层
16位都很稳定,确实牛,这个跟布线有很大关系吧。

出0入53汤圆

 楼主| 发表于 2015-8-19 09:24:24 | 显示全部楼层
0123456789 发表于 2015-8-19 09:17
16位都很稳定,确实牛,这个跟布线有很大关系吧。

是这个芯片很牛,24位的我最高可以做到18位不跳动,这也归功于芯片

出0入0汤圆

发表于 2015-8-21 14:19:05 | 显示全部楼层
zhcj66 发表于 2015-8-19 07:56
while(ADS1110_SDA_Get()) ;这句是等待SDA管脚变为低(表示数据转换完成),跳出获取ADS1110的数据;可以 ...

好的,谢谢LZ。
还有个问题看不懂,不能理解,
就是

  1.   Temp24 = ReadDataCfgReg(1);
  2.   Temp[0] = Temp24/10000%10+0x30;
  3.   Temp[1] = Temp24/1000%10+0x30;
  4.   Temp[2] = Temp24/100%10+0x30;
  5.   Temp[3] = Temp24/10%10+0x30;
  6.   Temp[4] = Temp24%10+0x30;
  7.   Temp[5] = 0x0D;
  8.   Temp[6] = 0x0A;
  9.   Temp[7] = 0;
复制代码


这个是什么意思呢?在下理解能力有限,望LZ说明一下。

出0入53汤圆

 楼主| 发表于 2015-8-21 15:17:52 | 显示全部楼层
sos9616 发表于 2015-8-21 14:19
好的,谢谢LZ。
还有个问题看不懂,不能理解,
就是


这个是把ADC的值 以字符串的方式 放入数组最后回车换行   也可以写成sprintf(Temp,"%u\r\n",Temp24);

出0入0汤圆

发表于 2015-8-26 08:37:31 | 显示全部楼层
zhcj66 发表于 2015-8-21 15:17
这个是把ADC的值 以字符串的方式 放入数组最后回车换行   也可以写成sprintf(Temp,"%u\r\n",Temp24); ...

LZ你好,
ADS1110去测负电压接线应该是怎样的?
目前电路是:V+接测量电压,V-接地,测量正电压都正常,
负电压就不正常了。

还有采样的值用什么方法滤波比较好?
目前用平均滤波法处理,最后转换为浮点型,但感觉采样的值还是不稳定。

出0入0汤圆

发表于 2015-9-30 12:21:56 | 显示全部楼层

楼主的接法只能有15位的分辨率?

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2015-9-30 12:27:54 | 显示全部楼层
sos9616 发表于 2015-8-26 08:37
LZ你好,
ADS1110去测负电压接线应该是怎样的?
目前电路是:V+接测量电压,V-接地,测量正电压都正常,

V+接测量电压,V-接地,测量正电压都正常,
-------------
这种接法无法测量负电压

出0入0汤圆

发表于 2015-9-30 13:47:05 | 显示全部楼层
顶一下,之前也玩过,遇到了不少问题

出0入0汤圆

发表于 2015-9-30 14:22:37 | 显示全部楼层
恭喜恭喜,顺带学习

出0入0汤圆

发表于 2015-9-30 23:00:58 | 显示全部楼层
很好的程序!收藏后面研究使用!

出0入4汤圆

发表于 2016-4-20 09:26:58 | 显示全部楼层
0123456789 发表于 2015-9-30 12:27
V+接测量电压,V-接地,测量正电压都正常,
-------------
这种接法无法测量负电压 ...

ads1110不支持负电压。  所谓的差分ad指的是   (V+) - (V-) 的值   ,有可能V+ 比V-大 2.048  也有可能V+比V-小 2.048  。

出675入8汤圆

发表于 2018-12-19 12:37:49 | 显示全部楼层
好贴,谢谢楼主

出0入53汤圆

 楼主| 发表于 2018-12-19 14:25:33 | 显示全部楼层
huarana 发表于 2016-4-20 09:26
ads1110不支持负电压。  所谓的差分ad指的是   (V+) - (V-) 的值   ,有可能V+ 比V-大 2.048  也有可 ...

可以加2个1MO电阻 一个接5v 另外一个电阻接地, 电阻的另外一端分别接热电偶

出0入0汤圆

发表于 2018-12-20 16:23:58 | 显示全部楼层
谢谢楼主分享

出0入0汤圆

发表于 2018-12-20 17:21:51 | 显示全部楼层
ADS1110  ADS1110

出0入0汤圆

发表于 2018-12-20 20:47:39 来自手机 | 显示全部楼层
感谢楼主分享

出0入0汤圆

发表于 2021-3-15 11:58:31 | 显示全部楼层
不错 参考了你的程序  能够成功读取  数据 谢谢   我用的GD32F103RCT6

出0入53汤圆

 楼主| 发表于 2021-3-19 08:26:22 | 显示全部楼层
cvi670 发表于 2021-3-15 11:58
不错 参考了你的程序  能够成功读取  数据 谢谢   我用的GD32F103RCT6

103RC价格也飞上天了

出0入0汤圆

发表于 2022-5-17 00:36:53 | 显示全部楼层
aaaaaaaaaa

出0入0汤圆

发表于 2023-4-4 21:49:44 | 显示全部楼层
谢谢楼主分享
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-17 05:13

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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