这是 SPI 的正确方法吗?
Is this the right way to SPI?
我目前正在尝试检查该功能,看看我的 SPI 是否正常工作。
这个函数应该 return 1,如果一切正常...但它总是 return 0。也许 pTxData 中的值是错误的?
uint8_t Gyro_CanReadWHOAMI() {
uint8_t pTxData[2] = {0x0F | 0x80, 0};
uint8_t pRxData[2] = {0, 0};
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi5, pTxData, pRxData, 2, HAL_MAX_DELAY);
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_SET);
uint8_t test = pRxData[1] == 0x32;
return test;
}
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI5_Init();
uint32_t reads = 0;
while (1)
{
Gyro_CanReadWHOAMI();
}
}
使用STM32F429I-DISC1
已解决,错误的值
uint8_t Gyro_CanReadWHOAMI() {
uint8_t pTxData[2] = {0b10000000 | 0x0F, 0};
uint8_t pRxData[2] = {0, 0};
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi5, pTxData, pRxData, 2, HAL_MAX_DELAY);
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_SET);
uint8_t test = pRxData[1] == 0xD4;
return test;
}
我目前正在尝试检查该功能,看看我的 SPI 是否正常工作。 这个函数应该 return 1,如果一切正常...但它总是 return 0。也许 pTxData 中的值是错误的?
uint8_t Gyro_CanReadWHOAMI() {
uint8_t pTxData[2] = {0x0F | 0x80, 0};
uint8_t pRxData[2] = {0, 0};
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi5, pTxData, pRxData, 2, HAL_MAX_DELAY);
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_SET);
uint8_t test = pRxData[1] == 0x32;
return test;
}
int main(void)
{
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
SystemClock_Config();
/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_SPI5_Init();
uint32_t reads = 0;
while (1)
{
Gyro_CanReadWHOAMI();
}
}
使用STM32F429I-DISC1
已解决,错误的值
uint8_t Gyro_CanReadWHOAMI() {
uint8_t pTxData[2] = {0b10000000 | 0x0F, 0};
uint8_t pRxData[2] = {0, 0};
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi5, pTxData, pRxData, 2, HAL_MAX_DELAY);
HAL_GPIO_WritePin(NCS_MEMS_SPI_GPIO_Port, NCS_MEMS_SPI_Pin, GPIO_PIN_SET);
uint8_t test = pRxData[1] == 0xD4;
return test;
}