示例#1
0
        public async Task <SpiDevice> CreateSpiDeviceAsync(WD.Spi.SpiConnectionSettings connectionSettings)
        {
            if (this.IsTypeSupported(SocketType.Y) && !this.IsTypeSupported(SocketType.S))
            {
                return(await this.CreateSpiDeviceAsync(connectionSettings, SocketPinNumber.Six, SocketPinNumber.Seven, SocketPinNumber.Eight, SocketPinNumber.Nine));
            }

            this.EnsureTypeIsSupported(SocketType.S);

            if (this.SpiDeviceCreator != null)
            {
                return(await this.SpiDeviceCreator(this));
            }

            return(new NativeInterfaces.SpiDevice(await NativeInterfaces.SpiDevice.CreateInterfaceAsync(this.NativeSpiDeviceId, connectionSettings)));
        }
示例#2
0
        public async Task <SpiDevice> CreateSpiDeviceAsync(WD.Spi.SpiConnectionSettings connectionSettings, SocketPinNumber chipSelectPinNumber, SocketPinNumber masterOutPinNumber, SocketPinNumber masterInPinNumber, SocketPinNumber clockPinNumber)
        {
            if (chipSelectPinNumber == SocketPinNumber.Six && masterOutPinNumber == SocketPinNumber.Seven && masterInPinNumber == SocketPinNumber.Eight && clockPinNumber == SocketPinNumber.Nine && this.IsTypeSupported(SocketType.S))
            {
                return(await this.CreateSpiDeviceAsync(connectionSettings));
            }

            var chipSelect = await this.CreateDigitalIOAsync(chipSelectPinNumber);

            var masterOut = await this.CreateDigitalIOAsync(masterOutPinNumber);

            var masterIn = await this.CreateDigitalIOAsync(masterInPinNumber);

            var clock = await this.CreateDigitalIOAsync(clockPinNumber);

            return(new SoftwareInterfaces.SpiDevice(chipSelect, masterOut, masterIn, clock, connectionSettings));
        }
        public static async Task <WD.Spi.SpiDevice> CreateInterfaceAsync(string deviceId, WD.Spi.SpiConnectionSettings connectionSettings)
        {
            var infos = await WD.Enumeration.DeviceInformation.FindAllAsync(WD.Spi.SpiDevice.GetDeviceSelector(deviceId));

            return(await WD.Spi.SpiDevice.FromIdAsync(infos[0].Id, connectionSettings));
        }
        internal SpiDevice(DigitalIO chipSelect, DigitalIO masterOut, DigitalIO masterIn, DigitalIO clock, Windows.Devices.Spi.SpiConnectionSettings settings)
        {
            if (settings.DataBitLength != 8)
            {
                throw new NotSupportedException("Only 8 data bits are supported.");
            }

            this.chipSelect = chipSelect;
            this.masterOut  = masterOut;
            this.masterIn   = masterIn;
            this.clock      = clock;

            this.clockActiveState    = (((int)settings.Mode) & 0x02) == 0;
            this.captureOnRisingEdge = ((((int)settings.Mode) & 0x01) == 0);

            this.clock.Write(!this.clockActiveState);
            this.masterIn.Read();
            this.masterOut.Write(true);
            this.chipSelect.Write(true);
        }
        internal SpiDevice(DigitalIO chipSelect, DigitalIO masterOut, DigitalIO masterIn, DigitalIO clock, Windows.Devices.Spi.SpiConnectionSettings settings)
        {
            if (settings.DataBitLength != 8)
            {
                throw new NotSupportedException("Only 8 data bits are supported.");
            }

            this.chipSelect = chipSelect;
            this.masterOut  = masterOut;
            this.masterIn   = masterIn;
            this.clock      = clock;

            this.clockEdge     = (((int)settings.Mode) & 0x01) > 0;
            this.clockPolarity = (((int)settings.Mode) & 0x02) == 0;
        }