/// <summary> /// Set Transmission Power /// </summary> /// <param name="pga"></param> public void SetRFGAIN(RFGAIN rfgain) { byte[] buff = new byte[1]; int reg1, reg2, reg10; sensor.WriteRead(new byte[] { 0x01 }, buff); reg1 = buff[0]; sensor.WriteRead(new byte[] { 0x02 }, buff); reg2 = buff[0]; sensor.WriteRead(new byte[] { 0x13 }, buff); reg10 = buff[0]; int rfgainVal = (int)rfgain & 0x0F; reg1 = (reg1 & 0x3F) | (rfgainVal << 6); if ((rfgainVal & 0x04) > 0) { reg10 |= 0x80; } else { reg10 &= ~0x80; } if ((rfgainVal & 0x08) > 0) { reg2 |= 0x40; } else { reg2 &= ~0x40; } if ((int)rfgain >= 8) { sensor.Write(new byte[] { 0x0E, 0x10 }); } sensor.Write(new byte[] { 0x01, (byte)reg1 }); sensor.Write(new byte[] { 0x02, (byte)reg2 }); sensor.Write(new byte[] { 0x13, (byte)reg10 }); }
/// <summary> /// Initialize KT0803L /// </summary> /// <param name="mhz">FM Channel ( Range from 70Mhz to 108Mhz )</param> /// <param name="country">Region</param> /// <param name="rfgain">Transmission Power</param> /// <param name="pga">PGA ( Programmable Gain Amplifier ) Gain</param> public async Task InitializeAsync(double mhz, Country country = Country.CHINA, RFGAIN rfgain = RFGAIN.RFGAIN_98_9dBuV, PGA pga = PGA.PGA_0dB) { var settings = new I2cConnectionSettings(KT_ADDR); settings.BusSpeed = I2cBusSpeed.StandardMode; var controller = await I2cController.GetDefaultAsync(); sensor = controller.GetDevice(settings); SetChannel(mhz); SetRFGAIN(rfgain); SetPGA(pga); SetPHTCNST(country); }