您好!
我使用 DMA 从 SPI 闪存读取数据。
随机地、读取缓冲区中有一个字节已损坏。 损坏字节始终等于0xFC。
随着待传输数目的增加、这种情况发生的频率也会越来越高。 如果读取的数据是20字节、那么永远不会发生这种情况。
起初、我虽然指针很乱、但这不能是因为代码会等待 DMA 传输完成、原因是:
while ((SPI_TX_DMACTL & DMAIFG)= 0){};
while ((SPI_RX_DMACTL & DMAIFG)= 0){};
SPI_TX_DMACTL = SPI_DMA_STOP;
SPI_RX_DMACTL = SPI_DMA_STOP;
while ((SPI_UCBxSTATW & UCBUSY)!= 0){};
当传输完成时、损坏的字节会立即出现。
使用示波器探测 MSP 引脚上的 SPI 总线时不会发现损坏的字节。 SPI 总线上任何时候都不传输0xFC。 从不。 从闪存读取的数据完全符合其要求。
实际上、DMA 或 SPI 在内部行为错误。
SPI 时钟为8MHz。
问题出现在我们的所有器件上、因此它与损坏的器件无关。
绝对不寻常
有什么想法吗?
此致、
弗雷德里克