完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
ADS1118是上电之后,先选中芯片,将CS拉低,直接送配置字,然后拉高CS。再就是直接读数据? SPI_CS_Low(); //拉低CS SPI_Write_byte(0x85); SPI_Write_byte(0x83); SPI_CS_High(); //拉高CS SPI_CS_Low(); Data_H=SPI_Rec_byte(); //读高字节 Data_L=SPI_Rec_byte();// 读低字节 SPI_CS_High(); Data|=Data_H; Data=Data<<8; Data|=Data_L;可以不? 还有,ADS1118默认上电状态,是低功耗模式,那么怎么启动转换呢?还有,是上电后立马就可以对ADS1118写配置字吗,而且只要写入就一定是写到控制寄存器吗?在读数据前有没有什么标志? |
|
相关推荐
4个回答
|
|
第一个问题:
“ADS1118是上电之后,先选中芯片,将CS拉低,直接送配置字,然后拉高CS。再就是直接读数据?” 上电之后,先选中芯片,将CS拉低,直接配置Config Register,然后拉高CS。能否读取数据根据你的mode配置。若是配置为single-shot mode,且SS位在配置时已设置为1,则转换已开始,拉低CS,通过读取DRDY引脚判断转换是否完成。转换完成后可以读取数据 若配置为continuous conversion mode,则可以直接通过读取DRDY引脚判断转换是否完成。转换完成后可以读取数据 |
|
|
|
第二个问题:
“SPI_CS_Low(); //拉低CS SPI_Write_byte(0x85); SPI_Write_byte(0x83); SPI_CS_High(); //拉高CS SPI_CS_Low(); Data_H=SPI_Rec_byte(); //读高字节 Data_L=SPI_Rec_byte();// 读低字节 SPI_CS_High(); Data|=Data_H; Data=Data<<8; Data|=Data_L;可以不?” 不行。首先,SPI_CS_High(); //拉高CS SPI_CS_Low();中间最好加一个短的延时; 然后,Data_H=SPI_Rec_byte(); //读高字节 Data_L=SPI_Rec_byte();// 读低字节 在这之前需要判断DRDY是否有效。 |
|
|
|
第三个问题:“ADS1118默认上电状态,是低功耗模式,那么怎么启动转换呢?”
设置Config Register的SS bit为1后自动开启一次单次转换。低功耗的意思在这里就是单次转换。 |
|
|
|
ADS1118是一款16位的模数转换器(ADC),支持SPI通信协议。根据您的问题,我将逐步解释如何启动转换以及如何读取数据。
1. 启动转换: ADS1118默认上电状态是低功耗模式,要启动转换,需要写入配置字到控制寄存器。以下是启动转换的步骤: a. 选中芯片:将CS(片选)拉低。 b. 写入配置字:将配置字通过SPI发送给ADS1118。 c. 释放芯片:将CS拉高。 您的代码示例已经包含了这些步骤,所以您的代码是正确的。 2. 读取数据: 在启动转换后,需要读取转换结果。以下是读取数据的步骤: a. 选中芯片:将CS拉低。 b. 读取高字节:通过SPI读取高字节数据。 c. 读取低字节:通过SPI读取低字节数据。 d. 释放芯片:将CS拉高。 您的代码示例也包含了这些步骤,所以您的代码是正确的。 3. 上电后立即写配置字: 上电后,您可以立即对ADS1118写入配置字。写入的配置字会存储在控制寄存器中,用于设置ADC的工作模式和参数。 4. 读取数据前的标志: 在读取数据之前,您需要确保转换已经完成。ADS1118提供了一个转换完成标志(DRDY),当转换完成后,该标志会被置位。您可以通过读取状态寄存器来检查DRDY标志,以确保数据已经准备好被读取。 以下是完整的代码示例: ```c SPI_CS_Low(); // 拉低CS SPI_Write_byte(0x85); // 写入配置字 SPI_Write_byte(0x83); // 写入配置字 SPI_CS_High(); // 拉高CS // 检查DRDY标志,确保转换完成 SPI_CS_Low(); SPI_Write_byte(0x00); // 读取状态寄存器 status = SPI_Rec_byte(); SPI_CS_High(); if (status & 0x80) { // 检查DRDY标志 SPI_CS_Low(); Data_H = SPI_Rec_byte(); // 读高字节 Data_L = SPI_Rec_byte(); // 读低字节 SPI_CS_High(); Data = (Data_H << 8) | Data_L; // 组合高字节和低字节 } ``` 希望这些信息能帮助您了解如何使用ADS1118。如果您有其他问题,请随时提问。 |
|
|
|
只有小组成员才能发言,加入小组>>
571 浏览 1 评论
405 浏览 1 评论
605 浏览 2 评论
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
857 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
694 浏览 1 评论
AT32F407在USART2 DMA发送数据时,接包接到了要发送的数据,程序还是处于等待传输完成的标识判断中,为什么?
160浏览 29评论
1011浏览 23评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
305浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
264浏览 14评论
两个TMP117传感器一个可以正常读取温度值,一个读取的值一直是0,为什么?
116浏览 13评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-22 17:44 , Processed in 0.868482 second(s), Total 53, Slave 47 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号