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.

ADS1119: About ADS1119 Chip Reading Conversion Data

Part Number: ADS1119

Hello, everybody

MCU communicates with ADS1119 chip thro ugh analog IIC, and the data converted by the chip is always equal to 0,I don't know what the problem is.

IIC source code:

#include "iic.h"
#include "main.h"
#include "stm32f4xx_hal.h"
#include "stdio.h"
//#include "delay.h"
#define IIC_SDA_1 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11,GPIO_PIN_SET)
#define IIC_SDA_0 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_11,GPIO_PIN_RESET)
#define IIC_SCL_1 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_SET)
#define IIC_SCL_0 HAL_GPIO_WritePin(GPIOB,GPIO_PIN_10,GPIO_PIN_RESET)
#define IIC_SDA_READ HAL_GPIO_ReadPin(GPIOB,GPIO_PIN_11)


void iic_init(void)//
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_11|GPIO_PIN_10;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
IIC_SDA_1;
IIC_SCL_1;

}
void iic_start(void)
{
SDA_OUT();
IIC_SDA_1;
IIC_SCL_1;
delay_us(100);
IIC_SDA_0;
delay_us(100);
IIC_SCL_0;
delay_us(100);
}
void iic_stop(void)
{
SDA_OUT();
IIC_SDA_0;
delay_us(100);
IIC_SCL_1;
delay_us(100);
IIC_SDA_1;
delay_us(100);
}
void ack(void)//主机应答
{
SDA_OUT();
IIC_SDA_0;
delay_us(100);
IIC_SCL_1;
delay_us(100);
IIC_SCL_0;
delay_us(100);
IIC_SDA_1;
}
void noack(void)
{
SDA_OUT();
IIC_SDA_1;
delay_us(100);
IIC_SCL_1;
delay_us(100);
IIC_SCL_0;
delay_us(100);
IIC_SDA_0;
}
uint8_t wait_ack(void)

{
uint8_t wo,a;
SDA_OUT();
IIC_SDA_1;
delay_us(100);
IIC_SCL_1;
delay_us(100);

SDA_IN();
if(IIC_SDA_READ)
{
wo = 1;
}
else
{
wo = 0;
}
IIC_SCL_0;
return wo;
}
void iic_write(uint8_t cmd)
{
SDA_OUT();
IIC_SCL_0;
for(uint8_t i = 0;i < 8;i++)
{
if(cmd&0x80)
IIC_SDA_1;
else
IIC_SDA_0;
cmd<<=1;

IIC_SCL_1;
delay_us(100);
IIC_SCL_0;
delay_us(100);
}
//
}

uint8_t iic_read(void)
{
uint8_t i,a;
uint8_t val = 0;



SDA_IN();
for(i=0;i<8;i++)
{
IIC_SCL_1;
delay_us(100);
val=val<<1;
//if(GPIOB->IDR& GPIO_IDR_IDR7) 
if(IIC_SDA_READ)
{
val|=0x01;
}
IIC_SCL_0;
delay_us(100);
}
return val;
}
void SDA_OUT(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}
void SDA_IN(void)
{
GPIO_InitTypeDef GPIO_InitStruct;

__HAL_RCC_GPIOC_CLK_ENABLE();
__HAL_RCC_GPIOH_CLK_ENABLE();
__HAL_RCC_GPIOB_CLK_ENABLE();
GPIO_InitStruct.Pin = GPIO_PIN_11;
GPIO_InitStruct.Mode = GPIO_MODE_INPUT;
GPIO_InitStruct.Pull = GPIO_NOPULL;
GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
}