初级会员

- 积分
- 116
- 金钱
- 116
- 注册时间
- 2015-1-15
- 在线时间
- 18 小时
|
发表于 2018-11-11 13:24:20
|
显示全部楼层
我做过ADS1114的程序。步骤如下:
1、初始化I2C
I2C_HandleTypeDef hI2C2
void I2C_Init(void)
{
__HAL_RCC_I2C2_CLK_ENABLE();
hI2C2.Instance = I2C2;
hI2C2.Init.Timing = 0x10909CEC;
hI2C2.Init.OwnAddress1 = 0;
hI2C2.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
hI2C2.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
hI2C2.Init.OwnAddress2 = 0;
hI2C2.Init.OwnAddress2Masks = I2C_OA2_NOMASK;
hI2C2.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
hI2C2.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
HAL_I2C_Init(&hI2C2);
}
//******************************************************************************
// fn : HAL_I2C_Send
//
// brief : 发送指定数据
//
// param : addr -> 从设备地址
// pData -> 数据指针
// len -> 数据长度
//
// return : 状态信息
uint8_t HAL_I2C_Send(I2C_HandleTypeDef hand,uint8_t addr,uint8_t *pData,uint16_t len)
{
if(len == 0 || pData == 0)
{
return HAL_ERROR;
}
return HAL_I2C_Master_Transmit(&hand,addr,pData,len,100);
}
//******************************************************************************
// fn : HAL_I2C_Send
//
// brief : 发送指定数据
//
// param : addr -> 从设备地址
// pData -> 存放数据地址
// len -> 数据长度
//
// return : 状态信息
uint8_t HAL_I2C_Read(I2C_HandleTypeDef hand,uint8_t addr, uint8_t *pData, uint16_t len)
{
if(len == 0 || pData == 0)
{
return HAL_ERROR;
}
return HAL_I2C_Master_Receive(&hand,addr,pData,len,100);
}
2、初始化ADS1114
#define ADS1114_READ_ADDR 0x93
#define ADS1114_WRITE_ADDR 0x92
#define ADS1114_CONVERSION_CMD 0x00
#define ADS1114_CONFIG_CMD 0x01
#define ADS1114_LO_THRESH 0x02
#define ADS1114_HI_THRESH 0x03
void ADS1114Init(void)
{
u8 cmd[3];
cmd[0] = ADS1114_CONFIG_CMD;
cmd[1] = 0xc0; //1100 0000
cmd[2] = 0xe2; //1110 0010
HAL_I2C_Send(hI2C2,ADS1114_WRITE_ADDR,cmd,3);
cmd[0] = ADS1114_CONVERSION_CMD;
HAL_I2C_Send(hI2C2,ADS1114_WRITE_ADDR,cmd,1);
}
3、读取AD值
u16 ADS1114Read(void)
{
u8 ReadData[2];
u16 AD;
HAL_I2C_Read(hI2C2,ADS1114_READ_ADDR,ReadData,2);
AD = ReadData[0];
AD = (AD << 8) + ReadData[1];
return(AD);
}
|
|