单片机/MCU论坛
直播中

的撒的

9年用户 679经验值
擅长:可编程逻辑
私信 关注
[问答]

使用SPI通信发送128字节的FIFO,清空缓冲区需要多少时间?

我正在使用 SPI 通信发送 128 字节的 FIFO。
设置源频率为 80MHZ,SPI 速率为 5MHZ。
我想检查清空缓冲区需要多少时间。

在配置下方设置。
    .spiMode = CY_SCB_SPI_MASTER、      
    .subMode = CY_SCB_SPI_MOTOROLA、   
    .sclkMode = CY_SCB_SPI_CPHA0_CPOL0、
    .txFifoTriggerLevel = 1ul、      
    .txFifoIntEnableMask = 1ul、

附加中断代码快照。
预计在完成 128 字节传输后,它将进入一次 ISR、
并切换 gpio 引脚。 但在这里,gpio 引脚不断切换。 这意味着 ISR 执行了 n 次。

请问清空缓冲区需要多少时间?

回帖(1)

岳臻俊

2024-3-5 17:07:32
清空缓冲区所需的时间取决于SPI速率和FIFO的大小。在此情况下,SPI速率为5MHz,每传输一个字节需要1个SPI时钟周期,因此128字节的传输需要128 * 8 / 5 = 204.8μs。

在配置中,txFifoTriggerLevel被设置为1,这意味着FIFO缓冲区中至少有一个字节时将触发一个SPI传输。所以一旦FIFO缓冲区为空,它将触发一次SPI传输。

根据附加的中断代码快照,当SPI传输完成时,它将进入ISR并切换txFifoTriggerLevel。可能的情况是,当FIFO缓冲区为空时,进入ISR并切换txFifoTriggerLevel,从而触发另一次SPI传输。因此,通常情况下,至少需要2个SPI传输来清空缓冲区。

由于每个SPI传输需要204.8μs,因此清空缓冲区可能需要2 * 204.8 = 409.6μs。但实际的清空时间可能因其他因素而有所不同。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分