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

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

2. Описание функционального назначения выводов микросхемы 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- с более высоким потенциалом.

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

Микросхема передаёт значение напряжения в дополнительном коде. Первым передаётся бит, индицирующий знак измеренного значения напряжения. При превышении значения напряжения на аналоговом входе 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 была взята из соответствующей документации, размещённой на сайте производителя.