ads1118例程
以下是一个基于STM32 HAL库的ADS1118模数转换器例程,包含初始化、配置和读取电压值的完整代码:
1. 硬件连接
// STM32与ADS1118连接引脚定义
#define ADS1118_CS_GPIO_PORT GPIOA
#define ADS1118_CS_PIN GPIO_PIN_4 // 片选引脚
#define ADS1118_SPI_HANDLE hspi1 // SPI句柄
2. 寄存器配置宏
// 配置寄存器设置(根据需求修改)
#define ADS1118_CONFIG \
(0x4000 | // MUX[2:0]=100 (AIN0-GND单端输入) \
0x0200 | // PGA[2:0]=010 (±2.048V量程) \
0x0000 | // MODE=0 (连续转换模式) \
0x00E0 | // DR[2:0]=111 (860SPS采样率) \
0x0000) // TS_MODE=0 (ADC模式)
3. ADS1118初始化函数
void ADS1118_Init(void) {
// 初始化CS引脚
GPIO_InitTypeDef GPIO_InitStruct = {0};
GPIO_InitStruct.Pin = ADS1118_CS_PIN;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(ADS1118_CS_GPIO_PORT, &GPIO_InitStruct);
// 拉高片选(不选中)
HAL_GPIO_WritePin(ADS1118_CS_GPIO_PORT, ADS1118_CS_PIN, GPIO_PIN_SET);
}
4. 读取ADC值函数
float ADS1118_ReadVoltage(uint8_t channel) {
uint16_t tx_data = ADS1118_CONFIG;
uint16_t rx_data = 0;
float voltage;
// 修改通道配置位(bit14-12)
tx_data &= ~(0x7 << 12); // 清除原有通道设置
tx_data |= (channel << 12); // 设置新通道
// 开始SPI传输
HAL_GPIO_WritePin(ADS1118_CS_GPIO_PORT, ADS1118_CS_PIN, GPIO_PIN_LOW);
HAL_SPI_TransmitReceive(&ADS1118_SPI_HANDLE,
(uint8_t*)&tx_data,
(uint8_t*)&rx_data,
1, // 传输16位=2字节
100); // 超时时间ms
HAL_GPIO_WritePin(ADS1118_CS_GPIO_PORT, ADS1118_CS_PIN, GPIO_PIN_SET);
/*
数据处理说明:
1. rx_data包含16位转换结果(高位在前)
2. 实际有效数据在bit15-bit4(12位有效值)
3. 右移4位得到完整16位补码
*/
int16_t adc_value = (int16_t)(rx_data >> 4); // 转换为带符号整数
// 转换为电压值(±2.048V量程)
voltage = (adc_value * 2.048) / 32768.0f;
return voltage;
}
5. 主函数中使用示例
int main(void) {
// 初始化HAL库和SPI
HAL_Init();
SystemClock_Config();
MX_SPI1_Init();
// 初始化ADS1118
ADS1118_Init();
while (1) {
// 读取AIN0通道电压
float voltage = ADS1118_ReadVoltage(4); // 通道0对应二进制100
printf("Voltage: %.4f V\r\n", voltage);
HAL_Delay(500); // 500ms采样周期
}
}
关键配置说明:
-
输入通道选择(MUX位):
4= AIN0单端 (二进制100)5= AIN1单端 (101)6= AIN2单端 (110)7= AIN3单端 (111)
-
量程设置(PGA位):
- ±6.144V →
0x0000 - ±4.096V →
0x0200 - ±2.048V →
0x0400(默认推荐)
- ±6.144V →
-
采样率选择(DR位):
- 8SPS →
0x0000 - 128SPS →
0x0080 - 860SPS →
0x00E0(示例配置)
- 8SPS →
注意事项:
-
SPI配置要求:
- 模式:CPOL=1, CPHA=1 (SPI Mode 3)
- 数据大小:16位传输
- MSB First(高位在前)
- 时钟频率建议 ≤ 4MHz
-
数据格式:
- 返回的16位数据中,高12位是有效转换结果
- 结果以二进制补码格式存储
- 单端输入时结果始终为正
-
温度传感器模式: 如需读取片内温度,设置TS_MODE=1:
#define ADS1118_TEMP_CONFIG (ADS1118_CONFIG | 0x0010)温度计算:
float temp = (int16_t)(rx_data >> 4) * 0.03125; // 单位℃
完整工程请参考ADS1118数据手册调整配置参数以适应具体应用场景。
ADS1118 16 位低功耗 SPI 模数转换器(ADC)技术文档总结
ADS1118是一款高精度、低功耗、16位模数转换器(ADC),具备测量最常见传感器信号所需的所有功能,采用超小型无引线X2QFN-10封装或VSSOP-10封装。该ADS1118集成了可编程增益
2025-11-18 17:20:10
ADS1118温度读数错误是什么原因引起的?
我现在在用DSP宇ADS1118IDST进行温度测试,读取ADS118里面的温度值时,始终是3752,对比说明书,算出环境温度为90多度,请问是否哪有问题] 1 我的DSP与
ADS1118的硬件SPI通讯问题如何解决
ADS1118的硬件SPI通讯问题 Other Parts Discussed in Thread: ADS1118我是使用一个8位的MCU与ADS111
ADS1118具有内部基准和温度传感器的兼容SPI的16位模数转换器数据表
电子发烧友网站提供《ADS1118具有内部基准和温度传感器的兼容SPI的16位模数转换器数据表.pdf》资料免费下载
资料下载
杨海清
2024-07-15 09:37:31
ADS1118模块资料热电偶测量文档资料硬件参考设计及MSP430软JDEMO代码 430BOOS
ADS1118模块资料热电偶测量文档资料硬件参考设计及MSP430软JDEMO代码 430BOOS(单片机原理及应用答案)-ADS1118模块资料热电偶测量文档资料硬件参考设计及MSP430软
资料下载
370217
2021-07-22 13:08:26
STM32F103系列ADS1118驱动的资料免费下载
本文档的主要内容详细介绍的是STM32F103系列ADS1118驱动的资料免费下载。
资料下载
unique216b
2021-02-24 08:00:00
ADS1118如果程序中采集多个通道的电压,就会发现通道错位的情况,为什么?
USCI_A0 RX,TX interrupt } /*MODE 0: Only write config regist to ADS1118 MODE 1: Write config regist
请问ADS1120在热电偶测温度能否完全代替ADS1118?
目前想测一种K型热电偶,测温范围约为1000度,看中了ADS1118这款芯片。然后偶然间发现了ADS1120这款芯片,简单对比了一下性能指标,ADS
SPI协议详解(以ADS1118为例)
一开始先分析了SPI的协议特点,使用ADS1118这个器件作为承载物进行分析,后面用逻辑分析仪从位到字节进行解码,最后使用TI给的demo移植到STM32平台。
2024-05-07 14:58:32
低功耗高精度16位Sigma-Delta ADC CM1106,对标ADS1118系列
士模微推出高性能低功耗Sigma-Delta ADC CM1106,对标ADS1118系列
2023-03-03 22:05:22
采用ADS1118和两个热电偶的温度测量电路设计
本指导手册的设计介绍采用 ADS1118 和两个热电偶的温度测量电路。该设计使用 ADS1118 内部电压基准进行热电偶电压测量,而使用板载温度传感器进行冷端补偿 (CJC) 测量。ADC 的两个
2022-11-28 09:55:23
换一换
- 如何分清usb-c和type-c的区别
- 中国芯片现状怎样?芯片发展分析
- vga接口接线图及vga接口定义
- 芯片的工作原理是什么?
- 华为harmonyos是什么意思,看懂鸿蒙OS系统!
- 什么是蓝牙?它的主要作用是什么?
- ssd是什么意思
- 汽车电子包含哪些领域?
- TWS蓝牙耳机是什么意思?你真的了解吗
- 什么是单片机?有什么用?
- 升压电路图汇总解析
- plc的工作原理是什么?
- 再次免费公开一肖一吗
- 充电桩一般是如何收费的?有哪些收费标准?
- ADC是什么?高精度ADC是什么意思?
- dtmb信号覆盖城市查询
- EDA是什么?有什么作用?
- 中科院研发成功2nm光刻机
- 苹果手机哪几个支持无线充电的?
- type-c四根线接法图解
- 华为芯片为什么受制于美国?
- 怎样挑选路由器?
- 元宇宙概念股龙头一览
- 锂电池和铅酸电池哪个好?
- 如何进行编码器的正确接线?接线方法介绍
- 什么是场效应管?它的作用是什么?
- 虚短与虚断的概念介绍及区别
- 晶振的作用是什么?
- 大疆无人机的价格贵吗?大约在什么价位?
- amoled屏幕和oled区别
- 苹果nfc功能怎么复制门禁卡
- 单片机和嵌入式的区别是什么
- 复位电路的原理及作用
- BLDC电机技术分析
- dsp是什么意思?有什么作用?
- 苹果无线充电器怎么使用?
- iphone13promax电池容量是多少毫安
- 芯片的组成材料有什么
- 特斯拉充电桩充电是如何收费的?收费标准是什么?
- 直流电机驱动电路及原理图
- 传感器常见类型有哪些?
- 自举电路图
- 苹果笔记本macbookpro18款与19款区别
- 通讯隔离作用
- 新斯的指纹芯片供哪些客户
- 伺服电机是如何进行工作的?它的原理是什么?
- 无人机价钱多少?为什么说无人机烧钱?
- 以太网VPN技术概述
- 手机nfc功能打开好还是关闭好
- 十大公认音质好的无线蓝牙耳机