I'm trying to interface with a Broadcom AFBR-S50MV85G ToF sensor over SPI using an Arduino, which is complicated by the fact that the provided library and reference application is written for Cortex M0-based NXP microcontrollers. The documentation says that implementing the SPI, IRQ, Debug and Timer interfaces would allow use with other platforms, but it doesn't explicitly state which functions require implementations, or if all of them do, and it's not demarcated within the source code either.

The documentation lists the available command words, but no register addresses, which I believe are used by the platform-independent compiled libraries that come with it. This leaves me with no way to interface manually over SPI, meaning that my only choice appears to be to attempt to implement the platform drivers myself, which will probably take me a significant amount of time.

Is there something else I should try before sinking time into something that may not give me results? Has anyone here used this sensor before, and if so, could you point me in the right direction?

P.S.: The documentation I'm referring to is included in the SDK provided in the downloads section of the product page, and I'm not sure I'd be allowed to rehost it somewhere else in order to link it here.

  • 1
    Welcome to the wonderful world of Broadcom. Unless you're a multi-billion dollar global technology giant, you won't get **** out of them. And then only with multiple layers of NDAs.
    – Majenko
    Aug 1 '19 at 9:53
  • @Majenko Yeah, I'm starting to realize that after trying to contact them directly. I couldn't get anything out of them - I tried going through Digi-Key, and even they got stonewalled. :/
    – Joseph
    Aug 1 '19 at 10:01
  • Eben Upton had the same problem with the Pi. That's why graphics on the Pi are so crap - Broadcom won't give anyone the information they need to use the GPU. And he works for Broadcom! Everything on the Pi has basically been reverse engineered from other sources. Broadcom are dicks.
    – Majenko
    Aug 1 '19 at 10:03
  • @Majenko Wow, that's incredible, did not know that. Clears up a lot, actually. sigh Hopefully someone else has made the same mistake I did and had better luck.
    – Joseph
    Aug 1 '19 at 11:52

I recently looked into this again, and it turns out that Broadcom had released a porting guide for this library in August 2020 (nearly a year after I originally posted this question) that should prove useful to anyone trying to make use of this sensor. It's for the STM32 platform, not Arduino, but it's the most detail Broadcom has provided with regards to this product, and should provide a starting point at least.

I happen to have access to the Nucleo board used in the guide, but I had some issues with following it in some cases due to some differences in the SDK file/directory structure. I did eventually get a passing build out of it, but couldn't get anything out of the sensor itself, which means that I either did something wrong, or had damaged the sensor in my earlier attempts to interface with it; at the time of my last attempt, I was leaning towards the latter. I don't think I'll be revisiting this unit any time soon, so hopefully others will have better luck. And if anyone does get it working, please do report back; I'm curious to know if I'd actually be able to use this thing if I were to buy another one.

P.S: I'm not marking this as answered because a) my question was technically for the Arduino, and b) I haven't been able to confirm that this is working.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.