Skip to content

MCP356x 24-bit ADCs #840

@harveysanders

Description

@harveysanders

Hi,
I'd like to contribute a driver for the MCP356x ADCs. I have an 8-channel MCP3564 and PicoW (RP2040 & RP2350).
I'm taking a look at the datasheet, a C lib for ESP32 and the existing TinyGo driver for MCP3008.

I'm pretty green to the embedded space and low-level programming in general, but after some head banging and LLM help, I got some single-ended readings off one of the channels.

I do have a few (maybe obvious) questions to start. Since this is a 24-bit ADC, would consumers generally expect [channel].Get() to return

  • a scaled-up int32?
  • Or a uint32 and have them deal with the sign?
  • Or a scaled-down uint16 like the other ADCs and then expose a [channel].Get32() int32?

I did the two Get() uint16 and Get32() imt32 on the for spike, but I wasn't sure.

Also, this chip has a ton of configurable options. Does anyone have an idea about some sane defaults? I haven't used enough ADCs to get a feel for what's expected out of the box. It probably already has some default state, but whatever it was didn't work for my use-case. I just wanted to read a steady voltage off a pot using the internal VREF and clock. I kept getting 0's with the initial config, but honestly, there could have been a ton of other factors preventing the read.
I'll check the C lib and datasheet and see if there's any guidance there.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions