adafruit / Adafruit-Si4713-Library

Arduino library for the Si4714 FM+RDS Transmitter in the Adafruit shop
Other
27 stars 14 forks source link

SI4713 behind a TCA9548 I2C multiplexer is not recognised by this library? #10

Open JohanBenko opened 2 years ago

JohanBenko commented 2 years ago

The SI4713 behind a TCA9548 I2C multiplexer is not recognised by this library in this project the Adafruit Si4713 is connected to I2C(0) of the TCA9548. The reset of the Si4713 is connected to pin 21.

Code (based on the example): `

include

include

define _BV(n) (1 << n)

define RESETPIN 21

define TCAADDR 0x70

define FMSTATION 10230 // 10230 == 102.30 MHz

Adafruit_Si4713 radio;

void setup() { Serial.begin(9600); while (!Serial);

Serial.println("Adafruit Radio - Si4713 Test"); tcaselect(0); radio = Adafruit_Si4713(RESETPIN); if (! radio.begin()) { // begin with address 0x63 (CS high default) Serial.println("Couldn't find radio?"); while (1); }

Serial.print("\nSet TX power"); //... } void loop() { //... }

void tcaselect(uint8_t i) { if (i > 7) return; Wire.beginTransmission(TCAADDR); Wire.write(1 << i); Wire.endTransmission(); } `

caternuson commented 2 years ago

Please post in the forums with photos of your setup: https://forums.adafruit.com/

JohanBenko commented 2 years ago

SI4713

caternuson commented 2 years ago

You need to call Wire.begin(); before calling tcaselect();.

JohanBenko commented 2 years ago

Correct (my mistake while copying), but even then it doesn't work. Following script detects the transmitter module(s): `

include "Wire.h"

define TCAADDR 0x70

uint8_t RESETPIN[] = {21, 20, 19, 18, 15, 14, 16, 10};

void tcaselect(uint8_t i) { if (i > 7) return;

Wire.beginTransmission(TCAADDR); Wire.write(1 << i); Wire.endTransmission(); }

// standard Arduino setup() void setup() { while (!Serial); delay(1000); Wire.begin();

Serial.begin(115200); Serial.println("\nTCAScanner ready!");

for (uint8_t t = 0; t < 8; t++) { pinMode(RESETPIN[t], OUTPUT); digitalWrite(RESETPIN[t], LOW); delay(100); digitalWrite(RESETPIN[t], HIGH); delay(5);

tcaselect(t);
Serial.print("TCA Port #"); Serial.println(t);

for (uint8_t addr = 0; addr <= 127; addr++) {
  if (addr == TCAADDR) continue;

  Wire.beginTransmission(addr);
  if (!Wire.endTransmission()) {
    Serial.print("Found I2C 0x");  Serial.println(addr, HEX);
  }
}

} Serial.println("\ndone"); }

void loop() { } `

ladyada commented 2 years ago

@JohanBenko are any of those items from adafruit? they all look like they were purchased from other board vendors

JohanBenko commented 2 years ago

The SI4713 module should be an adafruit module (bought as such). The antenna with the SMA connector I soldered myself. The TCA9548 isn't from adafruit (availability). The black PCB I made myself. Is that the reason of the issue? I suspected the library because I can communicate directly but not through this library when the SI4713 is 'behind' a TCA9548. Always get this: Adafruit Radio - Si4713 Test Couldn't find radio?

ladyada commented 2 years ago

kk - please take a pic of the front of the Si4713 module?

JohanBenko commented 2 years ago

Attached you have a picture of the purple board I have used in my setup and you can also see the the blue one.

Can you confirm the library is compatible with the i2c multiplexer?

Johan BENKO

Op 17 apr. 2022 om 02:25 heeft ladyada @.***> het volgende geschreven:

 kk - please take a pic of the front of the Si4713 module?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you were mentioned.

caternuson commented 2 years ago

Can you confirm the library is compatible with the i2c multiplexer?

Yes.

si4713_tca

#include <Adafruit_Si4713.h>

#define RESETPIN 7
#define TCAADDR 0x70
#define FMSTATION 10230

Adafruit_Si4713 radio = Adafruit_Si4713(RESETPIN);

void tcaselect(uint8_t i) {
  if (i > 7) return;
  Wire.beginTransmission(TCAADDR);
  Wire.write(1 << i);
  Wire.endTransmission();
}

void setup() {
  Serial.begin(9600);
  while (!Serial);
  Serial.println("Adafruit Radio - Si4713 Test");

  Wire.begin();
  tcaselect(0);

  delay(100);

  if (!radio.begin()) {
    Serial.println("Couldn't find radio.");
    while (1);
  }

  Serial.println("Radio initialized.");
}

void loop() {
}

Screenshot from 2022-04-20 07-22-02

ladyada commented 2 years ago

@JohanBenko the photos did not attach?

JohanBenko commented 2 years ago

D51CC0F2-F835-401B-AFF0-927B068DE7D6

ladyada commented 2 years ago

thanks, the purple one is not made by adafruit

JohanBenko commented 2 years ago

Thank you for checking and letting me know!

caternuson commented 2 years ago

Try one of the Adafruit boards without the TCA to verify it nominally works as expected per the guide: https://learn.adafruit.com/adafruit-si4713-fm-radio-transmitter-with-rds-rdbs-support/test-and-usage

Then, if possible, remove your TCA breakout from the custom PCB assembly. Recreate the breadboard setup shown above and run the same example Arduino sketch. See if you can recreate what is shown there.

JohanBenko commented 1 year ago

Good Day!

Just to let you know everything works now. Important to know:

Johan

Van: "Carter Nelson" @.> Aan: "adafruit/Adafruit-Si4713-Library" @.> Cc: "Johan Benko" @.>, "Mention" @.> Verzonden: Woensdag 20 april 2022 22:05:54 Onderwerp: Re: [adafruit/Adafruit-Si4713-Library] SI4713 behind a TCA9548 I2C multiplexer is not recognised by this library? (Issue #10)

Try one of the Adafruit boards without the TCA to verify it nominally works as expected per the guide: [ https://learn.adafruit.com/adafruit-si4713-fm-radio-transmitter-with-rds-rdbs-support/test-and-usage | https://learn.adafruit.com/adafruit-si4713-fm-radio-transmitter-with-rds-rdbs-support/test-and-usage ]

Then, if possible, remove your TCA breakout from the custom PCB assembly. Recreate the breadboard setup shown above and run the same example Arduino sketch. See if you can recreate what is shown there.

— Reply to this email directly, [ https://github.com/adafruit/Adafruit-Si4713-Library/issues/10#issuecomment-1104408893 | view it on GitHub ] , or [ https://github.com/notifications/unsubscribe-auth/ATVR3HPRQERO6DNYMCQ2GG3VGBPSFANCNFSM5TOBNQLA | unsubscribe ] . You are receiving this because you were mentioned. Message ID: @.***>