STM32
直播中

李丽

8年用户 1507经验值
私信 关注
[问答]

使用STM32F103C8T6对MKI194V1(LSM6DSR)进行设置,,无法正常读取值的原因?

你好,目前我使用STM32F103C8T6对MKI194V1(LSM6DSR)进行设置,但目前拿到的WhoamI_ID都是0x4A,可否帮忙确认一下是否有我设置错误的地方

SPI Initial

void MX_SPI2_Init(void)
{

/* USER CODE BEGIN SPI2_Init 0 */

/* USER CODE END SPI2_Init 0 */

/* USER CODE BEGIN SPI2_Init 1 */

/* USER CODE END SPI2_Init 1 */
hspi2.Instance = SPI2;
hspi2.Init.Mode = SPI_MODE_MASTER;
hspi2.Init.Direction = SPI_DIRECTION_2LINES;
hspi2.Init.DataSize = SPI_DATASIZE_8BIT;
hspi2.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi2.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi2.Init.NSS = SPI_NSS_SOFT;
hspi2.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
hspi2.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi2.Init.TIMode = SPI_TIMODE_DISABLE;
hspi2.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi2.Init.CRCPolynomial = 10;
if (HAL_SPI_Init( hspi2) != HAL_OK)
{
Error_Handler();
}
/* USER CODE BEGIN SPI2_Init 2 */

/* USER CODE END SPI2_Init 2 */

}

// 寫入Register

void LSM6DSR_Core_Write_Reg(TYPE_U08 U08_Reg, TYPE_U08 U08_Val)
{
TYPE_U08 AxU08_TxBuf[2];

SPI_MKI194_CS_LOW();

AxU08_TxBuf[0] = U08_Reg;
AxU08_TxBuf[1] = U08_Val;

HAL_SPI_Transmit( hspi2, AxU08_TxBuf, 2,1000);

SPI_MKI194_CS_HIGH();
}

// 讀出Register

TYPE_U08 LSM6DSR_Core_Read_Reg(TYPE_U08 U08_Reg)
{
TYPE_U08 AxU08_Ret;

U08_Reg |= 0x80;

SPI_MKI194_CS_LOW();

HAL_SPI_Transmit( hspi2,  U08_Reg, 1,1000);
HAL_SPI_Receive( hspi2,  AxU08_Ret, 1,1000);

SPI_MKI194_CS_HIGH();

return AxU08_Ret;
}

// 讀出全部Register

void LSM6DSR_Core_Read_All(void)
{
TYPE_U08 AxU08_i;

for(AxU08_i = 1 ; AxU08_i < 0x7E ; AxU08_i++)
{
        U08_Reg[AxU08_i] = 0x00;
        U08_Reg[AxU08_i] = LSM6DSR_Core_Read_Reg(AxU08_i);
}
}

回帖(1)

江根磊

2024-3-12 13:47:06
不确定是不是你的这一句的问题:
SPI_MKI194_CS_LOW();HAL_SPI_Transmit( hspi2,  U08_Reg, 1,1000);HAL_SPI_Receive( hspi2,  AxU08_Ret, 1,1000);SPI_MKI194_CS_HIGH();
你可以试试它的另一个函数HAL_SPI_TransmitReceive.
举报

更多回帖

发帖
×
20
完善资料,
赚取积分