主题中讨论的其他器件:ADS1291
大家好、
最近、我使用 SPI 读取 ADS1291数据、我觉得数据读取的频率不是很稳定。 使用 DMA 是否更好?
然后、我查看了 SPI 程序、并觉得 SPI 已配置了 DMA、因此我想确保这是否正确?
CONST SPICC26XXDMA_HWAttrsV1 spiCC26XXDMAHWAttrs[Board_SPICOUNT]={
{
baseAddr = SSI0_BASE、
.intNum = INT_SSI0_comb、
.intPriority =~0、
.wiPriority = 0、
powerMngrId = PowerCC26XX_Periph_SSI0、
defaultTxBufValue = 0、
.rxChannelBitMask = 1<<UDMA_CHAN_SSI0_RX,
txChannelBitMask = 1<<UDMA_CHAN_SSI0_TX,
.mosipin = Board_SPI0_MOSI、
MISO 引脚= Board_SPI0_MISO、
clkPin = Board_SPI0_SCK、
.csnPin =Board_SPI0_CSn
}
};
//SPI_CONFIG 包括 DMA 的配置?
CONST SPI_Config SPI_CONFIG[Board_SPICOUNT]={
{
.fxnTablePtr =&SPICC26XXDMA_fxnTable、
.object =&spiCC26XXDMAObjects[Board_SPI0]、
hwAttrs =&spiCC26XXDMAHHWAttrs[Board_SPI0]
}
};
/* SPICC26XXDMA 实现的 SPI 函数表*/
CONST SPI_FxnTable SPICC26XXDMA_fxnTable ={
SPICC26XXDMA_CLOSE、
SPICC26XXDMA_CONTROL、
SPICC26XXDMA_init、
SPICC26XXDMA_open、
SPICC26XXDMA_transfer、
SPICC26XXDMA_transferCancel
};
SPI_Handle SPI_OPEN (uint_least8_t 索引、SPI_Params *参数)
{
SPI_Handle handle = NULL;
if (isInitialized &&(索引< SPI_COUNT)){
/*如果参数为 NULL,则使用默认值*/
if (params =NULL){
Params =(SPI_Params *)&SPI_defaultParams;
}
/*获取此驱动程序实例的句柄*/
句柄=(SPI_Handle)&(SPI_CONFIG[index]);
handle = handle->fxnTablePtr ->openFxn (handle、params);
}
返回(句柄);
}
SPIHandle = SPI_OPEN (Board_SPI0、&SPIparams);
传输时、我应该使用 SPICC26XXDMA_transfer 而不是 SPI_transfer ()吗?
此致、
凯瑟琳