Compartilhar via


SpiConnectionSettings Classe

Definição

Representa as configurações para a conexão com um SpiDevice.

public ref class SpiConnectionSettings sealed
/// [Windows.Foundation.Metadata.Activatable(Windows.Devices.Spi.ISpiConnectionSettingsFactory, 65536, Windows.Devices.DevicesLowLevelContract)]
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Devices.DevicesLowLevelContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class SpiConnectionSettings final
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Devices.DevicesLowLevelContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Activatable(Windows.Devices.Spi.ISpiConnectionSettingsFactory, 65536, "Windows.Devices.DevicesLowLevelContract")]
class SpiConnectionSettings final
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Devices.Spi.ISpiConnectionSettingsFactory), 65536, typeof(Windows.Devices.DevicesLowLevelContract))]
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Devices.DevicesLowLevelContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class SpiConnectionSettings
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Devices.DevicesLowLevelContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Activatable(typeof(Windows.Devices.Spi.ISpiConnectionSettingsFactory), 65536, "Windows.Devices.DevicesLowLevelContract")]
public sealed class SpiConnectionSettings
function SpiConnectionSettings(chipSelectLine)
Public NotInheritable Class SpiConnectionSettings
Herança
Object Platform::Object IInspectable SpiConnectionSettings
Atributos

Requisitos do Windows

Família de dispositivos
Windows IoT Extension SDK (introduzida na 10.0.10240.0)
API contract
Windows.Devices.DevicesLowLevelContract (introduzida na v1.0)

Exemplos

O exemplo a seguir ilustra a funcionalidade básica dessa e de outras APIs SPI mostrando como abrir um barramento SPI por nome amigável usando as configurações de conexão padrão.

// Arduino SPIDigialPot example: http://arduino.cc/en/Tutorial/SPIDigitalPot 
// using digital potentiometer AD5206 the 50kohm variance 
async void Digipot_AD5206() 
{ 
    // Get a device selector query that will select buses with SP10 
    // property set on them (we expect only 1 SP10 bus at the end) 
    var spi0Aqs = SpiDevice.GetDeviceSelector("SPI0"); 
    // Find all buses using the AQS query formed above 
    var devicesInfo = await DeviceInformation.FindAllAsync(spi0Aqs); 

    // Construct time settings beforehand which can't be changed 
    // once a SPI device is created 
    const Int32 DigipotChipSelectLine = 0; 
    var settings = new SpiConnectionSettings(DigipotChipSelectLine); 

    // Ask the SPI bus to open a device with the connection settings 
    // provided. Once we go out of scope, the device will be released 
    using (var spiDev = await SpiDevice.FromIdAsync(devicesInfo[0].Id, settings)) 
    { 

        // data[0] is the channel address 
        // data[1] is the resistance step (0 - 255) 
        // 0 is max digipot resistance, and 255 is no resistance 
        byte[] data = { 0x0, 0x0 }; 

        // Go over the 6 channels of the digipot 
        for (byte channel = 0; channel < 6; ++channel) 
        { 
            data[0] = channel; 

            // Step the resistance on this channel from max to min 
            for (byte r = 0; r <= 255; ++r) 
            { 
                data[1] = r; 
                spiDev.Write(data); 
                await Task.Delay(100); 
            } 

            // Step the resistance on this channel from min to max 
            for (byte r = 255; r >= 0; --r) 
            { 
                data[1] = r; 
                spiDev.Write(data); 
                await Task.Delay(100); 
            } 
        } 
    } 
} 

O exemplo a seguir mostra como usar esta e outras APIs SPI para inicializar um dispositivo SPI com configurações de conexão não padrão. Ele faz isso lendo a intensidade de luz de um Photocell analógico conectado a um Conversor ADC108S102 A/D de 8 canais.

Observação

Este exemplo contém várias configurações específicas para os dispositivos acima. Talvez seja necessário alterar essas configurações para considerar seu dispositivo específico. Por exemplo, os dispositivos Raspberry Pi dão suporte a um comprimento máximo de 8/9 bits para SPI.

// Knowing that an SPI bus with 'spiBusId' exist, and has the ADC connected 
// on 'chipSelectLine', read a digital sample from some sensor wired to 'channel' 
async Task<int> AnalogRead_ADC108S102(string spiBusId, Int32 chipSelectLine, byte channel) 
{ 
    var settings = new SpiConnectionSettings(chipSelectLine); 

    // The defaults (4MHz, 8-bit, Mode0) will not work here according 
    // to the datasheet. 
    // e.g The datasheet specifies a clock freq range (8MHz - 16MHz) 
    settings.ClockFrequency = 8000000; 
    // CPOL=1, CPHA=1 
    settings.Mode = SpiMode.Mode3; 
    // Conversion happens on a 16-bit frame 
    settings.DataBitLength = 16; 
    // The ADC108S102 has 8 input analog channels, where each can be 
    // connected to a specific analog sensor and each sensor is 
    // used by a different application independently 
    // The IO requests to the SPI bus are implicitly synchronized 
    // by the driver model, plus that the ADC configuration is per 
    // 1 sampling read 
    settings.SharingMode = SpiSharingMode.Shared; 

    // Ask the SPI bus to open a shared device with the connection settings 
    // provided. 
    using (var spiDev = await SpiDevice.FromIdAsync(spiBusId, settings)) 
    { 
        if (spiDev == null) 
            return -1; 

        // Set up control register to get a conversion on a specific 
        // channel address 
        byte[] write16bitData = { (byte)(channel << 3), 0 }; 
        byte[] read16bitData = new byte[2]; 
        // The transfer is guaranteed to be atomic according to SpbCx model 
        spiDev.TransferFullDuplex(write16bitData, read16bitData); 

        ushort result = BitConverter.ToUInt16(read16bitData, 0); 
        // Get rid of the 2 LSB zeros and mask the 10-bit sampled value 
        return (int)((result >> 2) & 0x3ff); 
    } 
} 

Construtores

SpiConnectionSettings(Int32)

Inicializa a nova instância do SpiConnectionSettings.

Propriedades

ChipSelectLine

Obtém ou define a linha de seleção do chip para a conexão com o dispositivo SPI.

ClockFrequency

Obtém ou define a frequência do relógio para a conexão.

DataBitLength

Obtém ou define o comprimento do bit para dados nessa conexão.

Mode

Obtém ou define o SpiMode para essa conexão.

SharingMode

Obtém ou define o modo de compartilhamento para a conexão SPI.

Aplica-se a