微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1118读出来的值有点问题!实在查不出来 问题出现在什么地方!

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

时间:10-02 整理:3721RD 点击:

你好,我用了一个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 配置为上拉输入的

也没有看出来你用的是什么 MCU. 我看可以先用示波器验证一下时序吧.

是的,不要发程序,把你对应的波形抓出来看看。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top