Visible to Intel only — GUID: lqw1516913861738
Ixiasoft
4.9.3.2. Analog Inputs
There are six analog inputs can be sourced through the Arduino header J6. These analog signals are first divided and filtered by operational amplifier MCP6242 and related components. This circuit scales the maximum allowable analog input to 5 V which meets standard Arduino UNO R3.
The Intel® MAX® 10 device (U3) features one ADC block with one dedicated analog input and 8 dual function pins. Six of the nine analog input pins are used for the Arduino analog input interface. The other three are used for current sense.
Arduino Connector | ADC Channel | MAX 10 ADC Name | MAX10 Pin |
---|---|---|---|
ARDUINO_ANA0 (J6.1) | ADC1 Channel5 | ADC1IN5 | U3.C1 |
ARDUINO_ANA1 (J6.2) | ADC1 Channel0 (Dedicated Channel) | ANAIN1 | U3.D2 |
ARDUINO_ANA2 (J6.3) | ADC1 Channel1 | ADC1IN1 | U3.D1 |
ARDUINO_ANA3 (J6.4) | ADC1 Channel8 | ADC1IN8 | U3.E1 |
ARDUINO_ANA4 (J6.5) | ADC1 Channel7 | ADC1IN7 | U3.F1 |
ARDUINO_ANA5 (J6.6) | ADC1 Channel4 | ADC1IN4 | U3.E4 |
Intel® Cyclone® 10 LP FPGA device communicates with the ADC block in the Intel® MAX® 10 device on the board through the ADC I2C interface, which supports both 100 KHz and 400 KHz I2C clock frequency. The ADC output value is 12-bit data and I2C data is 8-bit. Hence two register addresses are used to store 12-bit ADC output data. These registers are all read only. The ADC I2C slave address of ADC block is 0x5E.
Arduino Connector | Register Address |
---|---|
ARDUINO_ANA0 (J6.1) | 0x31, 0x30 |
ARDUINO_ANA1 (J6.2) | 0x27, 0x26 |
ARDUINO_ANA2 (J6.3) | 0x29, 0x28 |
ARDUINO_ANA3 (J6.4) | 0x37, 0x36 |
ARDUINO_ANA4 (J6.5) | 0x35, 0x34 |
ARDUINO_ANA5 (J6.6) | 0x2F, 0x2E |
Use the formula to covert ADC output value to voltage:
Voltage = (ADC_Output_Value/4096) * VREF * R_Divider
-
ADC_Output_Value is the value in Decimal read from ADC I2C bus as described above.
-
VREF is the MAX 10 ADC reference voltage. Use 3.3 V when using MAX 10 internal reference source.
-
R_Divider 2 is a resistors divider value along with operational amplifier MCP6242 in order to allow tolerance up to 5 V analog input. By default, it is 2.
- Read value of 0x30 register address is 0xB9 and read value of 0x31 register address is 0x3, then the ADC output value is 0x3B9, or in decimal, 953. Hence,
ADC_Output_Value=953
- MAX 10 internal reference voltage is used so
VREF = 3.3 V
- Divider resistor values are R217 = 316 ohm and R216 = 316 ohm, so
R_Divider = R217/R216 + 1 = 2
- Calculated the analog signal voltage on ARDUINO_ANA0 (J6.1) is
Voltage @ ARDUINO_ANA0 = (953/4096) * 3.3 * 2 = 1.54 V