nanoFramework.Iot.Device.ShiftRegister 1.2.587
前缀预留
dotnet add package nanoFramework.Iot.Device.ShiftRegister --version 1.2.587
NuGet\Install-Package nanoFramework.Iot.Device.ShiftRegister -Version 1.2.587
<PackageReference Include="nanoFramework.Iot.Device.ShiftRegister" Version="1.2.587" />
paket add nanoFramework.Iot.Device.ShiftRegister --version 1.2.587
#r "nuget: nanoFramework.Iot.Device.ShiftRegister, 1.2.587"
// Install nanoFramework.Iot.Device.ShiftRegister as a Cake Addin #addin nuget:?package=nanoFramework.Iot.Device.ShiftRegister&version=1.2.587 // Install nanoFramework.Iot.Device.ShiftRegister as a Cake Tool #tool nuget:?package=nanoFramework.Iot.Device.ShiftRegister&version=1.2.587
通用移位寄存器
移位寄存器可以控制多个设备(如LED),使用少数引脚(至少3个 -- 数据、数据时钟和寄存器锁存)。移位寄存器可以级联使用而无需额外的引脚,从而只需要少量引脚即可控制大量设备,受到当前和所用算法的限制。
ShiftRegister绑定抽象了与存储寄存器、存储时钟、寄存器时钟和其他移位寄存器功能的交互。此绑定通过GPIO或SPI进行交互。
移位寄存器被用作Sn74hc595和Mbi5027绑定类的基础类。它可以直接使用,也可以作为那些更具体绑定的实现细节进行依赖。它已经与SN74HC595、MBI5027和MBI5168移位寄存器进行了测试。
以下图片展示了流行的8位移位寄存器SN74HC595
以下图片展示了更大的16位移位寄存器MBI5027
以下示例展示了如何以一些基本的方式使用移位寄存器。
使用GPIO
该绑定可以使用GpioController
引脚来控制移位寄存器。它使用ShiftRegisterPinMapping来描述将要使用的引脚。
以下示例代码演示了如何使用GPIO来使用移位寄存器。
ShiftRegister sr = new(ShiftRegisterPinMapping.Minimal, 8);
// Light up three of first four LEDs
sr.ShiftBit(1);
sr.ShiftBit(1);
sr.ShiftBit(0);
sr.ShiftBit(1);
sr.Latch();
// Display for 1s
Thread.Sleep(1000);
// Write to all 8 registers with a byte value
// ShiftByte latches data by default
sr.ShiftByte(0b_1000_1101);
以下图表展示了使用SN74HC595时所需的连接方式。其他移位寄存器也将类似。
使用SPI
重要:在创建SpiDevice
前,请确保正确设置了SPI引脚,特别是对于ESP32,请确保安装nanoFramework.Hardware.ESP32 nuget
//////////////////////////////////////////////////////////////////////
// when connecting to an ESP32 device, need to configure the SPI GPIOs
// used for the bus
Configuration.SetPinFunction(21, DeviceFunction.SPI1_MOSI);
Configuration.SetPinFunction(22, DeviceFunction.SPI1_MISO);
Configuration.SetPinFunction(23, DeviceFunction.SPI1_CLOCK);
// Make sure as well you are using the right chip select
对于STM32等其他设备,请确保您正在使用要使用的SPI总线的预置引脚。芯片选择也可以预先设置。
该绑定可以使用SpiDevice
来控制移位寄存器。移位寄存器时序映射到SPI协议,从而可以使用SPI。连接简单,从SPI引脚到移位寄存器:SDI (MOSI) → SDI;SCLK → CLK;CEO → LE。
注意:SPI协议有一些带有对奴隶的随意引用的术语。我们正在为此做出自己的贡献。
以下示例代码演示了如何使用SPI和移位寄存器。
// assuming an 8-bit shift register
ShiftRegister sr = new(SpiDevice.Create(new(1, 42)), 8);
// Light up three of first four LEDs
// The ShiftBit() method is disallowed when using SPI
sr.ShiftByte(0b_1011);
// Clear register
sr.ShiftClear();
// Write to all 8 registers with a byte value
sr.ShiftByte(0b_1010_1010);
以下图表展示了使用SN74HC595时所需使用SPI的连接方式。其他移位寄存器也将类似。
级联
该绑定支持GPIO或SPI进行级联。以下基于GPIO的示例演示了如何实例化绑定以控制/寻址两个级联的8位移位寄存器。这是通过构造函数中的整数值指定的。
ShiftRegister sr = new(ShiftRegisterPinMapping.Minimal, 16);
移位寄存器需要正确连接以启用级联。在SN74HC595中,第一个寄存器中的QH'
将连接到第二个寄存器中的SER
。MBI5027和MBI5168的模式类似,第一个寄存器中的SDO
将连接到第二个寄存器中的SDI
。
您可以通过以下几种方式之一在多个级联设备中写入值,如同以下代码所示。您通常不会使用所有这些方法,但可以从中选择一种。
// Write a value to each register bit and latch
// Only works with GPIO
for (int i = 0; i < sr.BitLength; i++)
{
sr.ShiftBit(1);
}
sr.Latch();
// Prints the following pattern to each register: 10101010
// This pattern only works for register lengths divisible by 8 (which is common)
for (int i = 0; i < sr.BitLength / 8; i++)
{
sr.ShiftByte(0b_1010_1010);
}
// Downshift a 32-bit number to the desired number of daisy-chained devices
// Same thing could be done with a 64-bit integer if you have more than four 8-bit shift registers (or more than two 16-bit ones)
// Prints the following pattern across two registers: 0001001110001000
int value = 0b_0001_0011_1000_1000; // 5000
for (int i = (sr.BitLength / 8) - 1; i > 0; i--)
{
int shift = i * 8;
int downShiftedValue = value >> shift;
sr.ShiftByte((byte)downShiftedValue, false);
}
sr.ShiftByte((byte)value);
// Print array of bytes
// Result will be same as previous example
var bytes = new byte[] { 0b10001000, 0b00010011};
foreach (var b in bytes)
{
sr.ShiftByte(b);
}
以下图表展示了使用SN74HC595时所需的级联连接方式。其他移位寄存器也将类似。此图表使用的是Minimal
映射。}Complete
映射将有所不同。
资源
产品 | 版本 兼容及额外的计算目标框架版本。 |
---|---|
.NET 框架 | net 兼容。 |
-
- nanoFramework.CoreLibrary (>= 1.15.5)
- nanoFramework.Iot.Device.Multiplexing (>= 1.2.586)
- nanoFramework.System.Device.Spi (>= 1.3.52)
NuGet 包 (3)
显示依赖 nanoFramework.Iot.Device.ShiftRegister 的前 3 个 NuGet 包
包 | 下载 |
---|---|
nanoFramework.Iot.Device.Sn74hc595 此包包含适用于 .NET nanoFramework C# 项目的 .NET IoT Core 绑定 Iot.Device.Sn74hc595。 |
|
nanoFramework.Iot.Device.CharacterLcd 此包包含适用于 .NET nanoFramework C# 项目的 .NET IoT Core 绑定 Character LCD。 |
|
nanoFramework.Iot.Device.Mbi5027 此包包含适用于 .NET nanoFramework C# 项目的 .NET IoT Core 绑定 Iot.Device.Mbi5027。 |
GitHub 仓库 (1)
显示依赖 nanoFramework.Iot.Device.ShiftRegister 的前 1 个最热门 GitHub 仓库
仓库 | 星标 |
---|---|
nanoframework/nanoFramework.IoT.Device
📦 此仓库包含各种传感器、芯片、显示屏、帽子以及驱动程序的 .NET nanoFramework 实现
|
版本 | 下载 | 最后更新 |
---|---|---|
1.2.587 | 395 | 7/12/2024 |
1.2.558 | 641 | 5/29/2024 |
1.2.546 | 269 | 5/15/2024 |
1.2.424 | 2,074 | 11/9/2023 |
1.2.421 | 100 | 11/9/2023 |
1.2.419 | 117 | 11/9/2023 |
1.2.326 | 2,680 | 5/24/2023 |
1.2.301 | 1,311 | 5/10/2023 |
1.2.296 | 840 | 5/3/2023 |
1.2.287 | 295 | 4/5/2023 |
1.2.271 | 1,140 | 3/15/2023 |
1.2.202 | 2,980 | 12/28/2022 |
1.2.196 | 268 | 12/28/2022 |
1.2.195 | 273 | 12/27/2022 |
1.2.158 | 2,269 | 11/13/2022 |
1.2.149 | 2,368 | 11/3/2022 |
1.2.141 | 398 | 10/25/2022 |
1.2.121 | 3,799 | 10/12/2022 |
1.2.103 | 4,735 | 9/24/2022 |
1.2.94 | 2,504 | 9/22/2022 |
1.2.86 | 1,953 | 9/15/2022 |
1.2.72 | 1,638 | 9/8/2022 |
1.2.4 | 1,878 | 7/13/2022 |
1.1.140.3705 | 1,437 | 7/6/2022 |
1.1.115.33436 | 1,418 | 6/24/2022 |
1.1.113.2032 | 398 | 6/23/2022 |
1.1.26 | 3,318 | 4/26/2022 |
1.1.19 | 1,376 | 4/21/2022 |
1.1.2 | 1,438 | 4/15/2022 |
1.1.1 | 418 | 4/14/2022 |
1.0.300 | 1,660 | 3/30/2022 |
1.0.277-preview.126 | 158 | 3/25/2022 |
1.0.277-preview.125 | 126 | 3/25/2022 |
1.0.277-preview.112 | 172 | 3/19/2022 |
1.0.277-preview.102 | 257 | 3/11/2022 |
1.0.277-preview.99 | 142 | 3/10/2022 |
1.0.277-preview.85 | 146 | 2/25/2022 |
1.0.277-preview.60 | 133 | 2/4/2022 |
1.0.277-preview.32 | 135 | 1/27/2022 |
1.0.277-preview.17 | 133 | 1/24/2022 |
1.0.277-preview.1 | 130 | 1/11/2022 |
1.0.259 | 309 | 12/9/2021 |
1.0.221 | 160 | 10/19/2021 |
1.0.219 | 169 | 10/19/2021 |
1.0.218 | 198 | 10/18/2021 |
1.0.207 | 186 | 10/11/2021 |
1.0.155 | 163 | 8/31/2021 |
1.0.119 | 232 | 6/28/2021 |
1.0.112 | 199 | 6/16/2021 |
1.0.78 | 173 | 5/26/2021 |
1.0.49 | 187 | 5/24/2021 |