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.

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

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

В примере использовался микроконтроллер 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 мВ соответственно.



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