STM32驱动模数转换芯片ADS1120(基础知识篇)第1篇
2023-09-14 08:57:21 时间
1. 先看下ADS1120的结构图,ADS1120是个比较奇葩的ADC模数转换器,因为比较适用于热电阻之类的温度采集器。看下图,有个MUX多路复用器,应该是选择两个差分信号去测试,通过输入多路复用器 (MUX) 实现的两个差分输入或四个单端输入,一个低噪声可编程增益放大器 (PGA),PGA,内部 PGA 提供高达128V/V 的增益。此 PGA 使得 ADS1120 非常适用于小型传感器信号测量 应用 ,例如电阻式温度检测器(RTD)、热电偶、热敏电阻和桥式传感器。
2. 看下寄存器,4个寄存器
3. 命令
4. 参考例程
VOID main(VOID)
{
signed long tData;
WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
Init_StartUp(); // Initialize device
ADS1220Init(); // Initializes the SPI port pins as well as control
ADS1220Config(); // Set base configuration for ADS1x20 device
while(1)
{
/* Add specifc command for reading and writing ADS1220 here */
/* dFlag is set in the interrupt service routine when DRDY triggers end
of conversion */
if (dflag) /* check if new data is available */
{
tData = ADS1220ReadData(); /* get the data from the ADS1220 */
dFlag=0;
}
/* other routines could be added here, such as change the mux setting */
} /* end of while(1) */
} /* end of main() */
其中配置函数比较重要,如下是1增益,也是就不变,然后ADS1220_MUX_0_G=0x80
void ADS1220Config(void)
{
unsigned Temp;
ADS1220ReadRegister(ADS1220_0_REGISTER, 0x01, &Temp);
/* clear prev value; */
Temp &= 0x0f;
Temp |= ADS1220_MUX_0_G;
/* write the register value containing the new value back to the ADS */
ADS1220WriteRegister(ADS1220_0_REGISTER, 0x01, &Temp);
ADS1220ReadRegister(ADS1220_1_REGISTER, 0x01, &Temp);
/* clear prev DataRate code; */
Temp &= 0x1f;
Temp |= (ADS1220_DR_600 + ADS1220_CC); /* Set default start mode to 600sps and continuous conversions */
/* write the register value containing the new value back to the ADS */
ADS1220WriteRegister(ADS1220_1_REGISTER, 0x01, &Temp);
}
ADS1220_MUX_0_G=0x80,那么看下寄存器,什么意思呢?就是测量AIN0引脚的电平,得出一个结论,如果要想测量4个通道,那么需要依次次修改MUX[3:0],一个测量完再测试另外一个
读数据,这个例程比较简单,只测量了AIN0的电压,我们的应用是需要做2线PT100铂电阻温度测量,所以需要继续
long ADS1220ReadData(void)
{
long Data;
/* assert CS to start transfer */
ADS1220AssertCS(1);
/* send the command byte */
ADS1220SendByte(ADS1220_CMD_RDATA);
/* get the conversion result */
Data = ADS1220ReceiveByte();
Data = (Data << 8) | ADS1220ReceiveByte();
/* sign extend data */
if (Data & 0x8000)
Data |= 0xffff0000;
/* de-assert CS */
ADS1220AssertCS(0);
return Data;
}
相关文章
- 传三星将于2023年小幅扩大OLED驱动芯片产能
- 可编程 USB 转串口适配器开发板芯片驱动文件说明
- 新款 功效三合一数字控制芯片多种成熟驱动方案
- 抗干扰LCD驱动芯片VK1621B-SSOP48-LQFP44液晶驱动IC资料
- LCD液晶段码屏显示驱动IC/LCD驱动芯片(IC) 超低功耗 /省电 /抗干扰19*4段VKL076 SSOP28 原厂 FAE支持
- 程序Linux 平台设备驱动开发实践(linux平台设备驱动)
- 华为自研40nm OLED驱动IC芯片或由中芯国际代工
- 华为自研40nm OLED驱动IC芯片:或由中芯国际代工
- 恶意驱动Netfilter rootkit终极进化 360安全卫士“斩尽杀绝”为安全加码
- 华为OLED驱动芯片完成试产:最快年底量产交付
- MySQL驱动类——创建数据库连接的稳健方式(mysql驱动类)
- 程序轻松更新Linux网卡驱动程序(linux更新网卡驱动)
- Linux车机系统:驱动移动社会的动力(linux车机系统)
- 台积电通知客户将提高LCD显示驱动芯片代工价格 从8月份开始
- Qt连接Oracle数据库的驱动问题(qtoracle驱动)
- 使用PDO驱动快速查询MySQL数据库(pdo连接mysql查询)
- 探究Oracle数据库驱动的重要性与应用(oracle的数据库驱动)
- SQL Server驱动的日志编写方式(sqlserver写日志)
- 360政企安全集团发布重磅方法论,驱动实战化安全能力建设