你好:我在用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; }