ads1256中文资料汇总_功能原理图及说明_ads1256驱动程序源代码

AD技术

11人已加入

描述

本文为大家带来ads1256中文资料汇总。

ADS1256模块说明

1、 ADS1256芯片的模拟电压是5V,数字电压3.3V,所以模块需在左上角供电5V,供电电源需纹波较小。3.3V数字电压是模块上AMS1117-3.3芯片产生的,无需再接3.3V电压。

2、 芯片是数字IO口D0-D3全部引出,如需要自行连接调试。 3、 3.3V电压输出为模块AMS1117-3.3芯片产生,可为外部单片机供电。

4、 芯片需要连接单片机的控制口全部引出,测试时按照测试程序配置连接。这个地方说明下:单片机需是3.3V电平的。

5、 左上角5V电压输出是5V外部供电经过模块滤波电路产生的,可为外部传感器供电。

6、 基准电压芯片为REF3125,固定输出2.5V电压,电流约为50uA只能用过模块的参考电压测试点,不能用于外部供电。

7、8路模拟输入是所要测量的电压输入点,可通过程序设置为单独输入模式或是差分输入模式。模拟信号输入后经过模块上的RC滤波器再送入到芯片,RC滤波器为低通滤波,通过频率约为300HZ,如果想增加通过频率,可修改RC值。

8、模块的默认模拟输入电压为-5V---+5V,如果想测试更高的电压,可以在输入端焊接分压电阻,详细焊点参考电路图。


ads1256功能原理图及说明

电源部分

ADS1256

说明:该电路为3.3V及1.8V产生电路,采用AMS1117的控制芯片,J1为+5V输入端子,这里请提供较干净的输入电源。

ADS1256

说明:该处为电源滤波。

ADS1256

说明:该处为DVCC供电选择电压。J13对应拨码开关,拨码开关打到左方,DVCC链接到1.8V,拨码开关打到右方,DVCC链接到3.3V。

ADS1256

说明:模拟地与数字地隔离,实现单点接地。确保地线不干扰,不产生压差。

采集输入部分

ADS1256

说明:J2-J9为采集输入点,您测试的电压经过该点进入ADC芯片。偶数电阻R0 R2 R4 R6 R8 R10 R12 R14为输入电阻,与后面的电容组成RC滤波电路,与奇数电阻(默认不焊接)R1 R3 R5 R7 R9 R11 R13 R15组成输入衰减电路,对大于5V的输入信号进行衰减。

晶振部分

ADS1256

2.5V参考电压产生电路

ADS1256

说明:采用REF1004-2.5产生基准电压,经过R17 C22组成的RC滤波,进入U4OP350运放。运放在这里做跟随器,放大倍数为1,作用有两个,a :提高基准电压的输出能力(原因:REF1004-2.5经过R17之后,电流的输出能力非常低)b:降低基准电压的噪声。

主控ADS1256

ADS1256

说明:ACOM可灵活配置。可以接地,也可以接外部型号,作为参考端,JP10跳帽连接,ACOM接地;JP10跳帽断开,ACOM悬空。

D0 D1 D2 D3引出到J11,方便客户调试读取数据用。

ADS1256模块程序源代码设计

#include 《avr/io.h》

#include 《avr/signal.h》

#include 《avr/interrupt.h》

#include 《avr/delay.h》

#include “ADS1256.h”

#include “main.h”

/***************************************************************

*名称: void SPI_Init(void)

*功能: SPI初始化

*入口参数: none

*出口参数: none

*日期:

****************************************************************/

void SPI_Init(void)

{

SPI_IN; //输入端口使能内部上拉

SPI_DDR; //ADS1256的SPI端口方向设置

SPCR=(1《《SPE)|(1《《MSTR)|(1《《SPR0)|(1《《CPHA); // 使能SPI接口,主机模式,MSB高位在先,模式0, 16分频,SPI时钟约460KHz

}

*名称: unsigned char read_register(unsigned char reg)

*功能: 读ADS1256寄存器

*入口参数: reg--要读的寄存器

*出口参数: 寄存器的值

*日期:

{

unsigned char x;

while(PIN_RDY); //DRDY信号低时才能读寄存器

spi_TranByte(RREG|reg); //选择写入寄存器

spi_TranByte(0x00); //写入1个寄存器

x=spi_TranByte(0xff);

return (x);

}

/***************************************************************

*名称: long read_data()

*功能: 读ADS1256的数据

*入口参数: none

*出口参数: none

*日期:

****************************************************************/

long read_data()

int main(void)

{

unsigned long x;

LCD_INIT();

SPI_Init();

ADS1256_Init();

while(1)

{

while(PIN_RDY); //DRDY信号低时才能读寄存器

write_register(MUX,0x01);

spi_TranByte(WAKEUP);

spi_TranByte(RDATA); //选择写入寄存器

x=(unsigned long)(2*VREF*read_data())/0x007fffff;

LCD_NUM(x,0,0);

DelayMs(1000);

}

}

{

unsigned char rx_dat[4];

long x;

rx_dat[0]=spi_TranByte(0xFF);

rx_dat[1]=spi_TranByte(0xFF);

rx_dat[2]=spi_TranByte(0xFF);

x= (long)rx_dat[0]*65536+(long)rx_dat[1]*256 +(long)rx_dat[2];

return (x);

}

/***************************************************************

*名称: void ADS1256_Init(void)

*功能: 初始化ADS1256

*入口参数: none

*出口参数: none

*日期:

****************************************************************/

void ADS1256_Init(void)

{

write_register(MUX,0x01); //MUX寄存器为默认值

write_register(ADCON,0x20); //ADCON寄存器为默认值

write_register(IO,0x00);

}

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
评论(0)
发评论
甘六的約 2022-08-24
0 回复 举报
您好,请请教一下,ADS1256接单片机读取数据是从D0-D4引脚读取吗?还是从SPI那几个接口就也能读取数据啊? 收起回复

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分