This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] CCS/MSP432P401R:在 MSP432P401R Launchpad 上使用 eUSCI_B3模块

Guru**** 2049300 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/804602/ccs-msp432p401r-use-eusci_b3-module-on-msp432p401r-launchpad

器件型号:MSP432P401R

工具/软件:Code Composer Studio

我成功运行了"dma_eusci_spi_loopback_MSP_EXP432P401R_nortos_ccs"示例。 但是、在我将 SPI 主器 件从 eUSCI_B0模块(端口1 PIN8-11)更改为 eUSCI_B3模块(端口10引脚0-3)后、SPI 信号不会正确生成。  

症状是:STE 和 SCLK 变为高电平、并在  MAP_SPI_enableModule (EUSCI_B3_base)之后卡在那里。 (STE 应该为低电平)

代码片段如下所示。 我们提前感谢您的帮助。

const eUSCI_SPI_MasterConfig spiMasterConfig =
{// EUSCI_B_SPI_CLOCKSOURCE_SMCLK、12000000、1000000、
EUSCI_B_SPI_CLOCKSOURCE_SMCLK、48000000、6000000、
EUSCI_B_SPI_MSB_FIRST、
EUSCI_B_SPI_PHASE_DATA_Captured_ONFIRST_Changed_ON_NEXT、
EUSCI_B_SPI_CLOCKPOLARITY_INACTIVE_HIGH、EUSCI_B_SPI_4PIN_UCxSTE_ACTIVE_LOW | EUSCI_B_CTLW0_STEM};

.

MAP_GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P10、
GPIO_PIN0 | GPIO_PIN1 | GPIO_PIN2、GPIO_PRIMARY_MODULE_FUNCTION);// GPIO_PIN0至 TEST /CE

MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P10、
GPIO_PIN3、GPIO_PRIMARY_MODULE_FUNCTION);

/*配置从 CLK、MOSI 和 SPMI (EUSCI_B2)*/
MAP_GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P3、
GPIO_PIN5 | GPIO_PIN6 | GPIO_PIN7、
GPIO_PRIMARY_MODULE_FUNCTION);

/*配置 SPI 模块*/
MAP_SPI_initSlave (EUSCI_B2_base、&spiSlaveConfig);
MAP_SPI_initMaster (EUSCI_B3_base、&spiMasterConfig);//为 SPI3 EUSCI_B3使用 base

/*启用 SPI 模块*/
MAP_SPI_enableModule (EUSCI_B2_base);
MAP_SPI_enableModule (EUSCI_B3_base);//为 SPI3 EUSCI_B3使用 base

/*配置 DMA 模块*/
map_dma_enableModule();
MAP_DMA_setControlBase (MSP_EXP432P401RLP_DMAControlTable);

/*将 DMA 通道0分配给 EUSCI_B0_TX0、将通道1分配给 EUSCI_B0_RX0 *

MAP_DMA_赋 值通道(DMA_CH4_EUSCIB2TX0);
MAP_DMA_赋 值通道(DMA_CH5_EUSCIB2RX0);

MAP_DMA_assignChannel (DMA_CH0_EUSCIB3TX1);//将 DMA CH0用于 SPI3 EUSCI_B3 TX
MAP_DMA_assignChannel (DMA_CH1_EUSCIB3RX1);//将 DMA CH1用于 SPI3 EUSCI_B3 RX

/*设置 TX 传输特性和缓冲器*/


MAP_DMA_setChannelControl (DMA_CH0_EUSCIB3TX1 | UDMA_PRI_SELECT、

UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_1);

MAP_DMA_setChannelTransfer (DMA_CH0_EUSCIB3TX1 | UDMA_PRI_SELECT、
UDMA_MODE_BASIC、mstxData、
(空*) MAP_SPI_getTransmitBufferAddressForDMA (EUSCI_B3_base)、
MAP_SPI_MSG_LENGTH);

/*设置 RX 传输特性和缓冲器*/

MAP_DMA_setChannelControl (DMA_CH1_EUSCIB3RX1 | UDMA_PRI_SELECT、

UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 | UDMA_ARB_1);
MAP_DMA_setChannelTransfer (DMA_CH1_EUSCIB3RX1 | UDMA_PRI_SELECT、
UDMA_MODE_BASIC、
(空*) MAP_SPI_getReceiveBufferAddressForDMA (EUSCI_B3_base)、
msrxData、
MAP_SPI_MSG_LENGTH);


/*从机设置*/
MAP_DMA_setChannelControl (DMA_CH4_EUSCIB2TX0 | UDMA_PRI_SELECT、
UDMA_SIZE_8 | UDMA_SRC_INC_8 | UDMA_DST_INC_NONE | UDMA_ARB_1);
MAP_DMA_setChannelTransfer (DMA_CH4_EUSCIB2TX0 | UDMA_PRI_SELECT、
UDMA_MODE_BASIC、sltxData、
(空*) MAP_SPI_getTransmitBufferAddressForDMA (EUSCI_B2_base)、
MAP_SPI_MSG_LENGTH);

/*设置 RX 传输特性和缓冲器*/
MAP_DMA_setChannelControl (DMA_CH5_EUSCI2RX0 | UDMA_PRI_SELECT、
UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 | UDMA_ARB_1);
MAP_DMA_setChannelTransfer (DMA_CH5_EUSCI2RX0 | UDMA_PRI_SELECT、
UDMA_MODE_BASIC、
(void *) map_SPI_getReceiveBufferAddressForDMA (EUSCI_B2_base)、
slrxData、
MAP_SPI_MSG_LENGTH);

/*启用 DMA 中断*/
MAP_DMA_赋 值中断(INT_DMA_INT1、1);
// map_dma_clearInterruptFlag (dma_CH1_EUSCIB0RX0 & 0x0F);
MAP_DMA_clearInterruptFlag (DMA_CH1_EUSCIB3RX1和0x0F);

/*分配/启用中断*/
MAP_Interrupt_enableInterrupt (INT_DMA_INT1);
MAP_DMA_enableInterrupt (INT_DMA_INT1);
MAP_DMA_enableChannel (5);
MAP_DMA_enableChannel (4);

/*延迟40个周期以使主器件赶上从器件*/
for (ii = 0;ii < 50;ii +);

MAP_DMA_enableChannel (1);
MAP_DMA_enableChannel (0);

/*轮询以查看主器件接收是否完成*/
while (1)

如果(isrCounter >0)

__no_operation();

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Yu、

    我已请求我的同事对此主题作出响应。

    谢谢、
    SAI
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    MAP_DMA_assignChannel (DMA_CH0_EUSCIB3TX1);//将 DMA CH0用于 SPI3 EUSCI_B3 TX
    MAP_DMA_assignChannel (DMA_CH1_EUSCIB3RX1);//将 DMA CH1用于 SPI3 EUSCI_B3 RX 

    当 n=0时、TXN/RXn 只适用于 SPI。  如果 n>0、那么这些是 I2C 中4个可能的从地址的触发器。

    此致、

    Chris  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Chris、
    非常感谢您提供的信息。 根据您的建议更改 DMA 通道后、SPI3 EUSCI_B3立即工作。
    是的、请请求您处理文档的同事更新文档。 我四处搜索、找不到有关此主题的任何信息。

    此致、