System.Devices.Spi.SpiDevice.Write(ReadOnlySpan <byte>缓冲区)似乎很慢,加起来总共有7ms的额外延迟

时间:2019-11-19 23:22:00

标签: .net-core spi

我正在将.NET Core 3与iMX7上的嵌入式Linux结合使用。 SPI总线确实可以工作,并且我可以与连接到它的设备进行通信,但是似乎很慢。

SPI设备看到的信号很有意义。下图显示,当32位数据移出时,片选变为低电平的时间约为125us。这似乎很合理。

Scope trace of hardware chip select and SPI clock

但是,如果我在调用System.Devices.Spi.SpiDevice.Write(ReadOnlySpan<byte> buffer)之前和之后切换GPIO引脚,则可以看到对Write()的调用需要800us到7ms的时间才能返回。

Scope trace showing Write() taking over 3ms

7ms的延迟听起来并不多,但这将我与SPI总线上的设备进行通讯的速率限制在140kHz左右,如果我进行许多SPI事务,它将占用大量CPU时间。这似乎比预期的要慢得多,并且在数据传输之后浪费了大部分时间,但是对write()的调用尚未返回。

这里是否有问题,或者只是对使用.NET Core的SPI抱有不合理的期望?

0 个答案:

没有答案