新手上路
- 积分
- 49
- 金钱
- 49
- 注册时间
- 2020-4-20
- 在线时间
- 12 小时
|
发表于 2020-5-16 19:03:56
|
显示全部楼层
void AK8975_Init(void)
{
HAL_Delay(20);
//AK8975_CS_ON;
if(AK_write_reg(AK8975_I2CDIS_REG,0x1B))
printf("fail\r\n");
printf("AK8974 id=%x\r\n",AK_read_reg(0X00));//读取ID
// AK8975_ReadWriteByte(AK8975_I2CDIS_REG);
// AK8975_ReadWriteByte(0x1B); //禁用I2C
// AK8975_ReadWriteByte(AK8975_CNTL_REG);
// AK8975_ReadWriteByte(0X01); //单次测量模式
// AK8975_CS_OFF;
}
uint8_t AK_read_reg(uint8_t reg)
{
AK8975_CS_ON;
tx = reg | 0x80;
HAL_SPI_TransmitReceive(&hspi2, &tx, &rx, 1, 55);
HAL_Delay(10);
HAL_SPI_TransmitReceive(&hspi2, &tx, &rx, 1, 55);//这个应该是随便发一个数就行
tx = 0xff;
//HAL_SPI_TransmitReceive(&hspi2, &tx, &rx, 1, 55);
//HAL_SPI_TransmitReceive(&hspi2, &tx, &rx, 1, 55);
AK8975_CS_OFF;
return rx;
}
uint8_t AK_write_reg(uint8_t reg,uint8_t val)
{
HAL_StatusTypeDef stat;
AK8975_CS_ON;
tx = reg ;
stat = HAL_SPI_TransmitReceive(&hspi2, &tx, &rx, 1, 55);
if(stat != HAL_OK)
return 1;
tx = val;
HAL_SPI_TransmitReceive(&hspi2, &tx, &rx, 1, 55);
AK8975_CS_OFF;
return 0;
} |
|