Description: This is an evaluation board for the Silicon Laboratories Si4703 FM tuner chip. Beyond being a simple FM radio, the Si4703 is also capable of detecting and processing both Radio Data Service (RDS) and Radio Broadcast Data Service (RBDS) information. The Si4703 even does a very good job of filtering and carrier detection. It also enables data such as the station ID and song name to be displayed to the user.
Using this board we are able to pick up multiple stations just as well as with a standard FM radio. The board breaks out all major pins and makes it easy to incorporate this great chip into your next radio project. Also, by plugging headphones into the 3.5mm audio jack, you effectively use the cable in your headphones as an antenna! Therefore, this board does not require an external antenna if using headphones or a 3.5mm audio cable longer than 3 feet.
Based on 2 ratings:
The breakout is a good example of a finished circuit that supports all functions of the Si4703, and for a high-level Maker like me, who doesn’t mind stringing together “building blocks” to make a functional device I can use immediately, this is much appreciated.
What I was greatly disappointed with was the Arduino library for it. First of all, the library you link to doesn’t even work, and was written back when it was Wire.receive and Wire.send. I don’t remember how now, but I found the right library for it, but it seems to have been written in one shot in a weekend in 2011 sometime, and abandoned, never again updated. A lot of functionality is missing from this library, including world/Japan FM band support, RSSI data, the Stereo bit, the stereo/mono blend parameters, and so on.
I understand there’s a desire to leave some exercises for the hacker, but I’m also a customer, and I don’t know C. I’ve learned more C in the last two weeks since receiving this board than I ever knew, but even when I try to hack in support in the .h file for, say, the BAND bytes (under Register 0x05 - SYSCONFIG2) - static const uint16_t BAND1 = 7; static const uint16_t BAND0 = 6; - and then try to write to those registers in the .cpp, it doesn’t work. I’m sure it’s because I don’t know C, but why write an incomplete driver when it would take someone with the knowledge to write the driver in the first place a couple more hours to make it complete, so that all functions can be accessed? Also, why isn’t there one commit on GitHub for the library in four years? I thought hackers and makers were supposed to give back to the open-source community. I did notice some pull requests that haven’t been merged.
So at the moment, the boards work fine for the functions I can actually access with the library; but I’ve got to be honest, the incomplete feature support is the one thing preventing me from buying more of these from you. So long as I’ve paid you $40 (I bought two) for the privilege of having to learn C++, there are some things I want the Si4703 to do that I’ll be spending my time figuring out instead of building projects including this board.
Now, don’t get me wrong, Adafruit does the same thing. The library for the complimentary Si4713 transmitter is also full of holes. I’ve been able to make more changes to the Si4713 library because Fried reads and writes one register at a time instead of the whole thing, which makes the code just slightly more understandable to me, but I’m still doing things like having to use BitRead() in my sketches because even if I ask for one bit in Fried’s code, it returns eight, and so it’s a two-step process.
I would very much appreciate proper and complete libraries for these boards. The author of the library seems to understand how to access every bit of the Si4703’s registers, therefore it should be elementary for him/her to give us access to everything, since as far as I can tell all the registers are pulled and are accessible; I don’t know what I’m looking for in them but he/she does.
0 of 1 found this helpful:
It can’t handle much… Burns out very easily so I’d order a few if you don’t want to wait for a new one if you’re on a deadline. But definitely make sure it’s plugged into 3.3v and not 5v…