Работа с микросхемой АЦП MCP3301

  1. Общая характеристика микросхемы MCP3301

Микросхема MCP3301 представляет собой 13-битный низкопотребляющий (до 450 мкА в активном режиме при питании  от источника 5 В) аналого-цифровой преобразователь (АЦП) последовательного приближения с дифференциальным входом и возможностью передачи данных по SPI-интерфейсу. Максимальная частота семплирования — 100 ksps. Опорное напряжение может быть выбрано из диапазона от 400 мВ до 5 В; получающийся при этом шаг преобразования: 98 мкВ и 1,22 мВ соответственно. MCP3301 доступен в 8-выводных MSOP, PDIP и SOIC корпусах.

  1. Описание функционального назначения выводов микросхемы MCP3301

Таблица 1 — Функциональное назначение выводов микросхемы MCP3301

Наименование вывода

Функциональное назначение

1.

VREF

Опорное напряжение

2.

IN+

Положительный аналоговый вход

3.

IN-

Отрицательный аналоговый вход

4.

VSS

Общий

5.

CS/SHDN

Выбор ведомого устройства / режим ожидания

6.

DOUT

Данные, передаваемые по последовательному синхронному интерфейсу SPI

7.

CLK

Сигнал тактирования

8.

VDD

Питание микросхемы (4,5 В — 5,0 В)

Значение потенциала на выводе опорного напряжения определяет максимальный диапазон измеряемого сигнала, поступающего на аналоговые входы микросхемы, а также величину шага АЦП (минимального измеряемого значения), вычисляемого следующим образом:

Чем ниже значение опорного напряжения на соответствующем выводе микросхемы, тем меньше величина шага АЦП. Полный диапазон измеряемого входного напряжения определяется разницей значений напряжений на аналоговых входах микросхемы. Вывод выбора ведомого устройства / режим ожидания при переводе из высокого состояния в низкое используется для инициирования процесса получения данных с микросхемы АЦП. При переводе данного вывода из низкого состояния в высокое также осуществляется завершение работы преобразователя и переход микросхемы в режим ожидания с низким потреблением. Между результатами преобразования необходимо переводить вывод выбора ведомого устройства / режим ожидания в высокое состояние. Вывод данных последовательного синхронного интерфейса SPI используется для получения результатов АЦП. Бит данных принимается на заднем фронте тактирующего сигнала. Вывод сигнала тактирования используется для инициирования преобразования, а также для синхронизации каждого бита данных АЦП по мере его готовности.

Распиновка микросхемы приведена на рисунке 1.

Рисунок 1 — Распиновка микросхемы MCP3301Рисунок 1 — Распиновка микросхемы MCP3301

В микросхеме MCP3301 используется аналого-цифровой преобразователь последовательного приближения. При таком аппаратном решении производится одновременное преобразование и сохранение значения разницы потенциалов на аналоговых входах микросхемы во внутренних схемах микросхемы за время, равное 1,5 тактовых циклов (tACQ). После этого схема удержания входного сигнала открывается, а аккумулированный заряд используется для получения данных, передаваемых последовательного в виде 13-битного дополнительного кода. Данный процесс преобразования управляется внешним тактирующим сигналом и должен включать 13 синхронизирующих импульсов: по одному на каждый бит. Во время этого процесса сначала выводится наиболее значимый бит (MSB). Этот бит является знаковым битом и указывает, находится ли вход IN+ или вход IN- с более высоким потенциалом.

  1. Работа с последовательным интерфейсом

Микросхема передаёт значение напряжения в дополнительном коде: первым передаётся бит, индицирующий знак измеренного значения напряжения. Т. е., при превышении значения напряжения на аналоговом входе IN+ над величиной напряжения аналогового входа IN- знаковый бит устанавливается в ноль, если значение напряжения на аналоговом входе IN- выше значения  напряжения на аналогово входе IN+, знаковый бит устанавливается в единицу. Циклограмма процесса взаимодействия с микросхемой MCP3301 приведена на рисунке 2.

Рисунок 2 — Циклограмма процесса взаимодействия с микросхемой MCP3301 по интерфейсу SPIРисунок 2 — Циклограмма процесса взаимодействия с микросхемой MCP3301 по интерфейсу SPI

Связь с микросхемой MCP3301 обеспечивается с помощью стандартного последовательного интерфейса SPI. Инициализация связи производится посредством перевода линии выбора ведомого устройства CS в низкое состояние. При следующем переднем фронте тактового сигнала микросхема начинает операцию сэмплирования входного напряжения, которая завершается на заднем фронте синхроимпульса, одновременно с этим микросхема передаёт нулевой бит со значением »0». Следующие 13 тактовых сигналов микросхема передаёт результат сэмплирования: 1-ый бит — знаковый бит, остальные 12 битов — измеренное значение (начиная с наибольшего значащего бита (MSB)). Данные передаются всегда на заднем фронте тактового сигнала.

Если все 13 бит данных переданы, но тактирование микросхемы продолжается, а также одновременно с этим удерживается в низком состоянии линия выбора ведомого устройства CS, устройство начинает повторную передачу данных, но теперь начиная с наименьшего значащего бита (LSB). Циклограмма процесса взаимодействия с микросхемой MCP3301 в случае продолжения тактирования и установленным низким уровнем на линии выбора ведомого устройства CS приведена на рисунке 3.

Рисунок 3 — Циклограмма процесса взаимодействия с микросхемой MCP3301 в случае продолжения тактирования и установленным низким уровнем на линии выбора ведомого устройства CSРисунок 3 — Циклограмма процесса взаимодействия с микросхемой MCP3301 в случае продолжения тактирования и установленным низким уровнем на линии выбора ведомого устройства CS

В примере использовался микроконтроллер STM32F051. В качестве источника опорного напряжения использовалась микросхема MCP1541T (4,096 В). Аналоговый вход IN- подключён к общему выводу.

Фрагмент исходного кода функции, позволяющий получить данные с микросхемы АЦП MCP3301 по последовательному интерфейсу SPI, разработанного на языке С, приведён ниже.

uint16_t adc_mcp3301_get_data(void)
{
	uint16_t data;

	ADC_MCP3301_ON;													//	CS-line driving low (launch the MCP3301)
	SPI2 -> CR1 |= SPI_CR1_SPE;										//	SPI enable
	while (LL_SPI_IsActiveFlag_RXNE(SPI2) == RESET);				//	waiting for SPI2 data reception
	SPI2 -> CR1 &= ~SPI_CR1_SPE;									//	SPI disable
	ADC_MCP3301_OFF;												//	CS-line driving high (MCP3301 standby mode)
	data =  LL_SPI_ReceiveData16(SPI2);								//	reading 16-Bits in the SPI data register
	data &= 0x1FFF;													//	bit mask applying (eliminating dummy 0-2 bits)

	return data;
}

На рисунках 4 — 6 представлены циклограммы процесса передачи битов данных, полученные с помощью логического анализатора с измеренным выходным напряжением — 1 мВ, 3,335 В и 313 мВ соответственно.

Рисунок 4 — Циклограмма процесса передачи битов данных (выходное напряжением - 1 мВ)Рисунок 4 — Циклограмма процесса передачи битов данных (выходное напряжением — 1 мВ)Рисунок 5 — Циклограмма процесса передачи битов данных (выходное напряжением - 3,335 В)Рисунок 5 — Циклограмма процесса передачи битов данных (выходное напряжением — 3,335 В)Рисунок 6 — Циклограмма процесса передачи битов данных (выходное напряжением - 313 мВ)Рисунок 6 — Циклограмма процесса передачи битов данных (выходное напряжением — 313 мВ)

Файл для работы с микросхемой MCP3301 размещена на Github. Вся информация при работе с микросхемой MCP3301 была взята из соответствующей документации, размещённой на сайте производителя.

© Habrahabr.ru