
现在SPI通信中,接收到的数据与发出去的数据一样,详细如下,请帮忙看看该如何配置与编程?目前使用的程序如下,ID=cmd void DACx1416_Read_ID1(void) { //Power-on Device uint8_t SPICONFIG[3]={DACX1416_SPICONFIG,0x0A,0x86}; SPI1_1_NSS_Enable(); HAL_SPI_Transmit(&hspi1, SPICONFIG, 3, DACx1416_Timeout_3); SPI1_1_NSS_Disable(); uint8_t cmd[3] = {0x81,0x00,0x00}; uint8_t ID1[3] = {0x00,0x00,0x00}; uint16_t DACX61416_ID = 0; //0x81=23-16位,R/W读写位(1x)+DEVICEID Register 01h SPI1_1_NSS_Enable(); /* Send the read ID command */ HAL_SPI_Transmit(&hspi1, cmd, 3, DACx1416_Timeout_3); /* Reception of the data */ HAL_SPI_Receive(&hspi1, ID1, 3, DACx1416_Timeout_3); SPI1_1_NSS_Disable(); printf("%x%x\n",ID1[1],ID1[2]); DACX61416_ID = ((ID1[1] << 8) | ID1[2]) & 0xFC; printf("%x\n",DACX61416_ID); //if(DACX61416_ID == 0x24C || ID1[0] == 0x81) if(DACX61416_ID == 0x24C) { HAL_GPIO_WritePin(VIO_1V8_2_EN_GPIO_Port, VIO_1V8_2_EN_Pin, GPIO_PIN_RESET); HAL_GPIO_WritePin(VAA_VDD_5V_2_EN_GPIO_Port, VAA_VDD_5V_2_EN_Pin, GPIO_PIN_RESET); } } |
问题已自己解决 |