您好!
遵循主题:
借助原理图:
尝试从 ADS124S08中的内部二极管读取温度、但接下来会丢失什么操作、无法读取有效数据。
我在做什么:
*下拉复位
*释放复位
此时、我可以读取寄存器内容、它们与数据表中定义的默认寄存器值相匹配。
*等待 RDY 位
*清除 FL_POR
*启用温度传感器(寄存器0x09)
*启用 PGA (寄存器0x03)
*将 PGA 增益限制为4 (寄存器0x03)
*发送启动操作码
*将 START 引脚设置为高电平
*检查 DRDY
*发送 RDATA 操作码
*读出数据
此时我会得到空白数据。
我可以确认 SPI 总线上的相同数据(SCLK 和 MISO 线路)。 我是否需要做更多的设置,以便从温度传感器获取有效数据?
已经浏览过数据表、查找温度传感器的特定设置。 我找不到任何内容。
有人能告诉我我我出了什么问题吗?
读取传感器:
void ads124xxx_reset (void)
{
printf ("*%s:ADC Reset\r"、__func__);
__adc_RST_ENA ();
delay (5);
__adc_RST_REL ();
delay (5);
}
void ads124xxx_dump_regs (spi_typedef * SPIx)
{
uint16_t i、dat;
printf (")------- \r");
printf ("寄存器映射\r");
printf ("-------- \r");
for (i = 0;i < 0x12;i++){
dat = ads124xxx_spi_regrd (SPI1、i);/*读取寄存器*/
printf (" Reg %02xh:%02xh\r"、i、dat);
}
printf ("------ \r");
}
void ads124xxx_init (spi_typedef * SPIx)
{
uint8_t tmp;
printf (*%s:正在初始化\r"、__func_);
while (ads124xxx_spi_regrd (SPI1、0x01)& 0x40);//等待 RDY */
tmp = ads124xxx_spi_regrd (SPI1、0x01);
ads124xxx_spi_regwr (SPI1、0x01、(tmp &~(1 << 6)));//清除 FL_POR *//
*在此处写入所有相关的 ADC 配置*//
*回读配置,并检验 SPi_void *
温度*/spi_t_sense***(t_t)
/**
*测量内部温度传感器时
,*模拟输入与 ADC 断开连接,
并且*温度传感器的输出电压被路由
到 ADC,以便使用选定的 PGA 增益、
*数据速率和电压基准进行测量。 如果启用、
则必须将 PGA 增益*限制为4才能使温度传感器测量
*保持在
PGA 允许的绝对输入电压范围*内。
//
tmp = ads124xxx_spi_regrd (SPI1、0x09);
tmp |=(0x02 << 5);//启用温度传感器*/
ads124xxx_spi_regwr (SPI1、0x09、tmp);
tmp = ads124xxx_spi_regrd (SPI1、0x03);
tmp |=(0x01 <<3);//启用 PGA *
tmp |= 0x02;//将 PGA 增益限制为4 */
ads124xxx_spi_regwr (SPI1、0x03、tmp);
ads124xxx_spi_cmd (SPI1、start_opcode_mask);/* START (0x08)转换*/
GPIO_SetBits (GPIOC、GPIO_Pin_10);/* START 引脚使能*/
printf ("*%s:ADC 设置为连续转换\r\n、__func__);
重定向}int main (void){SysTK_Config (SystemCoreClock / 1000);/* SyARTstick event @1ms (*-/-/_Inetup);
\r");
printf (" ADS124xxx Test\r");
printf ("-------- \r\n);
ads124xxx_reset ();//重置 ADC */
ads124xxx_dump_regs (SPI1);
ads124xxx_init (SPI1);//开始转换*/
ads124xxx_temp_sense (SPI1);
while (1){
GPIOB->ODR ^= GPIO_Pin
(SPI1);
* 124xxx (SPI1);toggle * 1);tog_600 */ADDIODR (SPI1)
谢谢、
制造商
