MSP432与AS5048A的16位SPI通信故障排查求助
问题:MSP432与AS5048A 16位SPI通信故障排查


我正尝试与需要16位SPI通信的AS5048A编码器建立连接,但所使用的MSP432微控制器的SPI TX/RX缓冲区为8位(最高字节被保留),目前通信无法建立。希望有人帮忙排查错误,或确认当前实现方式是否正确。
uint8_t SPI_Transfer(uint8_t byte) { // Wait for transmit buffer to be empty while (!(EUSCI_A3->IFG & EUSCI_A_IFG_TXIFG)); // Write data to transmit buffer EUSCI_A3->TXBUF = byte; // Wait for receive buffer to be full while (!(EUSCI_A3->IFG & EUSCI_A_IFG_RXIFG)); // Read data from receive buffer return EUSCI_A3->RXBUF; } uint16_t AS5048A_ReadAngle(void) { uint16_t angulo = 0; uint8_t comando[2] = {0xFF, 0xFF}; // Select AS5048A P9->OUT &= ~BIT4; for(i = 0; i < 2; i++){ angle[i] = SPI_Transfer(comando[i]); // Send read command } // Send dummy byte to receive angle // angulo = SPI_Transfer(0x0000); // Deselect AS5048A P9->OUT |= BIT4; angulo = ((angle[0] << 8) | (angle[1])); //conversion to uint16t angulo = angulo & 0x3FFF; // to eliminate two first bits that don't represent data (err and parity) return angulo; }
非常感谢您的帮助!
内容的提问来源于stack exchange,提问作者Alex Garcia
相关产品推荐
相关产品推荐

