工具/软件: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();
}