您好!
我有一个特殊的用例、在这个用例中、我想确保在我开始与从器件(CPU 是主器件)的交换之前 FIFO 被完全载入。
原因是、由于外设帧与 DMA 共享、我必须确保字位于 FIFO 中、以确保我尊重该 salve 等待的协议。
是否有办法实现这一目标?
从寄存器字段的描述中可以看到、这是不可行的。
此致、
克莱蒙特
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.
您好!
我有一个特殊的用例、在这个用例中、我想确保在我开始与从器件(CPU 是主器件)的交换之前 FIFO 被完全载入。
原因是、由于外设帧与 DMA 共享、我必须确保字位于 FIFO 中、以确保我尊重该 salve 等待的协议。
是否有办法实现这一目标?
从寄存器字段的描述中可以看到、这是不可行的。
此致、
克莱蒙特
SPI 模块可以控制 SPIASTE 引脚。 但是、当您使用此选项时、当您写入 SPI TX FIFO 时、数据将自动开始传输。 在发送前、它不会等待 FIFO 被填满。 在您的情况下、由于您的要求 SPI 只应在 FIFO 被填满后传输、我建议使用 SPIASTE 引脚作为 GPIO 输出引脚。 在 SPIASTE 引脚变为低电平之前、SPI 外设无法发送/接收。
此致、
曼诺伊
我们以前从未有过这一要求。 所以、我从未尝试过它。 因此、我根据我对模块的理解提出了我的建议。
我可以在2个工作日内尝试此实验、然后返回给您。
[/报价]我尝试了上述实验。 你是对的。 将 SPISTE 引脚配置为 GPIO 输出引脚并将 GPIO 引脚保持为高电平不会阻碍 SPI 上的通信。 因此、这种方法不会对您有所帮助。
但是、我发现了另一种可能满足您要求的方法。 这种方法在填充 SPI TX FIFO 之前将 SPI 临时配置为从器件。 一旦 SPI TX FIFO 被填满、那么被启用的 SPI 被重新配置为主器件。 这样、在您填充 SPI TX FIFO 之前、SPI 不会传输任何数据。
HWREGH (SPIB_BASE + SPI_O_CTL)&=~SPI_CTL_MASTER_SLAVE;
对于(I = 0;I < 16;I++)
{
SPI_writeDataNonBlocking (SPIB_BASE、I+100);
}
HWREGH (SPIB_BASE + SPI_O_CTL)|= SPI_CTL_MASTER_SLAVE;
此致、
曼诺伊