Популярные услуги

Все письменные КМ под ключ за 3 суток! (КМ-6 + КМ-7 + КМ-8 + КМ-9 + КМ-10)
КМ-6. Динамические массивы. Семинар - выполню любой вариант!
КМ-2. Разработка простейших консольных программ с использованием ООП + КМ-4. Более сложные элементы ООП - под ключ!
Любая задача на C/C++
Одно любое задание в mYsql
Сделаю ваше задание: Лабораторная работа на Pascal / Lazarus
Любой тест по базам данных максимально быстро на хорошую оценку - или верну деньги!
Любой реферат по объектно-ориентированному программированию (ООП)
Повышение уникальности твоей работе
Оба семинара по программированию под ключ! КМ-2. Разработка циклических алгоритмов + КМ-3. Функции и многофайловые программы в Си

Универсальная последовательная шина (USB)

2021-03-09СтудИзба

УНИВЕРСАЛЬНАЯ ПОСЛЕДОВАТЕЛЬНАЯ ШИНА (USB)

Краткий обзор шины

Универсальная последовательная шина (USB) была разработана в 1996 году для расширения архитектуры PC. Шина позволяет обеспечить такие основные требования как: высокую скорость передачи, одновременное подключение большого количества устройств, удобство операций, надежную связь, а также возможность горячего подключения устройств и низкую цену.

USB имеет топологию многоярусной звезды, где в центре находится главная ЭВМ, в средних узлах ретрансляторы (хабы), а в конечных точках индивидуальные устройства (функции). USB позволяет подключать к шине до 127 функций и дерево может быть глубиной до 6 уровней.

Главная ЭВМ всегда является ведущей и все обмены данными осуществляются под ее непосредственным управлением.

Передачи осуществляются в одном из двух режимов: с полным быстродействием - 12 Мбит/с и низкой скоростью — 1,5 Мбит/с. Полное быстродействие позволяет передавать данные в приложениях, работающих с интенсивными звуковыми сигналами или сжатым видео, а передачи с низкой скоростью поддерживают приложения с небольшой интенсивностью данных.

Протоколы передачи

Для передачи данных определены четыре типа обмена данными (транзакции):

• Изохронные транзакции обеспечивают пересылку данных в реальном масштабе времени, когда фиксированное количество данных передается за равные интервалы времени с фиксированной скоростью. Этот тип транзакций обеспечивает своевременность доставки данных, но их точностью не гарантируется, так как нет времени для повторной передачи пакетов с ошибками, которые просто игнорируются.

Рекомендуемые материалы

• Объемные транзакции обеспечивают точность данных, а своевременность – нет.

• Транзакции прерывания предназначены для связи с устройствами, которые имеют умеренные требования по скорости передачи данных. Главная ЭВМ периодически, через фиксированные интервалы времени, опрашивает эти устройства для того, чтобы определить имеются ли данные для передачи. В таких устройствах появление данных имеет спонтанный характер, но передача их должна осуществляться немедленно.

• Транзакции управления используются для конфигурирования при подключении и управления в процессе работы.

Все транзакции по USB состоят из трех пакетов, каждый из которых начинается по инициативе главной ЭВМ.

• Пакет маркер описывает тип и направление передачи, адрес устройства USB и номер оконечной точки.

• Пакет данных, который передает источник, если у него есть данные.

• Пакет взаимодействия передается после успешного приема данных или источником, если у него нет данных для передачи. При обнаружении ошибок пакет взаимодействия не передается.

Для обнаружения ошибок каждый пакет имеет контрольные поля CRC-кодов, позволяющие обнаруживать все одиночные и двойные ошибки.

Кадры

Информационные сообщения на шине сгруппированы в кадры. Каждый кадр имеет длительность 1 мс и состоит из множественных передач. Каждый кадр начинается с передачи главной ЭВМ пакета маркера начала кадра, содержащего номер кадра. Внутри кадра транзакции могут быть повторены несколько раз.

Питание

Кроме сигнальной пары кабель USB имеет линии передачи напряжения питания 5 В. Устройства, подключенные к USB, могут иметь как собственный источник питания, так питаться непосредственно от шины. При питании непосредственно от шины устройство может потреблять до 100 мА. Если для нормальной работы устройству требуется больший ток (до 500 мА), то оно должно запросить его у главной ЭВМ. Если главная ЭВМ определяет, что в настоящее время шина загружена и не может выделить больше тока, то устройство не может переключиться в режим большего потребления и должно остаться в конфигурации малого потребления.

Оконечные точки

Самым низким уровнем каждого устройства является функция, которых может быть одна или больше. Оконечная точка подразумевается как виртуальный порт для управления функцией. Каждая оконечная точка может быть источником или приемником данных.

В каждом устройстве для операций конфигурирования и общего управления должна быть реализована оконечная точка с номером 0. Устройства с полным быстродействием могут иметь до 15 доступных для использования оконечных точек, а с низкой скоростью только 2. Ввод и вывод данных на шине осуществляется относительно главной ЭВМ, а не устройства.

Нумерация устройств

USB поддерживает подключение и отключение устройств в процессе работы. Нумерация устройств на шине является постоянным процессом, отслеживающим динамические изменения физической топологии. Процедура нумерации осуществляется без вмешательства пользователя или прикладного программного обеспечения. Процедура нумерации осуществляется следующим образом.

• Когда устройство подключается к шине USB, главная ЭВМ определяет изменение состояния своего порта, а устройство переходит в режим «подключено».

• Главная ЭВМ формирует сигнал сброса на шине, после чего устройство переходит в состояние «включено», все его регистры устанавливаются в исходное состояние и оно отзывается на обращения по нулевому адресу.

• Главная ЭВМ сообщает устройству уникальный адрес и оно переходит в состояние «адресовано».

• Главная ЭВМ считывает все конфигурации устройства и, исходя из считанной информации, конфигурирует все имеющиеся оконечные точки данного устройства, устройство переходит в состояние «сконфигурировано» и становится готовым для использования.

Описатели

При подключении устройства к шине оно передает главной ЭВМ свои параметры, позволяющие идентифицировать устройство, определить оконечные точки и функции для каждой конечной точки.

Существуют пять основных категорий описателей.

Описатель устройства содержит общую информацию: фирма-производитель, номер изделия, серийный номер, число поддерживаемых конфигураций.

Описатель конфигурации содержит информацию о потребляемой мощности устройства и количестве интерфейсов, поддерживаемых в этой конфигурации. Устройство может иметь более одной конфигурации (то есть, устройство с большим потреблением может также поддерживать конфигурацию при малом потреблении).

Описатель интерфейса содержит число оконечных точек, используемых в этом интерфейсе, а также класс драйвера для поддержки устройства.

Описатель конечной точки детализирует фактические регистры устройства. Содержит информацию о поддерживаемых типах передачи, направлении обмена (ввод/ вывод), требуемой полосы пропускания канала и интервалах обслуживания. Может быть более одной оконечной точки в устройстве и оконечные точки могут быть разделены между различными интерфейсами.

Строковые описатели используются для того, чтобы обеспечить пользователя специфической или специальной для приложения информацией. Они могут быть необязательными и закодированными в формате «Unicode» . Перечисленные выше четыре описателя могут быть ссылкой или индексом к строковым описателям.

Классы устройств / Драйверы класса

Операционные системы главной ЭВМ обычно имеют драйверы, которые группируют функции по общим признакам устройств, называемым классами. Например, класс может включать устройства хранения, звуковые, связи и пользовательского интерфейса, но не ограничиваться перечисленным. Ссылки на драйверы класса для данного устройства могут быть в двух описателях: устройства и интерфейса. Для большинства устройств может быть подобран стандартный драйвер u1076 для данного класса, который поддерживает большинство функций или команд. Если устройство не имеет стандартного драйвера для данного класса, то оно должно поставляться вместе со специфическим файлом «*.inf» или драйвером для его поддержки.

Микроконтроллеры с модулем USB

Фирма Microchip Technology выпускает микроконтроллеры PIC16C745/765, которые имеют периферийный модуль USB, функционирующий в соответствии со спецификацией USB Vl.l. Модуль USB поддерживает передачи управления и прерывания (ввод/вывод) для низкой скорости 1,5 Мбит/с. При реализации функций могут поддерживаться 3 номера оконечной точки (0, 1,2) при общем количестве 6 оконечных точек.

Приемопередатчик

На кристалле микроконтроллера интегрирован приемопередатчик USB, включающий линейные драйверы D+/D- и обеспечивающий физический стык с линией. А также стабилизатор, который обеспечивает напряжением питания 3,3В, линейные драйверы D+/D- и внешний вывод VUSB. Этот вывод предназначен для подтягивания линии D- к высокому уровню через резистор 1,5 кОм±5%, что, в соответствии со стандартом USB, определяет устройство как низкоскоростное. Для стабильности на выводе VUSB требуется конденсатор 10 нФ±20%. На рисунке представлена схема устройства на базе микроконтроллера PIC16C765 с питанием от шины USB.

Регистры управления и состояния модуля USB

Регистры управления и состояния модуля USB размещены в банке 3 памяти данных микроконтроллера.

Модуль USB управляется при помощи 7 регистров управления и состояния, также имеются регистры управления каждой оконечной точкой и направлением буфера оконечной точки.

Регистр флагов прерываний модуля USB (UIR)

Регистр прерываний модуля USB (UIR) содержит флажки прерываний для источников прерывания модуля USB. Каждому из этих флажков соответствует бит разрешения прерывания в регистре управления прерываниями модуля USB (UIE). Если прерывания запрещены, то установка флажков прерываний может быть обнаружена в режиме программного опроса и затем обработана. Общий флажок прерывания модуля USB (USBIF) для прерывания микропроцессора расположен в регистре PIRl, состояние которого формируется логическим объединением по ИЛИ всех одиночных источников прерывания модуля USB. Установленный бит прерывания в регистре UIR после обработки должен быть сброшен программно записью «0» в соответствующий разряд.

U-0

U-0

R/C - 0

R/C - 0

R/C - 0

R/C - 0

R/C - 0

R/C - 0

-

-

STALL

UIDLE

TOK_DNE

ACTIVITY

UERR

USB_RST

7

0

Регистр флажков прерываний модули USB: «UIR» (адрес 190h)

R = читаемый разряд,

С - сбрасываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса:

Разряды 7-6: Зарезервированы, читаются как «0»

Разряд 5: STALL: Устанавливается, если передан ответ взаимодействия STALL.

Разряд 4: UIDLE: Устанавливается при переполнении таймера останова, если в течение 3 мс сигналы шины USB находятся в состоянии останова. Таймер останова сбрасывается, когда шина USB активна. Если UIDL = 1 , то модуль USB может быть переведен в режим останова установкой бита SUSPND в регистре UCTRL.

Разряд 3: TOK_DNE: Устанавливается, если обработка текущего маркера завершена. Для выявления номера оконечной точки и направления, используемые для обработки этого маркера, считывается регистр USTAT. Сброс этого бита сбрасывает регистр USTAT или, если был обработан следующий маркер, загружает в USTAT сохраненное в STAT состояние.

Разряд 2: ACTIVITY: Устанавливается, если на шине обнаружено активное состояние. Этот бит в режиме останова обычно не маскируется. Перед установкой режима останова необходимо разрешить это прерывание установкой соответствующего бита в регистре UIE.

Разряд I: UERR: Устанавливается, если обнаружена какая-либо ошибка. Для идентификации ошибки необходимо считать регистр флажков ошибок (UE1R).

Разряд 0: USB_RST: Устанавливается, если в течение не менее 2.5 мс сигналы шины USB находятся в состоянии сброс. Бит устанавливается после того как условие сброса USB снимается. Программа обработки данного прерывания должна установить в регистре адреса 00h и подключить оконечную точку с номером 0.

Примечание. Биты могут изменяться, если только SUSPND = 0 (UCTRL).

Регистр разрешения прерываний модуля USB (UIE)

Регистр разрешения прерываний модуля USB (UIE) содержит биты разрешения для каждого из источников прерывания модуля USB, флажки которых находятся в регистре UIR. Установка любого из этих битов разрешает прерывание соответствующего источника. Значения битов в регистре UIE воздействуют только на разрешение прерывания модуля USB (бит USBIE в регистре PIE1). Если прерывания запрещены, то установка флажков прерываний может быть обнаружена в режиме программного опроса и затем обработана.

U-0

U-0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

-

-

STALL

UIDLE

TOK_DNE

ACTIVITY

UERR

USB_RST

7

0

Регистр разрешения прерываний модуля USB: «UIE» (адрес 191h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса:

Разряды 7-6: Зарезервированы, читаются как «0».

Разряд 5: STALL: Разрешение прерывания STALL.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 4: UIDLE: Разрешение прерывания UIDLE.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 3: TOK_DNE: Разрешение прерывания TOK_DNE.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 2: ACTIVITY: Разрешение прерывания ACTIVITY.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 1: UERR: Разрешение прерывания UERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 0: USB_RST: Разрешение прерывания USB_RST.

1 = прерывание разрешено.

0 = прерывание запрещено.

Примечание. Прерывания могут быть разрешены, только если SUSPND = 1 (UCTRL).

Регистр флагов ошибок модуля USB (UEIR)

Регистр флагов ошибок модуля USB (UEIR) содержит флажки ошибок, возникающих при приеме или передаче данных в модуле USB. Прерывания по каждому из этих битов разрешаются установкой соответствующих разрядов в регистре разрешения прерываний по ошибкам модуля USB (UEIE). Состояние всех флажков ошибок объединяются по логике «ИЛИ», результатом объединения является флажок ошибки модуля USB бит UERR в регистре UIR. Установленный флажок в регистре UEIR после обработки должен быть сброшен программно записью «О» в соответствующий разряд. Каждый флажок устанавливается, как только обнаружено условие ошибки, поэтому прерывания по ошибкам обычно не совпадают с концом обработки маркера.

R/C - 0

R/C - 0

R/C - 0

R/C - 0

R/C - 0

R/C - 0

R/C - 0

R/C - 0

BTS_ERR

OWN_ERR

WRT_ERR

BTO_ERR

DFN8

CRC16

CRC5

PID_ERR

7

0

Регистр флажков ошибок модуля USB: «UEIR» (адрес 192h)

R - читаемый разряд,

С - сбрасываемый разряд,

U = зарезервированный разряд,

- n=значение после сброса:

Разряд 7: BTS_ERR: Устанавливается, если обнаружена ошибка вставки разрядов.

Разряд 6: OWN_ERR: Устанавливается, если при обращении к буферу со стороны шины оказывается, что им владеет микропроцессор. При приеме это вызывает переполнение данных, при передаче — антипереполнение.

Разряд 5: WRT_ERR: Ошибка записи. Устанавливается при попытке записи микропроцессора в буфер, в который идет запись от шины.

Разряд 4: BTO_ERR: Устанавливается, если на шине произошла ошибка взаимодействия по времени ожидания. При этом используется таймер шины USB для отсчета времени между фазами маркера и данных в транзакциях установки и вывода или фазами данных и взаимодействия в транзакциях ввода. Если прошло более 17 тактов от предыдущего ЕОР до прихода транзакции останова, то фиксируется ошибка взаимодействия по времени ожидания.

Разряд 3: DFN8: Устанавливается, если полученное поле данных не соответствует целому числу байт и в поле данных обнаружено слово длинной не 8 бит.

Разряд 2: CRC16: Устанавливается, если поле контрольной суммы CRC16 не соответствует.

Разряд 1: CRC5: Устанавливается, если поле контрольной суммы CRC5 не соответствует в пакетах переданных главной ЭВМ. Если бит, установлен, то пакет отвергается.

Разряд 0: PID_ERR: Устанавливается, если в поле проверки PID обнаружена ошибка.

Примечание. Биты могут изменяться, если только SUSPND = 0 (UCTRL).

Регистр разрешения прерывания по ошибкам модуля USB (UEIE)

Регистр разрешения прерывания по ошибкам модуля USB (UEIE) содержит биты разрешения прерывания по ошибкам модуля USB. Установка любого из этих битов разрешает соответствующей ошибке устанавливать флажок прерывания в регистре UEIR

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

BTS_ERR

OWN_ERR

WRT_ERR

BTO_ERR

DFN8

CRC16

CRC5

PID_ERR

7

0

Регистр разрешения прерывания ошибок модуля USB: «UEIE» (адрес 193h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса:

Разряд 7: BTS_ERR: Разрешение прерывания по ошибке BTS_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 6: OWN_ERR: Разрешение прерывания по ошибке OWN_ERR

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 5: WRT_ERR: Разрешение прерывания по ошибке WRT_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 4: BTO_ERR. Разрешение прерывания по ошибке BTO_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 3: DFN8: Разрешение прерывания по ошибке DFN8.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 2: CRC16: Разрешение прерывания по ошибке CRC16.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд I: CRC5: Разрешение прерывания по ошибке CRC5.

1 = прерывание разрешено.

0 = прерывание запрещено.

Разряд 0: PID_ERR: Разрешение прерывания по ошибке PID_ERR.

1 = прерывание разрешено.

0 = прерывание запрещено.

Регистр состояния модуля USB (USTAT)

Регистр состояния модуля USB (USTAT) показывает состояние предыдущей транзакции USB. При прерывании по завершению обработки текущего маркера TOK_DNE должен читаться регистр USTAT, для того чтобы определить номер оконечной точки и направление обмена, используемые для обработки этого маркера. Данные состояния в регистре USTAT действительны, только если установлен флажок прерывания TOK_DNE.

Если транзакция USB завершается раньше чем обслужено предыдущее прерывание TOK_DNE, то модуль USB сохранит состояние следующей транзакции в буфере FIFO STAT. Таким образом, регистр USTAT — фактически окно чтения четырехбайтного блока FIFO STAT, которое позволяет ядру процессора обрабатывать одну транзакцию, в то время как выполняется следующая. Очистка бита TOK_DNE в регистре UIR модифицирует регистр USTAT сдвигом FIFO. При этом если в STAT имеются данные, то снова вызывается прерывание TOK_DNE.

U-0

U-0

U-0

R - X

R - X

R - X

U-0

U-0

-

-

-

ENDP1

ENDP0

IN

-

-

7

0

Регистр состояния USB: «USTAT» (адрес 194h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса,

X - не определено

Разряды 7-5: Зарезервированы, читаются как «0».

Разряды 4-3: ENDP <1:0>: Эти разряды указывают адрес оконечной точки, с которой выполнялась транзакция USB, что позволяет определять какой BDT модифицирован.

Разряд 2: IN: Этот бит указывает направление передачи.

1 = транзакция ввода.

0 = транзакция вывода или установки.

Разряды 1-0: Зарезервированы, читаются как «0».

Регистр управления модулем USB (UCTRL)

Регистр управления модулем USB обеспечивает управление модулем и содержит информацию о его конфигурации.

U-0

U-0

R - X

R/C - X

R/W - X

R/W - X

R/W - X

U-0

-

-

SE0

PKT_DIS

DEV_ATT

RESUME

SUSPND

-

7

0

Регистр управления USB: «UCTRL» (адрес 195h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд,

- n = значение после сброса,

X - не определено

Разряды 7-6: Зарезервированы, читаются как «0».

Разряд 5: SE0: Метод синхронизации с несимметричным нулем. Этот бит состояния указывает, что на обоих линиях D + и D- установлен низкий уровень.

1 = получен несимметричный нуль

0 = несимметричный нуль не получен

Разряд 4: PKT_DIS: Устанавливается, если получен маркер установки, и сообщает, что передача или прием пакета отключены и позволяет программному обеспечению убрать из очереди отложенные пакеты перед продолжением обработки маркера. Очистка этого бита позволяет продолжать обработку маркера. Этот бит не установлен по каждому маркеру установки и может изменяться, только если SUSPND = 0 (UCTRL).

Разряд 3: DEV_ATT: Управление выходом VUSB .

1 = выход VUSB включен (напряжение 3,3 В).

0 = выход VUSB отключен

(выводы D+ и D- в состоянии высокого сопротивления).

Разряд 2: RESUME: Передача сигнала RESUME позволяет выполнять удаленное пробуждение ведущего USB. Для запуска удаленного пробуждения программное обеспечение должно установить RESUME в «1» на 10 мс, а затем сбросить его в 0.

1 = выполнить передачу сигнала

0 = нормальная работа.

Разряд 1: SUSPND: Приостанавливает операции USB и переводит модуль в режим малого потребления. Этот бит устанавливается в ответ на прерывание UIDLE и сбрасывается после прерывания ACTIVITY. Уровень на VUSB будет отличным по сравнению с нормальной работой.

Выход VUSB будет открыт, но выводы приемопередатчика заблокированы.

1 = модуль USB в режиме малого потребления.

0 = модуль USB включен.

Разряд 0: Зарезервирован, читается как «0».

Регистр адреса USB (UADDR)

Регистр адреса (UADDR) содержит 7-разрядный уникальный адрес устройства на шине USB.

Регистр сбрасывается в 0 после сброса микроконтроллера или после приема сигналов сброса на шине USB. Это обеспечивается для соответствия со спецификацией USB, не сконфигурированные устройства должны отвечать на обращение с адресом 0. Адрес USB записывается главной ЭВМ во время фазы u1091 установки USB.

U-0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

-

ADDR6

ADDR5

ADDR4

ADDR3

ADDR2

ADDR1

ADDR0

7

0

Регистр адреса USB: «UADDR» (адрес 196h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

- n = значение после сброса:

Разряд 7: Зарезервирован, читается как «0».

Разряды 6-0: ADDR<6:0>: 7-разрядный адрес USB.

Регистр состояния программного обеспечения USB

Этот регистр используется библиотечными подпрограммами обслуживания модуля USB для хранения состояния.

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

7

6

5

4

3

2

1

0

7

0

Регистр состояния программного обеспечения: «USWSTAT» (адрес 197h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса.

Разряды 7-2: Функциональные идентификаторы.

Разряды 1-0: Состояние конфигурации.

Регистры управления оконечными точками (UEPN)

Три регистра управления оконечными точками содержат биты управления для 6 оконечных точек в соответствии с адресом в регистре USTAT, где оконечная точка - симплексное соединение номера оконечной точки и направления. Оконечная точка 0 (ЕР0) связана с конвейером управления, который требуется USB для всех функций (ввода, вывода и установки). Следовательно, после того, как получено прерывание USB_RST, микропроцессор должен записать в UEP0 код 06h. Неиспользуемые оконечные точки и направления должны быть отключены.

U-0

U-0

U-0

U-0

R/W - 0

R/W - 0

R/W - 0

R/W - 0

-

-

-

-

EP_CTL_DIS

EP_OUT_EN

EP_IN_EN

EP_STALL

7

0

Регистры управления оконечными точками: 'UEPn' (адрес 198h-19Ah)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

-n = значение после сброса:

Разряды 7-4: Зарезервированы, читаются как «0».

Разряды 3-1: EP_CTL_DIS, EP_OUT_EN, EP_IN_EN: Определяют состояние и направление оконечной точки:

EP_CTL_DIS

EP_OUT_EN

EP_IN_EN

Состояние и направление оконечной точки

X

0

0

Отключена

X

0

1

Включена только для маркеров ввода

X

1

0

Включена только для маркеров вывода

1

1

1

Включена для маркеров ввода и вывода

0

1

1

Включена для маркеров ввода, вывода и установки

Разряды 0: EP_STALL: Указывает, что оконечная точка остановлена. Этот бит имеет приоритет над всеми другими битами регистра и устанавливается только если EP_IN_EN = 1 или EP_OUT_EN = 1. Обращение к данной оконечной точке по шине будет возвращать взаимодействие ОСТАНОВА. Бит EP_STALL может устанавливается и сбрасывается модулем.

Таблица дескрипторов буферов (BDT)

Дескрипторы буферов и буферы размещены в банке 3 памяти данных микроконтроллера. РIС16С745/765 поддерживает дескрипторы буферов (BD) для следующих оконечных точек:

-EP0 OUT                  USTAT<00h>               UEP0

-EP0 INU                   STAT<01h>                  UEP0

-EP1 OUT                  USTAT<02h>               UEP1

-EP1 IN                      USTAT<03h>               UEP1

-EP2 OUT                  USTAT<04h>               UEP2

-EP2 IN                      USTAT<05h>               UEP2

Для эффективного управления связью с оконечной точкой модуль USB имеет в пространстве регистров таблицу дескрипторов буферов (BDT). Дескриптор буфера (BD) для каждой оконечной точки указывает на буфер данных в двухпортовой памяти и состоит из 4 регистров:

- регистр состояния буфера доступный ядру процессора только для записи (BDndST),

- регистр состояния буфера доступный ядру процессора только для чтения (BDndST),

- счетчик байтов буфера (BDndBC),

- начальный адрес буфера (BDndAL).

Где n — симплексное соединение номера оконечной точки и направления в регистре USTAT.

Поскольку буферы доступны и ядру процессора и модулю USB, то для того чтобы различить, кто может модифицировать BD и буфер в памяти системы, используется простой механизм семафора бит UOWN в регистре BDndST.

Если бит UOWN = «0», то доступ к BD и буферу в памяти имеет ядро процессора. Если бит UOWN = «1», то доступ к BD и буферу в памяти принадлежит модулю USB, при этом ядро процессора не должно изменять BD или соответствующий буфер данных.

Дескриптор буфера содержит информацию управления буфером оконечной точки для модуля USB и ядра процессора. Дескриптор буфера, в зависимости от состояния бита UOWN, содержит различные значения.

W - X

W - X

U-X

U-X

W - X

W - X

U-X

U-X

UOWN

DATA 0/1

-

-

DTS

BSTALL

-

-

7

0

Дескриптор буфера, регистр состояния, для записи MCU: «BDndST» (адреса 1A0h, 1A4h, 1A8h, 1ACh, 1BOh, 1B4h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд,

- n = значение после сброса,

X - не определено

Разряд 7: UOWN: Этот бит определяет, кто в настоящее время владеет буфером. После завершения обработки маркера модуль записывает в этот бит 0. MCU при инициализации BD всегда должен устанавливать этот бит последним.

1 = монопольный доступ к BD модуля USB.

0 = монопольный доступ к BD MCU.

Разряд 6: DATA 0/1: Этот бит переключатель пакетов переданных или полученных данных.

1 = пакет данных 1

0 = пакет данных 0

Разряды 5-4: Зарезервированы, читаются как «X».

Разряд 3: DTS: Установка этого бита разрешает модулю USB выполнить синхронизацию переключателя данных. Если пакет получен с неправильным переключателем, то он будет игнорироваться и буфер останется неизмененным.

1 = выполнять синхронизацию переключателя данных

0 = синхронизации переключателя данных не делать

Разряд 2: BSTALL: Останов буфера. Установка этого бита вызовет передачу взаимодействия ОСТАНОВ. Если установлен бит BSTALL, то USB не использует BD и соответствующий буфер.

Разряды 1-0: Зарезервированы, читаются как «X».

Примечание. Для модификации разрядов не рекомендуется использовать команды BSF, BCF, так как регистр доступен только по записи.

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

U-X

U-X

UOWN

DATA 0/1

PID3

PID2

PID1

PID0

-

-

7

0

Дескриптор буфера, регистр состояния, для чтения MCU: «BDndST» (адреса 1AOh, 1A4h, 1A8h, 1ACh, 1BOh, 1B4h)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд

- n = значение после сброса:

X - не определено

Разряд 7: UOWN: Этот бит определяет, кто в настоящее время владеет буфером. После завершения обработки маркера модуль записывает в этот бит 0. MCU при инициализации BD всегда должен модифицировать этот бит последним.

1 = монопольный доступ к BD модуля USB.

0 = монопольный доступ к BD MCU.

Разряд 6: DATA 0/1:Этот бит переключатель пакетов переданных или полученных данных.

1 = пакет данных 1

0 = пакет данных 0

Разряды 5-2: PID <3:0>: Идентификатор пакета. Значение полученное в маркере PID.

Разряды 1-0: Зарезервированы, читаются как «X».

U-X

U-X

U-X

U-X

R/W - X

R/W - X

R/W - X

R/W - X

-

-

-

-

BC3

BC2

BC1

BC0

7

0

Дескриптор буфера счетчик байтов: «BDndBC» (адреса 1A1h, 1A5h, 1A9h, 1ADh, 1B1h, 1B51,)

R = читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд,

- n = значение после сброса,

X - не определено

Разряды 7-4: Зарезервированы, читаются как «X».

Разряды 3-0: ВС <3:0>: Счетчик байтов, которые будут переданы по маркеру ввод или получены по маркеру вывод. Диапазон счета от 0 до 8. После завершения обработки маркера вывод или маркера установки модуль USB заполняет это поле фактическим числом полученных байт данных.

Модуль USB использует данные в BD, когда UOWN = 1, которые содержат:

- значение PID Data0 или Datal,

- разрешение синхронизации переключателя данных,

- число байт для передачи или приема,

- начальный адрес буфера.

Ядро процессора использует данные в BD, когда UOWN = 0, которые содержат:

- значение PID Data0 или Data 1,

- полученный маркер PID,

- число переданных или принятых байт.

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

R/W - X

BA7

BA6

BA5

BA4

BA3

BA2

BA1

BA0

7

0

Дескриптор буфера, начальный адрес буфера: (адреса 1A2h, 1A6h, 1AAh, 1AEh, 1B2h, 1B6h)

R - читаемый разряд,

W - записываемый разряд,

U = зарезервированный разряд,

С - сбрасываемый разряд

- n = значение после сброса: X - не определено

Разряды 7-0: ВА <7:0>: Начальный адрес буфера для данной оконечной точки. Старший разряд 9-разрядного адреса (ВА8) всегда равен 1, что указывает на банк 3, где расположена двухпортовая память модуля USB (1B8h- 1DFh).

Примечание. Этот регистр должен всегда содержать значение в диапазоне B8h-DFh.

Буферы оконечных точек

Буферы оконечных точек расположены в двухпортовой памяти модуля USB. Начальный адрес буфера для каждой оконечной точки определяется в соответствующем дескрипторе буфера.

Управление BD и буфером данных в двухпортовой памяти обычно осуществляется следующим образом:

• Ядро процессора проверяет бит UOWN в регистре BDndST. Если он равен 0, то устанавливает адрес начала буфера в регистре BDndAL, в случае необходимости заполняет буфер и устанавливает необходимое значение в BDndST с UOWN= 1.

• Если транзакция команда главной ЭВМ или вывод, то модуль USB выполняет следующее:

- получает адрес буфера,

- читает или записывает буфер,

- модифицирует регистр USTAT,

- модифицирует дескриптор буфера значением идентификатора пакета (PID),

- устанавливает бит DATA 0/1,

- модифицирует счетчик байтов,

- сбрасывает бит UOWN.

• По прерыванию ядро процессора читает регистр USTAT, определяет номер оконечной точки, читает соответствующий BD, где проверяет биты UOWN, PID, DATA 0/l и значение счетчика байтов.

Программирование модуля USB

Для помощи разработчикам в реализации проектов фирма Microchip Technology поставляет набор функций, поддерживающих интерфейс USB на низком программном уровне в соответствии с главой 9 стандарта USB. Эти библиотеки позволяют освободить основное программное обеспечение от необходимости обрабатывать сложный протокол USB. Выполнение большинства функций USB обеспечиваются просто вызовом интерфейсных функций Put/Get (передать/принять), обработка которых осуществляется на втором плане, подпрограммой обслуживания прерывания USB.

Библиотеки также обеспечивают операции при нумерации и конфигурировании. Однако установка реальных описателей функции должна выполняться пользователем.

Программное обеспечение USB

Библиотечные подпрограммы разработаны для использования с компоновщиком. Нет необходимости создавать дополнительные включаемые файлы. Подпрограммы предлагаются упакованными в следующие файлы:

USB_CH9                 .ASM - обработка всех команд в соответствии с главой 9 спецификации USB.

USB_INTF                .ASM - функции интерфейса PutUSB, GetUSB.

USBMACRO            .INC - макрокоманды.

USB_DEFS               .INC - определения.

USB_INT                  .ASM -типовая подпрограмма обработки прерывания.

16С765                     .LKR - сценарий для компоновщика MPLAB.

Основные функции и подпрограммы

InitUSB должна вызываться основной программой после включения питания. Она устанавливает таблицу дескрипторов буферов, приводит модуль в состояние включено и готовит устройство к процессу нумерации. При этом разрешается прерывание USB только по команде сброс USB, что предотвращает ответы на какие-либо операции на шине, пока модуль не сброшен. Прерывание RST_USB переводит модуль в заданное по умолчанию состояние, после чего он отвечает на команды по нулевому адресу. Если он получает команду SET_ADDRESS, то переходит к состоянию адресовано и может отвечать на команды по новому адресу.

PutUSB (указатель на буфер, размер буфера, номер оконечной точки) посылает данные к главной ЭВМ. Указатель на блок данных передается в FSR/IRP, размер блока и номер оконечной точки передается в регистре W. Если выходной буфер доступен для оконечной точки, то блок данных копируется в буфер, переворачивается бит DATA 0/1 и устанавливается бит обладания буфером. Если буфер недоступен, т.е. он был предварительно загружен, но главная ЭВМ не запросила его передачу, то в этом случае возвращается код отказа для того, чтобы основная программа могла повторить передачу этого буфера позже.

PutEPn (указатель на буфер, размер буфера) аналогична PutUSB за исключением того, что номер оконечной точки задается в инструкции.

GetUSB (указатель на буфер, номер оконечной точки) возвращает данные, посланные из главной ЭВМ. Если имеется готовый буфер (то есть, данные были получены от главной ЭВМ), то он копируется по заданному адресу, (указатель на буфер в FSF/IRP и номер оконечной точки в регистре W). Если данные не получены, то возвращается код отказа. Таким образом, функции опроса буфера и копирования готовых данных объединены в одну функцию.

GetEPn (указатель на буфер) аналогична GetUSB за исключением того, что номер оконечной точки задается в инструкции.

ServiceUSBInt обрабатывает все прерывания, сгенерированные модулем USB. В первую очередь копируется активный буфер в общую память, что обеспечивает быстрый оборот буферов в двухпортовой памяти, а также позволяет избежать необходимости переключать банки в процессе обработки буфера.

StallUSBEP/UnstallUSBEP устанавливает или очищает бит останова BSTALL в регистре управления оконечной точки. Бит останова указывает главной ЭВМ, что требуется вмешательство пользователя и пока такого вмешательства не будет, попытки связи с оконечной точкой не будут успешными. После вмешательства пользователя функция UnstallUSBEP очистит бит, что позволит возобновить связь. Примером этого может быть отсутствие бумаги в принтере.

SoftDetachUSB очищает бит DEV_ATT приблизительно на 50 мс, электрически отключая устройство от шины, а затем повторно подключает его. Это позволяет главной ЭВМ обнаружить отключение устройства и выполнить процесс нумерации заново.

CheckSleep проверяет бит UIDLE регистра UCTRL, если бит установлен, что указывает на отсутствие на шине каких-либо действий в течение 3 мс, то переводит устройство в режим останова. Режим останова будет продолжаться до пробуждения устройства действиями на шине или другим прерыванием. Эта функция должна выполняться вне программы обработки прерывания, потому что для пробуждения необходимо прерывание, а также потому, что основная программа может быть не готова к останову. Основная программа должна периодически вызывать эту функцию, когда устройство может перейти в режим останова.

Перед переходом в режим останова функция разрешает прерывания, так что устройство будет пробуждено при активизации шины. После обработки прерывания программа будет продолжена с команды после вызова CheckSleep.

Макрокоманда ConfiguredUSB непрерывно опрашивает биты состояния и ожидает пока устройство не будет сконфигурировано главной ЭВМ. Макрокоманда должна использоваться после вызова функции InitUSB.

Фикция SetConfiguration позволяет по команде конфигурирования от главной ЭВМ передавать параметры устройства. Значения параметров устройства хранятся в USB_CURR_CONFIG программного модуля. При вызове этой функции в регистре W передается указатель на новую конфигурацию. Эта функция вызывается из программы обработки прерывания, так что значения параметров устройства должны быть сохранены до того как прерывания будут разрешены.

#define ERRORCOUNTERS - это определение включает текст подпрограммы, позволяющей считать число ошибок, которые происходят с учетом типа ошибок. При этом требуется дополнительное пространство памяти программ и ячейки оперативной памяти для организации счетчиков.

#define FUNCTIONIDS - это определение удобно при отладке. Оно кодирует 6 старших бит регистра USWSTAT, которые показывают какая функция выполняется.

Ресурсы процессора

Основная обработка USB происходит на низком уровне в программе обработки прерывания и, таким образом, невидима для основной программы. Однако, она использует ресурсы процессора: память программ, память данных, регистры, уровни в стеке и циклы процессора.

Уровни стека

Аппаратный стек в микроконтроллерах PIC16C745/765 имеет глубину всего 8 уровней. Поэтому вложенность подпрограмм и прерываний не может быть более 8. Процесс нумерации USB требует 6 уровней, так что самое лучшее, если основная программа будет удерживаться от выполнения подпрограмм и обработки прерываний пока процесс нумерации не завершен. Макрокоманда ConfiguredUSB служит для этой цели: она проверяет два младших разряда USWSTAT и ожидает пока не завершится процесс нумерации.

Память программ

Программа обработки прерывания USB, включая подпрограммы интерфейса, без дескрипторных таблиц занимает 1024 слова. Таблицы настройки и параметров устройства могут занимать дополнительно 256 слов. Расположение этих частей программы не ограничено, для управления размещением каждой части сценарий компоновщика может быть отредактирован.

Память данных

За исключением общедоступной памяти данных, которая используется для стека регистров специальных функций, обслуживание прерывания USB занимает примерно 40 байт памяти данных в банке 2. Для использования основной программой остается вся универсальная память данных в банках 0 и 1 и половина банка 2.

Буферные регистры

PIC16C745/765 имеет двухпортовую буферную память емкостью 64 байта. 24 байта используются для таблицы дескрипторов буферов (BDT), а оставленные 40 — для буферов.

Оконечной точке 0 при вводе и выводе требуются специализированные буферы, так как транзакция установки не может быть приостановлена. Остальные три буфера распределяются между четырьмя возможными оконечными точками. Но в соответствии со спецификацией USB устройства с низкой скоростью могут иметь только 2 оконечные точки.

Заданная по умолчанию конфигурация выделяет индивидуальные буферы для ЕР0 OUT, EP0 IN, EP1 OUT и ЕР1 IN. Последний буфер отводится для совместного использования ЕР2 IN и ЕР2 OUT. В соответствии со спецификацией для устройств с низкой скоростью, кроме ЕР0, могут одновременно функционировать только 2 оконечные точки. Следовательно, эта конфигурация поддерживает большинство возможных комбинаций оконечных точек (ЕР1 OUT и ЕР1 IN, EP1OUT и EP2IN, ЕР1 OUT и ЕР2 OUT, EP1 IN и ЕР2 OUT, ЕР1 IN и ЕР2 IN). Единственная комбинация, которая не обеспечивается этой конфигурацией. — ЕР2 IN и ЕР2 OUT. Если в устройстве необходима эта конфигурация, то функция USBRESET может быть отредактирована так, чтобы эта конфигурация обеспечивалась за счет буферов ЕР1.

Выбор страниц/Выбор банков

Микропрограммные библиотеки выполнены с осторожным использованием битов переключения банков и страниц. При переключении банков должен обеспечиваться вызов правильных регистров. Регистр PCLATH изменяется, когда выполняются операции CALL или GOTO за пределы текущего сегмента памяти программ. ServiceUSBInt изменяет W, STATUS, FSR и PCLATH, следовательно, они должны быть сохранены при входе в программу обработки и восстановлены при выходе.

Интегрирование подпрограмм USB в программу

При написании подпрограммы обслуживания прерывания необходимо принять во внимание, что регистры W, STATUS, FSR и PCLATH могут быть разрушены при обслуживании прерывания USB, поэтому они должны быть сохранены. Библиотека предлагает скелет подпрограммы обслуживания прерывания (файл USB_INT.ASM), которая сохраняет и восстанавливает эти регистры, а также выполняет проверку каждого из возможных флажков прерывания. Эта программа может быть включена в начало основной программы.

Интерфейс между основной программой и уровнем протокола происходит при помощи трех основных функций: InitUSB, PutUSB, и GetUSB.

Работа USB зависит от описателей, представляющих собой параметры устройства, которые передаются главной ЭВМ и содержащие информацию об устройстве и способе связи с ним. Программа должна быть дополнена модулем Deskript.asm, который должен установить параметры устройства для команды SetConfiguration. Команды главы 9 вызывают SetConfiguration, когда получена соответствующая команда. Функция InitUSB инициализирует модуль USB, таблицу дескрипторов буферов и разрешает прерывание USB, так что процесс нумерации может быть начат.

Фактический процесс нумерации происходит автоматически под управлением главной ЭВМ в программе обработки прерывания. Макрокоманда ConfiguredUSB ожидает, пока устройство не будет сконфигурировано и готово к продолжению. Время, требуемое для процесса нумерации, полностью зависит от загрузки шины и главной ЭВМ.

Далее представлен демонстрационный пример использования функций USB. В этом примере сначала инициализируется модуль USB, что позволяет главной ЭВМ выполнить процесс нумерации устройства. Процесс нумерации происходит в программе обработки прерывания. Затем ожидается завершение процесса нумерации. После того как устройство готово, выполняется опрос оконечной точки ЕР1 OUT для того, чтобы определить имеются ли какие-либо данные. Если данные получены, то они копируются в буфер оконечной точки ЕР1 IN для передачи.

Демонстрационная программа, которая инициализирует модуль USB, позволяет главной ЭВМ выполнить процесс нумерации устройства, затем копирует буфер EP1OUT в EP1IN.

main

call InitUSB                                      ; Инициализация модуля USB.

ConfiguredUSB                               ; Ожидание окончания нумерации

idleloop

call CheckSleep                               ; Останов, если шина неактивна,

CheckEPl                                          ; Проверка транзакции ЕР1 OUT

bcf STATUS,IRP                             ; Указатель на младшие банки

movlw buffer

movwf FSR                                      ; Указать на буфер в FSR

movlw 1                                            ; номер оконечной точки 1

call GetUSB                                      ; Если данные готовы, будут скопированы.

btfss STATUS,С                              ; Имелись ли данные?

goto idleloop                                     ; Нет, проверить снова.

PutBuffer

bcf STATUS,IRP                             ; Указатель на младшие банки

movwf bufferlen                             ; Сохранить длину буфера

movlw buffer

movwf FSR                                      ; Указать на буфер в FSR

swapf bufferlen,W                          ; Старший нибл W длина буфера

iorlw 1                                                ; Младший нибл W номер оконечной точки.

call PutUSB

btfss STATUS,С                              ; Передача успешна?

goto PutBuffer                                 ; Нет, повторить попытку.

goto idleloop                                     ; Да, переход к началу цикла

end

Модуль USB обнаруживает некоторые ошибки и обрабатывает их. Прерывание USB_ERR сообщает микроконтроллеру, что произошла ошибка. Если происходит ошибка, то никаких действий со стороны устройства не требуется. Ошибки просто фиксируются и считаются. Нет никакого механизма для того, чтобы отключить устройство от шины, если фиксируется слишком много ошибок. Если это необходимо, то это должно быть реализовано в основной программе.

Подпрограмма CheckSleep анализирует состояние шины и, если обнаруживает простой, переводит устройство в режим останова. Она должна вызываться в основном цикле программы, когда вся остальная обработка завершена. Это позволяет, в некоторой степени, снизить потребляемый устройством ток.

Дополнительные возможности

Для работы с приложениями в реальном масштабе времени микроконтроллер должен иметь дополнительные возможности. Семейство PIC16X7XX имеет возможности, позволяющие максимизировать надежность системы, минимизировать стоимость (поскольку они не нуждаются во внешних компонентах), снизить потребление с сохранением операционных режимов и обеспечить защиту программы от копирования. Эти возможности предполагают:

1. выбор режима генератора,

2. сброс:

- сброс при включении питания (POR),

- таймер включения питания (PWRT),

- таймер запуска генератора (OST),

- сброс при снижении питания (BOR),

- сброс при ошибках контроля по четности памяти программ (только PIC16C715),

3. прерывания,

4. сторожевой таймер (WDT),

5. режим останова (SLEEP),

6. защита программы от копирования,

7. запись идентификатора,

"8. Комментарий" - тут тоже много полезного для Вас.

8. внутрисхемное последовательное программирование.

Все микроконтроллеры семейства PIC16X7XX имеют сторожевой таймер (WDT), который может быть включен установкой соответствующих разрядов в слове конфигурации. Сторожевой таймер работает от собственного RC-генератора и сбрасывает микроконтроллер при зацикливании.

Имеются два таймера, которые обеспечивают необходимые задержки при включении питания. Таймер запуска генератора (OST) удерживает микроконтроллер в состоянии сброса, пока не стабилизируется частота колебаний кварцевого резонатора. Таймер включения питания (PWRT) обеспечивает фиксированную задержку состояния внутреннего сброса после включения питания на 72 мс. Эти два таймера в большинстве приложений позволяют исключить внешние схемы сброса.

Режим останова (SLEEP) предназначен для снижения потребления питания. Пользователь может вызывать микроконтроллер из останова без внешнего сброса. Вызов может осуществляться сторожевым таймером или прерыванием.

Выбор режима генератора позволяет удовлетворить требования приложения. Использование RC-генератора снижает стоимость системы, а использование режима LP с кварцевым резонатором обеспечивает снижение потребляемой мощности.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее