主题中讨论的其他器件: ADS1220、 ADS124S06、 ADS124S08
您好!
我想使用单个 CR2032纽扣电池运行具有 ADS1248的 uC。 当2.5V 电池电量耗尽时、该电池的电压会快速降至2、8 - 2、7V。 因此、我的 queston 是 ADS1248所需的实际最小电压源。 ASD1248能否在电压约为2.7V 时安全运行?
谢谢、
Marcin
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
您好!
我想使用单个 CR2032纽扣电池运行具有 ADS1248的 uC。 当2.5V 电池电量耗尽时、该电池的电压会快速降至2、8 - 2、7V。 因此、我的 queston 是 ADS1248所需的实际最小电压源。 ASD1248能否在电压约为2.7V 时安全运行?
谢谢、
Marcin
您好!
示波器图像显示了 VREFOUT。
内部基准控制被设定为模式"当一个转换正在进行中时、内部基准被打开并且在器件接收到 睡眠命令或者 START 引脚被取为低电平时断电"
数据速率设置为:1000SPS
下面是伪代码中的时序图:
开关(毫秒){ 案例1: 通道_2_setup; 中断; 案例3: CHANNEL 读取; 中断; 案例6: CHANNEL 1_setup; 中断; 案例8: CHANNEL 读取; 中断; 案例25: //毫秒 counter_reset 中断; 默认值: //不执行任何操作。 中断; }
下面是 CHANGE_x_setup 函数:
void ADS1248_setup (uint8_t channel){
adsWakeSleep (1);//将 START 引脚设置为高
电平 SPI_xfer_DONE = false;
//发送 SDATAC 命令(16h)------
m_TX_LENGTH = sizeof (m_TX_Buf_2);
app_error_check (nrf_drv_spi_transfer (&SPI、m_TX_Buf_2、m_TX_length、m_Rx_Buf、 0));
while (!spi_xfer_done){
__WFE ();
}
//重置 Rx 缓冲区和传输完成标志
SPI_xfer_DONE = false;
开关(通道){
情形1:
// 0x40第一个命令字节:写入命令 MUX0
// 0x00第二个命令字节:要写入的字节数
// 0x01数据:AIN0 & AIN1
// 0x42第一个命令字节:写入命令 MUX1
// 0x00第二个命令字节:要写入的字节数
// 0x60当唤醒时打开内部参考| REFP0和 REFN0
m_TX_LENGTH = sizeof (m_TX_Buf_3);
APP_ERROR_CHECK (nrf_drv_spi_transfer (&SPI、m_TX_BUf_3、m_TX_length、m_RX_Buf、0));
中断;
案例2:
// 0x40第一个命令字节:写入命令 MUX0
// 0x00第二个命令字节:要写入的字节数
// 0x37数据:AIN6 & AIN7
// 0x42第一个命令字节:写入命令 MUX1
// 0x00第二个命令字节:要写入的字节数
// 0x68唤醒时打开内部参考| REFP1和 REFN1
m_TX_LENGTH = sizeof (m_TX_Buf_4);
APP_ERROR_CHECK (nrf_drv_spi_transfer (&SPI、m_TX_BUf_4、m_TX_length、m_RX_Buf、0));
中断;
案例3:
// 0x40第一个命令字节:写入命令 MUX0
// 0x00第二个命令字节:要写入的字节数
// 0x01数据:AIN0 & AIN1
// 0x42第一个命令字节:写入命令 MUX1
// 0x00第二个命令字节:要写入的字节数
// 0x68唤醒时打开内部参考| REFP1和 REFN1
m_TX_LENGTH = sizeof (m_TX_Buf_5);
APP_ERROR_CHECK (nrf_drv_spi_transfer (&SPI、m_TX_BUf_5、m_TX_length、m_RX_Buf、0));
中断;
默认:
break;
}
while (!spi_xfer_done){
__WFE ();
}
IF (通道=1){
//重置 Rx 缓冲器和传输完成标志
SPI_xfer_DONE = false;
//配置 PGA 和数据速率-------------------------------------------------------
m_TX_LENGTH = sizeof (m_TX_Buf_6);
APP_ERROR_CHECK (nrf_drv_spi_transfer (&SPI、m_TX_BUf_6、m_TX_length、m_RX_Buf、0));
while (!spi_xfer_done){
__WFE();
}
}否则、如果(通道==2){
//重置 Rx 缓冲器和传输完成标志
SPI_xfer_DONE = false;
//配置 PGA 和数据速率-------------------------------------------------------
m_TX_LENGTH = sizeof (m_TX_Buf_6);
APP_ERROR_CHECK (nrf_drv_spi_transfer (&SPI、m_TX_BUf_6、m_TX_length、m_RX_Buf、0));
while (!spi_xfer_done){
__WFE();
}
}
adsWakeSleep (0);//将 START 引脚设置为低
电平}
读取函数:
void ADS1248_read (){
SPI_xfer_DONE = false;
//发送 RDATA 命令(12h)-------------------------------------------------------
m_TX_LENGTH = sizeof (m_TX_Buf_7);
app_error_check (nrf_drv_spi_transfer (&SPI、m_TX_Buf_7、m_TX_length、m_RX_Buf、 4));
while (!spi_xfer_done){
__WFE ();
}
int32_t regData;
regData |= m_rx_buf[1];
regData <= 8;
regData |= m_rx_buf[2];
regData <= 8;
regData |= m_Rx_buf[3];
if (regData <= 16777215)&&(regData >= 8388608)
regData = regData - 16777216;
}