STM32和AS7262传感器之间建立通信失败
用STM32 Discovery开发板连接AS7262传感器。AS7262传感器的数据手册https://ams.com/en/as7262无法通过I2C通信获取数据。代码如下。
#define AS7262_ADD 0x93
#define STATUS_REG 0x00
#define WRITE_REGT 0x01
#define READ_REGT 0x02
#define TX_VALID 0x02
#define RX_VALID 0x01
while(1){
HAL_I2C_Mem_Read(&hi2c1, AS7262_ADD, STATUS_REG, 1, &status, 1, 100);
HAL_I2C_Mem_Read(&hi2c1, AS7262_ADD, TX_VALID, 1, &tx_check, 1, 100);
if((status && tx_check) == 0){
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_14, SET);
break;
}
}
uint8_t virtualReg = 0x08;
HAL_I2C_Mem_Write(&hi2c1, AS7262_ADD, WRITE_REGT, 1, &virtualReg, 2, 100)
while(1){
HAL_I2C_Mem_Read(&hi2c1, AS7262_ADD, STATUS_REG, 1, &status, 1, 100);
HAL_I2C_Mem_Read(&hi2c1, AS7262_ADD, RX_VALID, 1, &rx_check, 1, 100);
if((status && rx_check) != 0){
HAL_GPIO_WritePin(GPIOD, GPIO_PIN_13, SET);
break;
}
HAL_I2C_Mem_Read(&hi2c1, AS7262_ADD, READ_REGT, 1, &data, 2, 100);
}
I2C地址错误。 寄存器操作逻辑错误 可能是硬件连接问题,检查上拉电阻还有I2C引脚与AS7262连接。 修正I2C地址为 0x49。 检查上拉电阻和引脚连接。 时钟配置或超时,增加超时时间或降低I2C速度。
页:
[1]