Skip to content

MCP3204/3208 Module

This module contains the driver for Microchip MCP3204/3208 analog to digital converter with SPI serial interface (datasheet).

Example:

from microchip.mcp3208 import MCP3208

...

mcp = mcp3208.MCP3208(SPI0, D17)
value_0 = mcp.get_raw_data(True, 0)
value_1 = mcp.get_raw_data(False, 2)

MCP3208 class

class MCP3208

class MCP3208(spidrv, cs, clk = 400000)

Creates an instance of the MCP3208 class. This class allows the control of both MCP3204 and MCP3208 devices.

Arguments:

  • spidrv – SPI Bus used ‘(SPI0, …)’
  • cs – Chip select pin
  • clk – Clock speed, default 400 kHz
MCP3208.get_raw_data

get_raw_data(single, channel)

Return the conversion result as an integer between 0 and 4095 (12 bit).

Input mode and channel are selected by single and channel parameters according to the following table.

| single

| channel

| Input Configuration

| Channel Selection

| | ------ | ------- | ------------------- | ----------------- | | True

| 0

   | single-ended

    | CH0

           |

| True

| 1

   | single-ended

    | CH1

           |

| True

| 2

   | single-ended

    | CH2

           |

| True

| 3

   | single-ended

    | CH3

           |

| True

| 4*

  | single-ended

    | CH4

           |

| True

| 5*

  | single-ended

    | CH5

           |

| True

| 6*

  | single-ended

    | CH6

           |

| True

| 7*

  | single-ended

    | CH7

           |

| False

| 0

   | differential

    | CH0 = IN+ CH1 = IN-

| | False

| 1

   | differential

    | CH0 = IN- CH1 = IN+

| | False

| 2

   | differential

    | CH2 = IN+ CH3 = IN-

| | False

| 3

   | differential

    | CH2 = IN- CH3 = IN+

| | False

| 4*

  | differential

    | CH4 = IN+ CH5 = IN-

| | False

| 5*

  | differential

    | CH4 = IN- CH5 = IN+

| | False

| 6*

  | differential

    | CH6 = IN+ CH7 = IN-

| | False

| 7*

  | differential

    | CH6 = IN- CH7 = IN+

|

NOTE: channel values marked with * are available for the MCP3208 only.

The digital output code is determined by the reference voltage Vref and the analog input voltage Vin:

Digital output code = 4096 * Vin / Vref