工具与软件:
hi champs、
在 TRM 第37.3.8.1节中、使用具有 DMA 的 SPI 传输数据的示例、使用 DMA 向 SPI 传输128个字、如下所示。
- num_words:128
- TXFFIL:8
- DMA_TRANSFER_SIZE:(num_words /TXFFIL)–1 =(128/8)–1 = 15 (16个传输)
- DMA_BURST_SIZE:(16–TXFFIL)–1 =(16–8)–1 = 7 (每个突发8个字)
以上结果是正确的。 但是、当 TXFFIL 小于8时、此计算似乎无法使用。 例如、当我们要传输20个字并决定 TXFFIL 为5时、我们通过使用此计算得到以下结果、
- DMA_TRANSFER_SIZE:(num_words /TXFFIL)–1 =(20/5)–1 = 3 (4个传输)
- DMA_BURST_SIZE:(16–TXFFIL)–1 =(16–5)–1 = 10 (每个突发11个字)
结果不正确、可以使用 DMA_BURST_SIZE = TXFFIL - 1 = 4 (每个突发5个字)进行更正。 这是正确的、还是我误解了某些事情?
另一个问题是、当 TXFFST 为时会生成 SPITXINT 小于或等于 TXFFIL、但 SPITXDMA 会在 TXFFST 为时激活 小于 TXFFIL。 这是否正确、意味着 SPI TX 中断和 SPITXDMA 是在不同的条件下发出的? 此外、当 RXFFST 大于或等于 RXFFIL 时、SPI RX 中断和 SPIRXDMA 在相同条件下发生。
请建议、感谢您的帮助。
此致、
Luke