搜索
bottom↓
回复: 27
打印 上一主题 下一主题

[原创/开源]重写AD7124驱动,所有寄存器可直接单独配置

  [复制链接]

出0入4汤圆

跳转到指定楼层
1
发表于 2020-7-31 09:10:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 bolizhicheng204 于 2020-7-31 09:14 编辑

最近又开始搞AD7124了,一直都很受不了ADI的底层驱动,感觉太繁琐,赋值、读取都很麻烦,也许是我水平问题吧,哈哈。反正我喜欢像STM32一样所有寄存器可以单独配置、读取。
花了一段时间改写了AD7124的底层驱动,大概测了一下,没啥问题,我用通道11,外部基准,测量外部基准轻松达到21位无噪声分辨率。

今日把整个工程文件上传,单片机型号是STM32F429IGT6,欢迎交流。

本帖子中包含更多资源

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

x

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

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入102汤圆

2
发表于 2020-7-31 10:09:19 | 只看该作者
首先感谢楼主分享,想问一下,你的例程采样率能达到19.2K吗?要是到最高采样率,采集的数值是否稳定?

出0入4汤圆

3
 楼主| 发表于 2020-7-31 10:29:39 | 只看该作者
N_EMBED 发表于 2020-7-31 10:09
首先感谢楼主分享,想问一下,你的例程采样率能达到19.2K吗?要是到最高采样率,采集的数值是否稳定? ...

没仔细看,目测应该没有问题,ADI的手册数据非常可信,我按照全功率最大速度跑,测量外部2.5V基准,不做任何滤波轻松达到21位无噪声分辨率,ADI还是很厉害的

出0入13汤圆

4
发表于 2020-7-31 16:27:50 | 只看该作者
谢谢分享

出0入53汤圆

5
发表于 2020-7-31 21:41:41 | 只看该作者
这个芯片稳定性怎么样,lz出货了多少这种芯片?

出0入4汤圆

6
 楼主| 发表于 2020-8-3 08:44:13 | 只看该作者
zhcj66 发表于 2020-7-31 21:41
这个芯片稳定性怎么样,lz出货了多少这种芯片?

还没出货 之前用另一个型号,最近尝试一下准备替换,之前做过很多功课,这颗料稳定性应该不会差

出110入109汤圆

7
发表于 2020-8-3 20:32:38 来自手机 | 只看该作者
目前使能了几个通道?数字滤波器怎么配的?用了通道序列器了的?

出110入109汤圆

8
发表于 2020-8-3 20:37:24 来自手机 | 只看该作者
zhcj66 发表于 2020-7-31 21:41
这个芯片稳定性怎么样,lz出货了多少这种芯片?

稳定,我们东区已有客户100K级别出货~
若无需低功耗模式,还有个low cost特别型号AD74-014可以选用的(电脑关了,型号可能记错了,若错了,明天来修改)。

出0入0汤圆

9
发表于 2020-8-3 21:18:32 | 只看该作者
有ADS1220的STM32F030的驱动,最近在搞,有点搞不定,谢谢

出0入53汤圆

10
发表于 2020-8-4 08:02:48 | 只看该作者
bolizhicheng204 发表于 2020-7-31 10:29
没仔细看,目测应该没有问题,ADI的手册数据非常可信,我按照全功率最大速度跑,测量外部2.5V基准,不做 ...

增加遇到AD779x系列的都容易 芯片无数据输出,彻底放弃了AD779X系类

出0入53汤圆

11
发表于 2020-8-4 08:04:38 | 只看该作者
ersha4877 发表于 2020-8-3 21:18
有ADS1220的STM32F030的驱动,最近在搞,有点搞不定,谢谢

在stm32f103上测试成功的

  1. #include "includes.h"

  2. #define ADS1x20_CS_GPIO                        GPIOD
  3. #define ADS1x20_SCLK_GPIO                GPIOD
  4. #define ADS1x20_DIN_GPIO                GPIOD
  5. #define ADS1x20_DOUT_GPIO                GPIOD

  6. #define ADS1x20_CS_Pin                        GPIO_Pin_12
  7. #define ADS1x20_SCLK_Pin                GPIO_Pin_11
  8. #define ADS1x20_DIN_Pin                        GPIO_Pin_13
  9. #define ADS1x20_DOUT_Pin                GPIO_Pin_14

  10. #define ADS1x20_CS_Out(x)                x?GPIO_SetBits(ADS1x20_CS_GPIO,ADS1x20_CS_Pin):GPIO_ResetBits(ADS1x20_CS_GPIO,ADS1x20_CS_Pin)
  11. #define ADS1x20_SCLK_Out(x)                x?GPIO_SetBits(ADS1x20_SCLK_GPIO,ADS1x20_SCLK_Pin):GPIO_ResetBits(ADS1x20_SCLK_GPIO,ADS1x20_SCLK_Pin)
  12. #define ADS1x20_DIN_Out(x)                x?GPIO_SetBits(ADS1x20_DIN_GPIO,ADS1x20_DIN_Pin):GPIO_ResetBits(ADS1x20_DIN_GPIO,ADS1x20_DIN_Pin)
  13. #define ADS1x20_DOUT_Get                GPIO_ReadInputDataBit(ADS1x20_DOUT_GPIO, ADS1x20_DOUT_Pin)

  14. void ADS1x20_Delay(unsigned short x)//单位1us
  15. {
  16.         Delay_us(x);
  17. }

  18. void ADS1x20_Init(void)
  19. {
  20.         GPIO_InitTypeDef GPIO_InitStructure;
  21.         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE );
  22.        
  23.         //CS
  24.         GPIO_InitStructure.GPIO_Pin = ADS1x20_CS_Pin;
  25.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  26.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  27.           GPIO_Init(ADS1x20_CS_GPIO, &GPIO_InitStructure);
  28.         //SCLK
  29.         GPIO_InitStructure.GPIO_Pin = ADS1x20_SCLK_Pin;
  30.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  31.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  32.           GPIO_Init(ADS1x20_SCLK_GPIO, &GPIO_InitStructure);
  33.         //DIN
  34.         GPIO_InitStructure.GPIO_Pin = ADS1x20_DIN_Pin;
  35.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  36.           GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  37.           GPIO_Init(ADS1x20_DIN_GPIO, &GPIO_InitStructure);
  38.         //DOUT
  39.         GPIO_InitStructure.GPIO_Pin = ADS1x20_DOUT_Pin;
  40.           GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  41.           GPIO_Init(ADS1x20_DOUT_GPIO, &GPIO_InitStructure);
  42. }

  43. //读写ADS1x20
  44. //short:芯片配置
  45. //Chip:芯片内的配置返回
  46. //return:ReadData
  47. unsigned char ADS1x20_ReadWirte(unsigned char Config)
  48. {
  49. unsigned char i;
  50. unsigned short config=0,//配置
  51.                            data=0;//读取ADC
  52. //        ADS1x20_CS_Out(0);
  53.         config = Config;
  54.         for(i=0;i<8;i++)
  55.         {
  56.                 //ADS1x20_Delay(1);
  57.                 ADS1x20_SCLK_Out(1);
  58.                 if(config&0x80)
  59.                 {
  60.                         ADS1x20_DIN_Out(1);
  61.                 }
  62.                 else
  63.                 {
  64.                         ADS1x20_DIN_Out(0);
  65.                 }
  66.                 //ADS1x20_Delay(1);
  67.                 ADS1x20_SCLK_Out(0);
  68.                 data = data<<1;
  69.                 if(ADS1x20_DOUT_Get)
  70.                 {
  71.                         data++;
  72.                 }
  73.                
  74.                 config = config<<1;
  75.         }
  76. //        ADS1x20_CS_Out(1);
  77.         return data;
  78. }

  79. //ADS1x20读取AD数据
  80. void ADS1x20_ReadData(unsigned char*Data)
  81. {
  82.         ADS1x20_CS_Out(0);
  83.         ADS1x20_ReadWirte(ADS1x20_RDATA);
  84. #ifdef ADS1120
  85.         *Data++ = ADS1x20_ReadWirte(0xFF);
  86.         *Data++ = ADS1x20_ReadWirte(0xFF);
  87. #else //ADS1220
  88.         *Data++ = ADS1x20_ReadWirte(0xFF);
  89.         *Data++ = ADS1x20_ReadWirte(0xFF);
  90.         *Data++ = ADS1x20_ReadWirte(0xFF);
  91.         *Data++ = ADS1x20_ReadWirte(0xFF);
  92. #endif
  93.         ADS1x20_CS_Out(1);
  94. }

  95. //ADS1x20复位
  96. void ADS1x20_Reset(void)
  97. {
  98.         ADS1x20_CS_Out(0);
  99.         ADS1x20_ReadWirte(ADS1x20_RESET);
  100.         ADS1x20_CS_Out(1);
  101. }

  102. //ADS1x20发送开始转换
  103. void ADS1x20_StartConversion(void)
  104. {
  105.         ADS1x20_CS_Out(0);
  106.         ADS1x20_ReadWirte(ADS1x20_START);
  107.         ADS1x20_CS_Out(1);
  108. }

  109. //低功耗
  110. void ADS1x20_PowerDown(void)
  111. {
  112.     ADS1x20_CS_Out(0);
  113.         ADS1x20_ReadWirte(ADS1x20_POWERDOWN);
  114.         ADS1x20_CS_Out(1);
  115. }

  116. //ADS1x20_ReadRegister:读取寄存器配置
  117. //pData:一次读取ADS1x20的4个寄存器配置
  118. //注:pData返回的数据空间需要4bit
  119. //这里是为了方便一次读出了所有寄存器的值,也可以像写寄存器那样单独读出单个寄存器的值
  120. void ADS1x20_ReadRegister(unsigned char *pData)
  121. {
  122. unsigned char i;
  123.     ADS1x20_CS_Out(0);
  124.     ADS1x20_ReadWirte(ADS1x20_RREG|0x03);
  125.         for (i=0; i< 4; i++)// get the register content
  126.         {
  127.                 *pData++ = ADS1x20_ReadWirte(0xFF);
  128.         }
  129.         ADS1x20_CS_Out(1);
  130. }

  131. //ADS1x20_WriteRegister:写入寄存器配置
  132. //StartAddress:写入寄存器的地址(如:00寄存器则配置为0;03寄存器则配置为3)
  133. //NumRegs:写入n个寄存器数据,从第StartAddress寄存器开始写
  134. //pData:写入寄存器的数据
  135. //如:把01寄存器写0x58 02寄存器写入0x49
  136. //   unsigned char Temp[4];
  137. //   Temp[0] = 0x58;
  138. //   Temp[1] = 0x49;
  139. //   ADS1x20_WriteRegister(1,2,Temp);
  140. void ADS1x20_WriteRegister(unsigned char StartAddress, unsigned char NumRegs, unsigned char * pData)
  141. {
  142. unsigned char i;
  143.         ADS1x20_CS_Out(0);
  144.         ADS1x20_ReadWirte(ADS1x20_WREG | (((StartAddress<<2) & 0x0c) |((NumRegs-1)&0x03)));// send the command byte
  145.         for (i=0; i< NumRegs; i++)// send the data bytes
  146.         {
  147.                 ADS1x20_ReadWirte(*pData);
  148.                 pData++;
  149.         }
  150.         ADS1x20_CS_Out(1);
  151. }

  152. void ADS1x20_ReadChannel(unsigned char Channel,unsigned char*Data)
  153. {
  154. unsigned char Register[4];
  155.         Register[0] = Channel|ADS1x20_00_GAIN6|ADS1x20_00_PGA_BYPASS_E;//通道|放大倍数|PGA旁路
  156.         Register[1] = ADS1x20_01_DR2|ADS1x20_01_MODE0|ADS1x20_01_CM0|ADS1x20_01_TS0|ADS1x20_01_BCS0;//转换速率|速率模式|转换模式|温度还是ADC|电流源开关
  157.         Register[2] = ADS1x20_02_VREF0|ADS1x20_02_FIR1|ADS1x20_02_IDAC0;//参考电压|滤波|恒流源大小
  158.         Register[3] = ADS1x20_03_I1MUX0|ADS1x20_03_I2MUX0|ADS1x20_03_DRDYM1;//恒流源1连接|恒流源2连接|转换结束RDRY和DOUT管脚拉低
  159.         ADS1x20_WriteRegister(0,4,Register);//设置寄存器
  160.         ADS1x20_StartConversion();//转换开始
  161.         while(ADS1x20_DOUT_Get);//等待数据转换结束
  162.         ADS1x20_ReadData(Data);//读取数据
  163. //        ADS1x20_ReadRegister(Register);
  164.         ADS1x20_PowerDown();//低功耗
  165. }

  166. //读取芯片温度
  167. unsigned short ADS1x20_ReadChip(void)
  168. {
  169. unsigned char  Register;
  170. unsigned short temp;
  171.         Register = ADS1x20_01_DR2|ADS1x20_01_MODE0|ADS1x20_01_CM0|ADS1x20_01_TS1|ADS1x20_01_BCS0;//转换速率|速率模式|转换模式|温度还是ADC|电流源开关
  172.         ADS1x20_WriteRegister(1,1,&Register);//设置寄存器
  173.         ADS1x20_StartConversion();//转换开始
  174.         while(ADS1x20_DOUT_Get);//等待数据转换结束
  175.         ADS1x20_CS_Out(0);
  176.         ADS1x20_ReadWirte(ADS1x20_RDATA);//发送读命令
  177.         temp = ADS1x20_ReadWirte(0xFF);//读芯片温度高字节
  178.         temp = temp<<8;
  179.         temp = temp+ADS1x20_ReadWirte(0xFF);//读芯片温度低字节
  180.         ADS1x20_CS_Out(1);
  181. //        ADS1x20_ReadRegister(Register);
  182.         ADS1x20_PowerDown();//低功耗
  183.        
  184.         return temp;
  185. }

  186. //读取芯片温度
  187. float ADS1x20_ReadChipTemp(void)
  188. {
  189. unsigned short temp;
  190. float                    Temp;
  191.         temp = ADS1x20_ReadChip();
  192.         Temp = (float)(temp*0.00625);//温度=转换数据*0.03125/5(0.03125/5=0.00625)
  193.         return Temp;
  194. }

  195. #ifdef ADS1120

  196. #else //ADS1220

  197. #endif
复制代码

  1. #ifndef __ADS1X20_H
  2. #define __ADS1X20_H

  3. #define  ADS1120//如果定义了就是ADS1120如果没定义就是ADS1220

  4. #ifdef ADS1120

  5. #else //ADS1220

  6. #endif

  7. #define ADS1x20_RESET                        0x06//Reset the device
  8. #define ADS1x20_START                      0x08//Start or restart conversions
  9. #define ADS1x20_POWERDOWN                  0x02//Enter power-down mode
  10. #define ADS1x20_RDATA                     0x10//Read data by command
  11. #define ADS1x20_RREG                      0x20//Read nn registers starting at address rr
  12. #define ADS1x20_WREG                       0x40//Write nn registers starting at address rr

  13. //寄存器00
  14. #define ADS1x20_00_MUX0                        0x00//AINP = AIN0, AINN = AIN1 (default)
  15. #define ADS1x20_00_MUX1                        0x10//AINP = AIN0, AINN = AIN2
  16. #define ADS1x20_00_MUX2                        0x20//AINP = AIN0, AINN = AIN3
  17. #define ADS1x20_00_MUX3                        0x30//AINP = AIN1, AINN = AIN2
  18. #define ADS1x20_00_MUX4                        0x40//AINP = AIN1, AINN = AIN3
  19. #define ADS1x20_00_MUX5                        0x50//AINP = AIN2, AINN = AIN3
  20. #define ADS1x20_00_MUX6                        0x60//AINP = AIN1, AINN = AIN0
  21. #define ADS1x20_00_MUX7                        0x70//AINP = AIN3, AINN = AIN2
  22. #define ADS1x20_00_MUX8                        0x80//AINP = AIN0, AINN = AVSS
  23. #define ADS1x20_00_MUX9                        0x90//AINP = AIN1, AINN = AVSS
  24. #define ADS1x20_00_MUXA                        0xA0//AINP = AIN2, AINN = AVSS
  25. #define ADS1x20_00_MUXB                        0xB0//AINP = AIN3, AINN = AVSS
  26. #define ADS1x20_00_MUXC                        0xC0//(VREFPx ?VREFNx) / 4 monitor (PGA bypassed)
  27. #define ADS1x20_00_MUXD                        0xD0//(AVDD ?AVSS) / 4 monitor (PGA bypassed)
  28. #define ADS1x20_00_MUXE                        0xE0//AINP and AINN shorted to (AVDD + AVSS) / 2
  29. #define ADS1x20_00_MUXF                        0xF0//Not used
  30. #define ADS1x20_00_GAIN0                0x00//Gain = 1 (default)
  31. #define ADS1x20_00_GAIN1                0x02//Gain = 2
  32. #define ADS1x20_00_GAIN2                0x04//Gain = 4
  33. #define ADS1x20_00_GAIN3                0x06//Gain = 8
  34. #define ADS1x20_00_GAIN4                0x08//Gain = 16
  35. #define ADS1x20_00_GAIN5                0x0A//Gain = 32
  36. #define ADS1x20_00_GAIN6                0x0C//Gain = 64
  37. #define ADS1x20_00_GAIN7                0x0E//Gain = 128
  38. #define ADS1x20_00_PGA_BYPASS_E        0x00//PGA enabled (default) The PGA is always enabled for gain settings 8 to 128, regardless of the PGA_BYPASS setting.
  39. #define ADS1x20_00_PGA_BYPASS_D        0x01//PGA disabled and bypassed
  40. //寄存器01
  41. //------------------------------------Normal mod------Duty-cycle mode--Turbo mode
  42. #define ADS1x20_01_DR0                        0x00//20 SPS (default)-5 SPS-----------40 SPS
  43. #define ADS1x20_01_DR1                        0x20//45 SPS-----------11.25 SPS-------90 SPS
  44. #define ADS1x20_01_DR2                        0x40//90 SPS-----------22.5 SPS--------180 SPS
  45. #define ADS1x20_01_DR3                        0x60//175 SPS----------44 SPS----------350 SPS
  46. #define ADS1x20_01_DR4                        0x80//330 SPS----------82.5 SPS--------660 SPS
  47. #define ADS1x20_01_DR5                        0xA0//600 SPS----------150 SPS---------1200 SPS
  48. #define ADS1x20_01_DR6                        0xC0//1000 SPS---------250 SPS---------2000 SPS
  49. #define ADS1x20_01_DR7                        0xE0//Not used---------Not used--------Not used
  50. #define ADS1x20_01_MODE0                0x00//Normal mode (256-kHz modulator clock, default)
  51. #define ADS1x20_01_MODE1                0x08//Duty-cycle mode (internal duty cycle of 1:4)
  52. #define ADS1x20_01_MODE2                0x10//Turbo mode (512-kHz modulator clock)
  53. #define ADS1x20_01_MODE3                0x18//Not used
  54. #define ADS1x20_01_CM0                        0x00//Single-shot mode (default)
  55. #define ADS1x20_01_CM1                        0x04//Continuous conversion mode
  56. #define ADS1x20_01_TS0                        0x00//Disables temperature sensor (default)
  57. #define ADS1x20_01_TS1                        0x02//Enables temperature sensor
  58. #define ADS1x20_01_BCS0                        0x00//Current sources off (default)
  59. #define ADS1x20_01_BCS1                        0x01//Current sources on
  60. //寄存器02
  61. #define ADS1x20_02_VREF0                0x00//Internal 2.048-V reference selected (default)
  62. #define ADS1x20_02_VREF1                0x40//External reference selected using dedicated REFP0 and REFN0 inputs
  63. #define ADS1x20_02_VREF2                0x80//External reference selected using AIN0/REFP1 and AIN3/REFN1 inputs
  64. #define ADS1x20_02_VREF3                0xC0//Analog supply AVDD used as reference
  65. #define ADS1x20_02_FIR0                        0x00//No 50-Hz or 60-Hz rejection (default)
  66. #define ADS1x20_02_FIR1                        0x10//Simultaneous 50-Hz and 60-Hz rejection
  67. #define ADS1x20_02_FIR2                        0x20//50-Hz rejection only
  68. #define ADS1x20_02_FIR3                        0x30//60-Hz rejection only
  69. #define ADS1x20_02_PSW0                        0x00//Switch is always open (default)
  70. #define ADS1x20_02_PSW1                        0x08//Switch automatically closes when the START/SYNC command is sent and opens when the POWERDOWN commandis issued
  71. #define ADS1x20_02_IDAC0                0x00//Off (default)
  72. #define ADS1x20_02_IDAC1                0x01//Not used
  73. #define ADS1x20_02_IDAC2                0x02//50 uA
  74. #define ADS1x20_02_IDAC3                0x03//100 uA
  75. #define ADS1x20_02_IDAC4                0x04//250 uA
  76. #define ADS1x20_02_IDAC5                0x05//500 uA
  77. #define ADS1x20_02_IDAC6                0x06//1000 uA
  78. #define ADS1x20_02_IDAC7                0x07//1500 uA
  79. //寄存器03
  80. #define ADS1x20_03_I1MUX0                0x00//IDAC1 disabled (default)
  81. #define ADS1x20_03_I1MUX1                0x20//IDAC1 connected to AIN0/REFP1
  82. #define ADS1x20_03_I1MUX2                0x40//IDAC1 connected to AIN1
  83. #define ADS1x20_03_I1MUX3                0x60//IDAC1 connected to AIN2
  84. #define ADS1x20_03_I1MUX4                0x80//IDAC1 connected to AIN3/REFN1
  85. #define ADS1x20_03_I1MUX5                0xA0//IDAC1 connected to REFP0
  86. #define ADS1x20_03_I1MUX6                0xC0//IDAC1 connected to REFN0
  87. #define ADS1x20_03_I1MUX7                0xE0//Not used
  88. #define ADS1x20_03_I2MUX0                0x00//IDAC2 disabled (default)
  89. #define ADS1x20_03_I2MUX1                0x04//IDAC2 connected to AIN0/REFP1
  90. #define ADS1x20_03_I2MUX2                0x08//IDAC2 connected to AIN1
  91. #define ADS1x20_03_I2MUX3                0x0C//IDAC2 connected to AIN2
  92. #define ADS1x20_03_I2MUX4                0x10//IDAC2 connected to AIN3/REFN1
  93. #define ADS1x20_03_I2MUX5                0x14//IDAC2 connected to REFP0
  94. #define ADS1x20_03_I2MUX6                0x18//IDAC2 connected to REFN0
  95. #define ADS1x20_03_I2MUX7                0x1C//Not used
  96. #define ADS1x20_03_DRDYM0                0x00//Only the dedicated DRDY pin is used to indicate when data are ready (default)
  97. #define ADS1x20_03_DRDYM1                0x02//Data ready is indicated simultaneously on DOUT/DRDY and DRDY


  98. //#define ADS1x20_SADC0_1                        ADS1x20_OS|ADS1x20_MUX0|ADS1x20_PGA5|ADS1x20_MODE1|ADS1x20_SPS4|ADS1x20_TEMP0|ADS1x20_PULL1//单次使能|AIN0-AIN1|PGA16|单次|128SPS|ADC|弱上拉
  99. //#define ADS1x20_ADC0_1                        ADS1x20_MUX0|ADS1x20_PGA5|ADS1x20_MODE0|ADS1x20_SPS4|ADS1x20_TEMP0|ADS1x20_PULL1//AIN0-AIN1|PGA16|连续|128SPS|ADC|弱上拉
  100. //#define ADS1x20_STEMP                        ADS1x20_OS|ADS1x20_MODE1|ADS1x20_SPS4|ADS1x20_TEMP1|ADS1x20_PULL1//单次使能|单次|128SPS|温度|弱上拉
  101. //#define ADS1x20_TEMP                        ADS1x20_MODE0|ADS1x20_SPS4|ADS1x20_TEMP1|ADS1x20_PULL1//连续|128SPS|温度|弱上拉

  102. void ADS1x20_Init(void);
  103. void ADS1x20_ReadRegister(unsigned char *pData);
  104. void ADS1x20_WriteRegister(unsigned char StartAddress, unsigned char NumRegs, unsigned char * pData);
  105. void ADS1x20_ReadChannel(unsigned char Channel,unsigned char*Data);
  106. unsigned short ADS1x20_ReadChip(void);
  107. float ADS1x20_ReadChipTemp(void);

  108. #endif
复制代码

出0入53汤圆

12
发表于 2020-8-4 08:06:01 | 只看该作者
reflecter 发表于 2020-8-3 20:37
稳定,我们东区已有客户100K级别出货~
若无需低功耗模式,还有个low cost特别型号AD74-014可以选用的(电 ...

100k 能到什么价位,还有有效数据能稳定到多少位

出0入4汤圆

13
 楼主| 发表于 2020-8-4 08:56:06 | 只看该作者
reflecter 发表于 2020-8-3 20:32
目前使能了几个通道?数字滤波器怎么配的?用了通道序列器了的?


这么好的帖子,就知道你会来
1个通道,无滤波,都是最基本的功能,我偏向于硬件和方案设计,程序有别人在做,我只是业余时间测试一下。

出0入0汤圆

14
发表于 2020-8-4 09:16:59 | 只看该作者
zhcj66 发表于 2020-8-4 08:04
在stm32f103上测试成功的

谢谢了,断断续续搞了个把星期时间了,都没有搞定,感谢了

出0入102汤圆

15
发表于 2020-8-4 09:41:09 | 只看该作者
reflecter 发表于 2020-8-3 20:37
稳定,我们东区已有客户100K级别出货~
若无需低功耗模式,还有个low cost特别型号AD74-014可以选用的(电 ...

搜了一下,没有你说的AD74-014这个型号,AD74开头的大多是12位和16位的,
如果只是没有低功耗,其它功能和AD7124一样,那岂不是物美价廉的好东西

出0入4汤圆

16
 楼主| 发表于 2020-8-4 10:28:19 | 只看该作者
ersha4877 发表于 2020-8-3 21:18
有ADS1220的STM32F030的驱动,最近在搞,有点搞不定,谢谢

我之前写过ADS1220相关的帖子,不知道是不是我水平问题,这个片子我觉得精度不好,没有ADI的片子好伺候

出0入0汤圆

17
发表于 2020-8-4 10:36:15 | 只看该作者
bolizhicheng204 发表于 2020-8-4 10:28
我之前写过ADS1220相关的帖子,不知道是不是我水平问题,这个片子我觉得精度不好,没有ADI的片子好伺候 ...

没有用过,坛里的高手说还行,也就试试看

出110入109汤圆

18
发表于 2020-8-4 12:36:46 | 只看该作者
bolizhicheng204 发表于 2020-8-4 08:56
这么好的帖子,就知道你会来  
1个通道,无滤波,都是最基本的功能,我偏向于硬件 ...

哈哈~

出110入109汤圆

19
发表于 2020-8-4 12:39:09 | 只看该作者
N_EMBED 发表于 2020-8-4 09:41
搜了一下,没有你说的AD74-014这个型号,AD74开头的大多是12位和16位的,
如果只是没有低功耗,其它功能 ...

果然记错了,是AD70/046:内部型号了的,应是低功耗那块未做测试验证,挤了点成本出来。

本帖子中包含更多资源

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

x

出0入53汤圆

20
发表于 2020-8-4 13:30:16 | 只看该作者
bolizhicheng204 发表于 2020-8-4 10:28
我之前写过ADS1220相关的帖子,不知道是不是我水平问题,这个片子我觉得精度不好,没有ADI的片子好伺候 ...

TI得就是各种寄存器 搞得很晕,我当时参照谁的忘记了,但是我那个驱动是调通了

出0入102汤圆

21
发表于 2020-8-4 15:05:35 | 只看该作者
reflecter 发表于 2020-8-4 12:39
果然记错了,是AD70/046:内部型号了的,应是低功耗那块未做测试验证,挤了点成本出来。

...

这个也搜不到,只是内部测试用的?价格是AD7124-4的60%?哪里可以搞点样品测试一下

出0入0汤圆

22
发表于 2020-9-6 16:07:01 | 只看该作者
请问  程序里面读写寄存器时候,应该是要先写通讯寄存器,然后再写相应的寄存器,但是你程序在写寄存器的时候,没有先写通讯寄存器,读寄存器的时候,先写了通讯寄存器,这个没有看明白,能解析一下吗

出0入0汤圆

23
发表于 2020-9-6 23:03:45 | 只看该作者
全速19.2K下,建立时间最短,有效分辨率最多16位多,除非你软件滤波

出0入0汤圆

24
发表于 2021-3-3 11:22:47 | 只看该作者
zhcj66 发表于 2020-8-4 13:30
TI得就是各种寄存器 搞得很晕,我当时参照谁的忘记了,但是我那个驱动是调通了 ...

大哥,我用AD7124-4 采集2个3线PT100怎么画图

出0入0汤圆

25
发表于 2023-10-31 21:32:12 | 只看该作者
有遇到通道间串扰的问题吗?如何解决

出0入42汤圆

26
发表于 2023-11-3 10:02:23 | 只看该作者
windyxin872 发表于 2021-3-3 11:22
大哥,我用AD7124-4 采集2个3线PT100怎么画图
(引用自24楼)

电流源要切换输出通道吧

出0入0汤圆

27
发表于 2024-4-2 03:36:31 来自手机 | 只看该作者
国产完全替代,核芯互联cl2434,最近在推广,插拔替换,寄存器spi及工作模式完全兼容

出0入300汤圆

28
发表于 2024-4-2 07:40:23 来自手机 | 只看该作者
真较劲的话这些东西用好了事情很多,所以没有人用这些东西做万用表。当然万用表还有其他的瓶颈,但ad转换就没有瓶颈吗,其实每个人都清楚,假装看不见就是了
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 13:29

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

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