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.

ADS1118读出来的值有点问题!实在查不出来 问题出现在什么地方!

Other Parts Discussed in Thread: ADS1118

你好,我用了一个ADS1118!   

IO口定义如下

//SPI1_CS      PA4
//SPI1_SCK   PA5
//SPI1_MISO  PA6
//SPI1_MOSI  PA7

uint8_t SPI1_SendByte(uint8_t byte)
{
/* 循环检测发送缓冲区是否是空 */
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET)
{
;
}
/* 通过SPI1外设发出数据 */
SPI_I2S_SendData(SPI1, byte);
/* 等待接收数据,循环检查接收数据缓冲区 */
while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET)
{
;
}
/* 返回读出的数据 */
return SPI_I2S_ReceiveData(SPI1);
}

uint32_t SPI_Code(uint16_t CofigReg)
{

GPIO_ResetBits(GPIOA,GPIO_Pin_4); //CS LO
delay(10);

readata1=SPI1_SendByte((uint8_t)(CofigReg>>8));
readata2=SPI1_SendByte((uint8_t)CofigReg);

GPIO_SetBits(GPIOA,GPIO_Pin_4); //CS HIGH
delay(10);
GPIO_ResetBits(GPIOA,GPIO_Pin_4); //CS LO

while(GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6));
{
;
}

readata3=SPI1_SendByte((uint8_t)(CofigReg>>8));
readata4=SPI1_SendByte((uint8_t)CofigReg);

readata= (uint32_t)readata4|((uint32_t)readata3<<8)|((uint32_t)readata2<<16)|((uint32_t)readata1<<24);

return readata;
}

我看见文档中说

用的是单次转换!  发完配置之后,我判断了一下    DOUT的状态,   主程序中每 500 MS执行一次    SPI_Code(0x8583);

为什么 发完配置后,PA6脚一直为高  无法运行到下面取值程序!  不知道问题出现在什么地方,希望能告诉一下!谢谢

我的PA6 配置为上拉输入的

x 出现错误。请重试或与管理员联系。