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.

[参考译文] TM4C1294KCPDT:从 ADS8900获取数据时出现问题、第2部分

Guru**** 2529560 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/996741/tm4c1294kcpdt-problem-aquiring-data-from-ads8900-part-2

器件型号:TM4C1294KCPDT

正如我在前面的主题中提到的、我能够为 AD8900生成定期读取数据请求。 这就是它在示波器上的外观:

不需要、我希望通过 UDMA 读取此数据、4100个样本、每个样本3个字节、因此我为其编程了另一个 UDMA 通道:

初始化:

    uDMAChannelAttributeDisable(UDMA_CHANNEL_SSI1RX, UDMA_ATTR_ALTSELECT | UDMA_ATTR_HIGH_PRIORITY |
                                UDMA_ATTR_REQMASK);
    uDMAChannelControlSet(UDMA_CHANNEL_SSI1RX | UDMA_PRI_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 | UDMA_ARB_1024);
    uDMAChannelTransferSet(UDMA_CHANNEL_SSI1RX | UDMA_PRI_SELECT, UDMA_MODE_PINGPONG,
                           (void *)(SSI1_BASE + SSI_O_DR), (void *)ADCData1, 4100 * 3);
    uDMAChannelControlSet(UDMA_CHANNEL_SSI1RX | UDMA_ALT_SELECT, UDMA_SIZE_8 | UDMA_SRC_INC_NONE | UDMA_DST_INC_8 | UDMA_ARB_1024);
    uDMAChannelTransferSet(UDMA_CHANNEL_SSI1RX | UDMA_ALT_SELECT, UDMA_MODE_PINGPONG,
                           (void *)(SSI1_BASE + SSI_O_DR), (void *)ADCData2, 4100 * 3);
    uDMAChannelEnable(UDMA_CHANNEL_SSI1RX);

ISR:

void SSIDoneInt()
{
    SSIIntClear(SSI1_BASE, SSI_DMARX);
    uDMAChannelTransferSet(UDMA_CHANNEL_SSI1RX | UDMA_PRI_SELECT, UDMA_MODE_PINGPONG,
                           (void *)(SSI1_BASE + SSI_O_DR), (void *)ADCData1, 4100 * 3);
    uDMAChannelTransferSet(UDMA_CHANNEL_SSI1RX | UDMA_ALT_SELECT, UDMA_MODE_PINGPONG,
                           (void *)(SSI1_BASE + SSI_O_DR), (void *)ADCData2, 4100 * 3);
    uDMAChannelEnable(UDMA_CHANNEL_SSI1RX);
}

问题是我定期在 ISR 中遇到断点,SSI 状态显示没有溢出情况,但 ADCData*数组包含所有零。

出什么问题了?

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

    您好 Oleg、

    您的传输大小设置太大。 UDMA 不支持大于1024字节的传输大小、您可以使用 uDMAChannelTransferSet API 将其设置为12300字节。

    您需要将 UDMA 传输大小设置为1024、然后在 ISR 中跟踪传输情况、以了解接收到的数据量。