簡體   English   中英

如何從 Windows IOT 核心中的 Raspberry pi 上的 GPIO 引腳獲得更好的性能

[英]How to get better performance out of GPIO pins on Raspberry pi in Windows IOT core

我在使用 C# 運行 Windows 10 的 raspberry pi 3 上運行以下代碼

GPIO 初始化 ....

_gpioController = GpioController.GetDefault();
                _motorPin = _gpioController.OpenPin(Convert.ToInt32(RaspberryGPIOpin);
                _motorPin.SetDriveMode(GpioPinDriveMode.Output);   

GPIO 引腳打開關閉

_motorPin.Write(GpioPinValue.High);
_motorPin.Write(GpioPinValue.Low);

問題是,在我的應用程序中,打開和關閉 GPI 引腳需要 100 毫秒,但我需要在不到 25 毫秒的時間內改變伺服的方向。

有沒有辦法加快 GPIO 引腳的開啟?

或者我應該看看某種硬件控制器來控制伺服。 我寧願不這樣做。 我的代碼也在一個線程中運行。 我應該刪除線程嗎?

我有一個更簡單的應用程序,代碼確實可以工作...https://github.com/StuartSmith/RaspberryPi-Control-Sg90-Example

Microsoft 提供了關於使用 raspberry pi 2 切換 GPIO 位的完整測試結果,可在https://developer.microsoft.com/en-us/windows/iot/docs/lightningperformance 中找到。

因此您可以看到結果因物聯網版本、驅動程序模型、.NET 原生工具鏈甚至編程語言而異。 但在最壞的情況下,可以達到大約 10kHz。

我還沒有對最新的 IoT Redstone 1 版本進行測試,但我猜它應該具有與 TH2 相似的性能。

所以,一般來說,選擇 Lightning 驅動程序而不是默認的內置驅動程序,它應該在 GPIO 端口上有更好的性能。

此外,禁用 .NET 本機工具鏈也將具有明顯更好的性能。

我看到您正在使用 GPIO 引腳來驅動伺服,在這種情況下,軟件時序應該足夠好。 但是,如果要將其用於需要高精度的時鍾源,請不要相信軟件時序(照明供應商),軟件抖動總是不可預測的 一種不錯的選擇是使用內置DMA 控制器,它使用硬件定時,精度應在 1 微秒內。

你是如何測量100ms的? 運行兩次 Write() 調用需要 100 毫秒,還是那里有其他代碼?

我們以 3.6 微秒(來自 C++ 應用程序)測量了每個 Write() 調用。

由於底層堆棧的工作方式,打開引腳並設置驅動模式后的第一次 Write() 調用可能比后續調用花費的時間更長。 您的測量是否包括第一個 Write() 調用?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM