请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:MSP430FR5962 主题中讨论的其他器件:TCAN4550、 MSP430FR5994
定制 PCB 需要使用 UCBO SPI 与 TCAN4550通信。 我还没有用于探测 PCB 上 CAN SPI 的跳线。 我已经多次擦除 SPI 设置。 感谢您查看以下内容:
#define MCU_CAN_SPI_SIMO_PORT GPIO_PORT_P1
#define MCU_CAN_SPI_SIMO_PIN GPIO_PIN6
#define MCU_CAN_SPI_SOMI_PORT GPIO_PORT_P1
#define MCU_CAN_SPI_SOMI_PIN GPIO_PIN7
#define MCU_CAN_SPI_CLK_PORT GPIO_PORT_P2
#define MCU_CAN_SPI_CLK_PIN GPIO_PIN2
#define MCU_CAN_SPI_CTLW0 UCB0CTLW0
#define MCU_CAN_SPI_BRW UCB0BRW
#define MCU_CAN_SPI_PERIPH_MOD_FUNC_SELECT1 P1SEL1
#define MCU_CAN_SPI_PERIPH_MOD_FUNC_SELECT2 P2SEL1
#define MCU_CAN_INT_PORT GPIO_PORT_P1
#define MCU_CAN_INT_PIN GPIO_PIN1
#define MCU_CAN_PORT_IFG P1IFG
#define MCU_CAN_PORT_VECTOR PORT1_VECTOR
#define MCU_CAN_ISR P1_ISR
#define MCU_CAN_RST_PORT GPIO_PORT_P1
#define MCU_CAN_RST_PIN GPIO_PIN2
#define MCU_CAN_RST_PIN_REG P1OUT
#define SPI_CS_GPIO_PORT GPIO_PORT_P1
#define SPI_CS_GPIO_PIN GPIO_PIN3
#define SPI_HW_ADDR EUSCI_B0_BASE
// MSP430 Specific commands to proper sequencing on the SPI bus
#define WAIT_FOR_TRANSMIT while (!(UCB0IFG & UCTXIFG))
#define WAIT_FOR_IDLE while ((UCB0STAT&UCBUSY))
void init_can_spi_peripheral(){
MCU_CAN_SPI_CTLW0 = UCSWRST; // **Put state machine in reset**
MCU_CAN_SPI_CTLW0 |= UCCKPH | UCCKPL_0 | UCMSB | UCSYNC
| UCMST | UCSSEL__SMCLK; // 3-pin, 8-bit MAB SPI master SMCLK=4M
MCU_CAN_SPI_BRW = 2; // UCB0CLK=2MHz
MCU_CAN_SPI_CTLW0 &= ~UCSWRST; // **Initialize USCI state machine**
MCU_CAN_SPI_PERIPH_MOD_FUNC_SELECT1 |= MCU_CAN_SPI_SIMO_PIN | MCU_CAN_SPI_SOMI_PIN;
MCU_CAN_SPI_PERIPH_MOD_FUNC_SELECT2 |= MCU_CAN_SPI_CLK_PIN;
}