主题中讨论的其他器件:ADS1292R、ADS1292
工具与软件:
您好、Fellows、
我有一个大问题与红板 MSP432P401R ,我正在尝试配置它与模拟前端接口,这个设备使用 SPI 通信。
从器件的要求是... 微控制器应充当主控制器、时钟 CPOL = 0且 CPHA = 1。 我的时钟系统配置为24MHz (MCLK)和 SPI 时钟源12MHz (SMCLK)。
因此、SPI 时钟为500kHz (SPI 时钟=源 时钟/BRW => BRW=源 时钟/SPI 时钟)。 但不幸的是、系统发生了问题。
MOSI 行正确地发送了数据、但 MISO 行只给了我0xFF、所以这给了我一个想法、即它对代码的实现不当、我希望有人能帮助我解决这个问题。 我分享 SPI 集成代码和喜剧的屏幕截图。
void initialize_spi(void) {
/*INITIALIZE PORT REGISTERS*/
// 4. Configure SPI pins: P1.5 (SCLK), P1.6 (MOSI), P1.7 (MISO)
P1->SEL0 |= (BIT5 | BIT6 | BIT7); // Select primary module function for P1.5, P1.6, and P1.7
P1->SEL1 &= ~(BIT5 | BIT6 | BIT7); // Clear P1SEL1 for those bits to use SPI functionality
/* set CLK and MOSI as outputs */
P1->DIR |= (BIT5 | BIT6);
P1->OUT |= (BIT5 | BIT6);
/* set MISO as input */
P1->DIR &= ~(BIT7);
EUSCI_B0->CTLW1 |= EUSCI_B_CTLW0_SWRST;
// 2. Configure eUSCI_B0 in SPI master mode, 3-pin SPI (no STE pin), synchronous mode
EUSCI_B0->CTLW0 = EUSCI_B_CTLW0_SWRST // Keep eUSCI in reset
| EUSCI_B_CTLW0_MST // Master mode
| EUSCI_B_CTLW0_MSB // MSB first
| EUSCI_B_CTLW0_SYNC // Synchronous mode
| EUSCI_B_CTLW0_SSEL__SMCLK // Use SMCLK (12 MHz)
| EUSCI_B_CTLW0_CKPL
| EUSCI_B_CTLW0_CKPH; // Clock Phase: Data changed on the first clock edge, captured on the next (CPHA = 0)
// 3. Set SPI clock divider for 500 KHz baud rate (12 MHz SMCLK / 24 = 1/2 MHz)
EUSCI_B0->BRW = 24; // Clock prescaler
// 5. Take eUSCI_B0 out of reset mode
EUSCI_B0->CTLW0 &= ~EUSCI_B_CTLW0_SWRST;
EUSCI_B0->CTLW1 &= ~EUSCI_B_CTLW0_SWRST;
}

提前感谢。









