TI中文支持网
TI专业的中文技术问题搜集分享网站

你好:我在用STM32F407的SPI操作ADS1282,我首先进行读寄存器测试,流程是:RESET PIn, 发送SDATAC命令,再发送0x24和0x00(读地址为0x04的寄存器值,它的RESET值为0x03),但是我读出的值却是零,麻烦您有空时帮我看一下,十分感谢!!

你好:我在用STM32F407的SPI操作ADS1282,我首先进行读寄存器测试,流程是:RESET PIn, 发送SDATAC命令,再发送0x24和0x00(读地址为0x04的寄存器值,它的RESET值为0x03),但是我读出的值却是零,麻烦您有空时帮我看一下,十分感谢!!

pan pan1:

user3917511:

回复 pan pan1:

楼主您在什么情况下读的啊?这个应该在DRDY置低以后才能读

pan pan1:

回复 user3917511:

读寄存器时应该不需要等DRDY置低,直接就可以读数据吧,

JiaChuang Chen:

ADS1282中04H寄存器存储的内容是高通滤波器转折频率的高8位,默认是是0x03,如果你读取出这个数值为0,建议你再读取一下03H寄存器的数值,这个寄存器存储的是低8位数值(默认为0x32),看看读取出的数据是否也为0.如果也为零,说明是读取方式有错误,或者硬件链接有问题。如果读出来是0x32,则只需再写入04H中的内容即可。

pan pan1:

回复 JiaChuang Chen:

还是零,问你一下:当我发送Write SDATAC (0x11) command to stop Read Data Continuous mode,DRDY引脚上应该有脉冲没啊

pan pan1:

回复 JiaChuang Chen:

JiaChuang Chen:

回复 pan pan1:

pan pan1

还是零,问你一下:当我发送Write SDATAC (0x11) command to stop Read Data Continuous mode,DRDY引脚上应该有脉冲没啊

既然读取出来的还是0,那么就是没有读取成功。应该是电路或者程序有问题。能不能看一下你的X25042_SendByte()函数的内容呢?有可能是时序的问题。

pan pan1:

回复 JiaChuang Chen:

uint8_t X25042_SendByte(uint8_t byte)
{uint8_t temp;/*!< Loop while DR register in not emplty */while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_TXE) == RESET);/*!< Send byte through the SPI2 peripheral */SPI_I2S_SendData(sFLASH_SPI, byte);while (SPI_I2S_GetFlagStatus(sFLASH_SPI, SPI_I2S_FLAG_RXNE) == RESET);/*!< Return the byte read from the SPI bus */temp = SPI_I2S_ReceiveData(sFLASH_SPI);return temp;
}

赞(0)
未经允许不得转载:TI中文支持网 » 你好:我在用STM32F407的SPI操作ADS1282,我首先进行读寄存器测试,流程是:RESET PIn, 发送SDATAC命令,再发送0x24和0x00(读地址为0x04的寄存器值,它的RESET值为0x03),但是我读出的值却是零,麻烦您有空时帮我看一下,十分感谢!!
分享到: 更多 (0)