private const int LatencyTimer = 255; // Hz static void Main(string[] args) { var adcSpiConfig = new FtChannelConfig { ClockRate = ConnectionSpeed, LatencyTimer = LatencyTimer, configOptions = FtConfigOptions.Mode0 | FtConfigOptions.CsDbus3 | FtConfigOptions.CsActivelow }; var adcConfig = new Maxim186Configuration { Channel = Maxim186.Channel.Channel0, ConversionType = Maxim186.ConversionType.SingleEnded, Polarity = Maxim186.Polarity.Unipolar, PowerMode = Maxim186.PowerMode.InternalClockMode }; var adc = new Maxim186(adcConfig, adcSpiConfig); do { Console.WriteLine(adc.GetConvertedSample()); } while (true); //*/ }
public int Begin(int address) { if (_i2cDevice == null) { var adci2cConfig = new FtChannelConfig { ClockRate = ConnectionSpeed, LatencyTimer = LatencyTimer }; if (_i2cDevice == null) { _i2cDevice = new I2CDevice(adci2cConfig, address); var b = _i2cDevice.Read(1); if (b == null) { Debugger.Break(); } _shadow = Convert.ToInt32(b[0]); _initialised = true; } } return(1); }
public I2CDevice(FtChannelConfig config, int deviceAddress) { _i2cConfig = _i2cConfig ?? I2CConfiguration.ChannelZeroConfiguration; _cfg = config; _deviceAddress = deviceAddress; InitLibAndHandle(); }
private void InitLibAndHandle() { FtResult result; if (_handle != IntPtr.Zero) { return; } LibMpsse.Init(); result = LibMpsseSpi.SPI_OpenChannel(_spiConfig.ChannelIndex, out _handle); CheckResult(result); if (_handle == IntPtr.Zero) { throw new SpiChannelNotConnectedException(FtResult.InvalidHandle); } result = LibMpsseSpi.SPI_InitChannel(_handle, ref _cfg); CheckResult(result); _currentGlobalConfig = _cfg; }
private void EnforceRightConfiguration() { if (_currentGlobalConfig.configOptions != _cfg.configOptions) { LibMpsseSpi.SPI_ChangeCS(_handle, _cfg.configOptions); _currentGlobalConfig = _cfg; } }
public async Task <bool> Init() { var config = new FtChannelConfig { ClockRate = ConnectionSpeed, LatencyTimer = LatencyTimer }; _i2cConfig = _i2cConfig ?? I2CConfiguration.ChannelZeroConfiguration; _cfg = config; InitLibAndHandle(); return(true); }
void InitLibAndHandle() { FtResult result; if (_handle != IntPtr.Zero) { return; } LibMpsse.Init(); var num_channels = 0; var channels = LibMpsseI2C.I2C_GetNumChannels(out num_channels); CheckResult(channels); //if (num_channels > 0) //{ // for (var i = 0; i < num_channels; i++) // { // FtDeviceInfo cInfo; // var channelInfoStatus = LibMpsseI2C.I2C_GetChannelInfo(i, out cInfo); // CheckResult(channelInfoStatus); // Debug.WriteLine($"Flags: {cInfo.Flags}"); // Debug.WriteLine($"Type: {cInfo.Type}"); // Debug.WriteLine($"ID: {cInfo.ID}"); // Debug.WriteLine($"LocId: {cInfo.LocId}"); // Debug.WriteLine($"SerialNumber: {cInfo.SerialNumber}"); // Debug.WriteLine($"Description: {cInfo.Description}"); // Debug.WriteLine($"ftHandle: {cInfo.ftHandle}"); // } //} result = LibMpsseI2C.I2C_OpenChannel(_i2cConfig.ChannelIndex, out _handle); CheckResult(result); if (_handle == IntPtr.Zero) { throw new I2CChannelNotConnectedException(FtResult.InvalidHandle); } result = LibMpsseI2C.I2C_InitChannel(_handle, ref _cfg); CheckResult(result); _currentGlobalConfig = _cfg; }
public static extern FtResult I2C_InitChannel(System.IntPtr handle, ref FtChannelConfig config);
public extern static FtResult SPI_InitChannel(IntPtr handle, ref FtChannelConfig config);
protected SpiDevice(FtChannelConfig config, SpiConfiguration spiConfig) { _spiConfig = spiConfig ?? SpiConfiguration.ChannelZeroConfiguration; _cfg = config; InitLibAndHandle(); }
protected SpiDevice(FtChannelConfig config) : this(config, null) { }
public Maxim186(Maxim186Configuration adcConfig, FtChannelConfig config, SpiConfiguration spiConfig) : base(config, spiConfig) { _adcConfig = adcConfig; }
public Maxim186(Maxim186Configuration adcConfig, FtChannelConfig config) : this(adcConfig, config, null) { }