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.

[参考译文] 编译器/MSP430FR5994:使用2个 SPI ti RTOS 的 MSP430FR5994

Guru**** 2539500 points


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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/902517/compiler-msp430fr5994-msp430fr5994-using-2-spi-ti-rtos

器件型号:MSP430FR5994

工具/软件:TI C/C++编译器

你(们)好

我想在  ti RTOS MSP430中使用 SPI EUSCI_A3_base 和 EUSCI_B0_BASE。 问题是 MSP_EXP430F5529LP_isrDMA 中的参数始终为零、 对于 EUSCI_B0_BASE 不显示1。 如何解决此问题? 但是、如果我设置 SPI_serviceISR ((SPI_Handle)&(SPI_CONFIG[1]);我可以进行通信并运行 、并且可以使用 EUSCI_B0_BASE 读取。  

CFG 文件内容

hwiParams.arg = 0;
hwiParams.priority = 5;
hwiParams.instance.name ="SPI";
program.global.hwi42 = halHwi.create (42、"&MSP_EXP430FR5994_isrDMA"、hwiParams);

hwiParams.arg = 1;
hwiParams.priority = 1;
hwiParams.instance.name ="fram";
program.global.hwi47 = halHwi.create (47、"&MSP_EXP430FR5994_isrDMA"、hwiParams);

void MSP_EXP430F5529LP_isrDMA (UARg 参数)

/*调用 SPI DMA 函数、传递用于 WiFi 的 SPI 句柄*/
SPI_serviceISR ((SPI_Handle)&(SPI_CONFIG[0]));

#if defined (__TI_Compiler_version__)
#pragma DATA_SECTION (SPI_CONFIG、".CONST:SPI_CONFIG")
#pragma DATA_SECTION (spiEUSCIADMAHWAttrs、".const:spiEUSCIADMAHWAttrs")
#endif

#include
#include

uint8_t spiEUSCIADMAscratchBuf[1];

CONST SPIEUSCIADA_HWAttrs spiEUSCIADMAHWAttrs[1]={

baseAddr = EUSCI_A3_base、
时钟源= EUSCI_A_SPI_CLOCKSOURCE_SMCLK、
.bitOrder = EUSCI_A_SPI_MSB_FIRST、
.scratchBufPtr =&spiEUSCIADMAscratchBuf[0]、
defaultTxBufValue = 0、

.dmaBaseAddr = dma_BASE、
.rxDMAChannelIndex = DMA_CHANGE_4、
.rxDMASourcedTrigger = DMA_TRIGGERSOURCE_16、//DMA_TRIGGERSOURCE_17
TxDMAChannelIndex = DMA_CHANGE_5、
TxDMASourcedTrigger = DMA_TRIGGERSOURCE_17 //DMA_TRIGGERSOURCE_16

};

#if defined (__TI_Compiler_version__)
#pragma DATA_SECTION (spiEUSCIBDMAHWAttrs、".const:spiEUSCIBDMAHWAttrs")
#endif

#include
uint8_t spiEUSCIBDMAscratchBuf;
SPIEUSCIADA_Object spiEUSCIADMAObjects[1];
SPIEUSCIBDMA_Object spiEUSCIBDMAObjects[1];

CONST SPIEUSCIBDMA_HWAttrs spiEUSCIBDMAHWAttrs[1]={

baseAddr = EUSCI_B0_BASE、
时钟源= EUSCI_B_SPI_CLOCKSOURCE_SMCLK、
.bitOrder = EUSCI_B_SPI_MSB_FIRST、
.scratchBufPtr =&spiEUSCIBDMAscratchBuf、
defaultTxBufValue = 0、

.dmaBaseAddr = dma_BASE、
.rxDMAChannelIndex = DMA_CHANGE_0、
.rxDMASourcedTrigger = DMA_TRIGGERSOURCE_18、//DMA_TRIGGERSOURCE_17
TxDMAChannelIndex = DMA_CHANGE_1、
TxDMASourcedTrigger = DMA_TRIGGERSOURCE_19 //DMA_TRIGGERSOURCE_16

};

CONST SPI_Config SPI_CONFIG[]={

.fxnTablePtr =&SPIEUSCIADA_fxnTable、
.object =&spiEUSCIADMAObjects[0]、
hwAttrs =&spiEUSCIADMAHWAttrs[0]
}、

.fxnTablePtr =&SPIEUSCIBDMA_fxnTable、
.object =&spiEUSCIBDMAObjects[0]、
hwAttrs =&spiEUSCIBDMAHWAttrs[0]
}、
{NULL、NULL、NULL}、
};

/*
*==== MSP_EXP430FR5994_initSPI ===
*
void MSP_EXP430FR5994_initSPI (void)

GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、GPIO_PIN0、GPIO_PRIMARY_MODULE_FUNCTION);/* SIMO/MOSI *
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P6、GPIO_PIN1、GPIO_PRIMARY_MODULE_FUNCTION);/* SOMI/MISO *
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P6、GPIO_PIN2、GPIO_PRIMARY_MODULE_FUNCTION);/* CLK *

#ifdef external_FRAM
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P1、GPIO_PIN6、GPIO_secondary 模块功能);
GPIO_setPeripheralModuleFunctionInputPin (GPIO_PORT_P1、GPIO_PIN7、GPIO_secondary 模块_function);/* SOMI/MISO *
GPIO_setPeripheralModuleFunctionOutputPin (GPIO_PORT_P2、GPIO_PIN2、GPIO_secondary 模块_function);/* CLK *
#endif
spi_init();

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

    您好!

    我只想检查上述代码的几行。

    您正在使用 MSP_EXP430FR5994_isrDMA Program.global.hw42 = halHwi.create (42、"&MSP_EXP430FR5994_isrDMA"、hwiParams);创建但将其声明为 MSP_EXP430F5529LP_isrDMA。 您是否在代码中使用了相同的名称?

    2、在 const SPIEUSCIBDMA_HWAttrs spiEUSCIBDMAHWAttrs[1]={

    应用程序  

    [引用 user="ye Myat thu"].scratchBufPtr =&spiEUSCIBDMAscratchBuf、
    [/报价]

    不应该这么做  

    .scratchBufPtr =&spiEUSCIBDMAscratchBuf[0]、  

    或 .scratchBufPtr = spiEUSCIBDMAscratchBuf?

    Srinivas

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

    你(们)好  

    spiEUSCIBDMAscratchBuf 是1 D 数组、我可以与 SPI B 通信、只是 MSP_EXP430FR5994_isrDMA 的输入参数始终为零。

    void MSP_EXP430FR5994_isrDMA (UArg arg)// UArg arg arg

    /*调用 SPI DMA 函数、传递用于 WiFi 的 SPI 句柄*/
    SPI_serviceISR ((SPI_Handle)&(SPI_CONFIG[0]));

    此致