Вы находитесь на странице: 1из 8

КОМПОНЕНТЫ

Микроконтроллеры семейства
LPС2000 (ARM7TDMIS) от Philips –
ещё один шаг
к идеальной платформе
для встраиваемых приложений
(часть 5)

Павел Редькин (г. Ульяновск)


Режим ведущего приёмника
Автор продолжает знакомить с 16/32разрядными встраиваемыми В режиме ведущего приёмника дан
микроконтроллерами семейства LPC2000 фирмы Philips Semiconductors. ные принимаются от ведомого пере
В этой части статьи рассматриваются построение и логика работы датчика. Передача инициализирует
коммуникационных интерфейсов МК: I2C, SPI. ся тем же самым способом, что и в ре
жиме ведущего передатчика. После
генерации ведущим условия START
Режим ведущего передатчика грамма устанавливает бит STA. После подпрограмма обработки прерыва
В этом режиме данные передаются этого логика I2C генерирует условие ния должна загрузить адрес ведомого
от ведущего к ведомому. Прежде чем START, как только видит, что шина и бит направления в регистр данных
активировать режим ведущего пере свободна, т.е. не подтянута к низкому I2C (I2DAT), а затем сбросить бит SI. В
датчика, регистр установок управле уровню другими подключенными к этом режиме бит направления дол
ния I2C (I2CONSET) должен быть ини ней устройствами. После того как жен быть установлен, что указывает
циализирован значением, показан условие START передано, аппаратно на чтение (R). После передачи веду
ным в табл. 42. устанавливается бит SI и в регистре щим адреса ведомого и бита направ
Первый передаваемый ведущим состояния интерфейса I2C (I2STAT) ления и получения от ведомого бита
байт содержит адрес ведомого при возвращается код состояния, равный «подтверждение» устанавливается
ёмника (7 битов) и бит направления 08h. Этот код состояния должен ис бит SI и в регистре состояния I2C
последующей передачи данных. В пользоваться вектором и подпро (I2STAT) возвращается код состояния.
режиме ведущего передатчика бит граммой обработки прерывания, ко Действия, которые должны быть
направления (R/W) должен быть торая должна загрузить адрес ведо предприняты программой в соответ
сброшен, что указывает на запись мого и бит записи в регистр данных ствии со значением возвращённого
(W). Затем ведущий побайтно пере интерфейса I2C (I2DAT), а затем сбро кода состояния, показаны в табл. 45.
даёт данные. После того как ведущий сить бит SI. Бит SI сбрасывается пу Формат обмена по шине I2C для ре
передаёт каждый байт данных, он тём записи «1» в бит SIC регистра жима ведущего приёмника показан
принимает от ведомого бит «подтве I2CONCLR. на рис. 19. На рис. 20 показан формат
рждение» (ACK). Условия START и Когда адрес ведомого и бит R/W пе обмена по шине I2C при переключе
STOP генерируются ведущим, чтобы реданы ведомому и бит «подтвержде нии интерфейса I2C микроконтрол
указать начало и конец последова ние» от него получен, бит SI устанав лера из режима ведущего приёмника
тельной передачи. ливается снова и в регистре состояния в режим ведущего передатчика после
Интерфейс I2C переходит в режим I2STAT вновь возвращается некоторый генерации условия повторный START
ведущего передатчика, когда про код состояния. Действия, которые (на рисунках 20 и 21 это условие
должны быть предприняты пользова обозначено как RS).
Таблица 42. Инициализация регистра тельской программой в соответствии
I2CONSET для режима ведущего со значением этого кода, показаны в Режим ведомого приёмника
Номер бита Имя бита Значение бита табл. 43 и 44. Для получения более В режиме ведомого приёмника
0 – –
подробной информации об операци байты данных принимаются от веду
1 – –
ях интерфейса I2C рекомендуется об щего передатчика. Чтобы инициали
ратиться к [7]. Формат обмена по шине зировать режим ведомого приёмни
2 AA 0
I2C для режима ведущего передатчика ка, пользователь должен инициали
3 SI 0
показан на рис. 18, где А – подтвержде зировать регистр адреса ведомого
4 STO 0
ние (SDA низкий), /А – не подтвержде (I2ADR) выбранным значением адре
5 STA 0
ние (SDA высокий), S – условие START, са ведомого, а также регистр устано
6 I2EN 1
P – условие STOP (на рисунках 19 – 22 вок управления I2C (I2CONSET) значе
7 – –
обозначения аналогичны). нием, показанными в табл. 46. После

26 © СТАПРЕСС WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007


КОМПОНЕНТЫ

«0» – запись «0» – запись


«1» – чтение «1» – чтение
Адрес Адрес
S ведомого R/W A Данные A Данные A/A P S ведомого R A Данные A Данные A P

От ведущего к ведомому Передача данных: n байт + подтверждение От ведущего к ведомому Передача данных: n байт + подтверждение
От ведомого к ведущему От ведомого к ведущему

Рис. 18. Формат обмена данными по шине I2C для режима ведущего Рис. 19. Формат обмена данными по шине I2C для режима ведущего
передатчика приёмника

Адрес Адрес
S ведомого R A Данные A Данные A RS ведомого W A Данные A P

От ведущего к ведомому Передача данных: n байт + подтверждение


От ведомого к ведущему

Рис. 20. Формат обмена данными по шине I2C для режима ведущего приёмника, а затем режима ведущего передатчика

инициализации регистров I2ADR и ления в посылке, поступившей от ве ёмника устанавливается бит SI и со
I2CONSET интерфейс I2C ведомого дущего. Сброшенный бит направле ответствующий код состояния воз
ожидает, пока не произойдет обра ния (W) означает, что ведущий наме вращается в регистре состояния
щение к нему по его собственному рен передавать данные, а интерфейс (I2STAT). Действия, которые должны
адресу ведомого или адресу общего I2C МК переходит в режим ведомого быть предприняты пользовательс
вызова. Характер этого обращения приёмника. ким программным обеспечением в
(запись или чтение) детектируется После получения адреса ведомого соответствии со значением возвра
ведомым по значению бита направ и бита направления у ведомого при щённого кода состояния, показаны в

Таблица 43. Коды состояния для режима I2C ведущего передатчика


Ответ пользовательского программного обеспечения
Код Текущее состояние
состояния шины I2C и аппаратной операции с битами I2CONSET Следующее действие аппаратной логики интерфейса
(I2STAT) логики интерфейса операции с I2DAT
STA STO SI AA
08h Передано условие START Загрузить адрес ведомого + W X 0 0 X Адрес ведомого + W будет передан; бит ACK будет получен

Передано условие Загрузить адрес ведомого + W X 0 0 X Адрес ведомого + W будет передан


10h повторный START Загрузить адрес ведомого + R X 0 0 X I2C перейдёт в режим ведущего приёмника
0 0 0 X Байт данных будет передан; бит ACK будет получен
Загрузить байт данных
Адрес ведомого + W был 1 0 0 X Условие повторный START будет передано
18h (или 20h) передан; бит ACK (или NOT
ACK) был получен 0 1 0 X Условие STOP будет передано; флаг STO будет сброшен
Нет операций с I2DAT Условие STOP, сопровождаемое условием START, будет передано;
1 1 0 X флаг STO будет сброшен
0 0 0 X Байт данных будет передан; бит ACK будет получен

Байт данных в I2CDAT был Загрузить байт данных или нет 1 0 0 X Условие повторный START будет передано
28h (или 30h) передан; бит ACK (или NOT операций с I2DAT
ACK) был получен 0 1 0 X Условие STOP будет передано; флаг STO будет сброшен

1 1 0 X Условие STOP, сопровождаемое условием START, будет передано;


флаг STO будет сброшен
Арбитраж потерян при 0 0 0 X Шина I2C будет «отпущена» без обращения к адресуемому ведомому
38h передаче адреса ведомого Нет операций с I2DAT
+ R/W или байта данных 1 0 0 X Условие START будет передано, когда шина освободится

Таблица 44. Коды состояния для режима I2C ведомого передатчика


Ответ пользовательского программного обеспечения
Код
Текущее состояние шины I2C и
состояния операции с битами I2CONSET Следующее действие аппаратной логики интерфейса
аппаратной логики интерфейса операции с I2DAT
(I2STAT)
STA STO SI AA

Собственный адрес ведомого + R был


A8h X 0 0 0 Последний байт данных будет передан и бит ACK будет получен
получен; бит ACK был возвращён

Арбитраж был потерян во время


прохождения адреса ведомого + R/W Загрузить байт данных
B0h от ведущего; собственный адрес ведомого
+ R был получен; бит ACK был возвращён X 0 0 1 Байт данных будет передан и бит ACK будет получен
Байт данных в I2DAT был передан;
B8h бит ACK был получен
Переключение в режим без адресации адреса ведомого; отсутствие
0 0 0 0 распознавания собственного адреса ведомого или адреса общего вызова
Байт данных в I2DAT был передан; бит
C0h Переключение в режим без адресации адреса ведомого; собственный
NOT ACK был получен
0 0 0 1 адрес ведомого будет распознаваться; адрес общего вызова будет
распознаваться, если I2ADR[0] = 1
Нет операций с I2DAT Переключение в режим без адресации адреса ведомого; отсутствие
1 0 0 0 распознавания собственного адреса ведомого или адреса общего
вызова; условие START будет передано, когда шина освободится
Последний байт данных в I2DAT был
C8h Переключение в режим без адресации адреса ведомого; собственный
передан (AA = 0); бит ACK был получен
адрес ведомого будет распознаваться; адрес общего вызова будет
1 0 0 1 распознаваться, если I2ADR[0] = 1; условие START будет передано,
когда шина освободится

СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007 WWW.SOEL.RU © СТАПРЕСС 27


КОМПОНЕНТЫ

Адрес Адрес
S ведомого W A Данные A Данные A/A P/RS S ведомого R A Данные A Данные A P

От ведущего к ведомому Передача данных: n байт + подтверждение От ведущего к ведомому Передача данных: n байт + подтверждение
От ведомого к ведущему От ведомого к ведущему

Рис. 21. Формат обмена данными по шине I2C для режима ведомого Рис. 22. Формат обмена данными по шине I2C для режима ведомого
приёмника передатчика

табл. 47. Формат обмена по шине I2C в режим ведущего, то аппаратные устройств LPC2000 обслуживают сле
для режима ведомого приёмника по средства интерфейса I2C сначала бу дующие специальные регистры.
казан на рис. 21. дут ожидать освобождения шины, что Регистр установок управления I2C
бы не прервать производящиеся на (для I2C0: I2CONSET или I2C0CONSET –
Режим ведомого передатчика ней действия ведомого. Если в режиме 0xE001 C000, для I2C1: I2C1CONSET –
В режиме ведомого передатчика ведущего теряется шинный арбитраж, 0xE005 C000). Регистр включает в себя
первый байт принимается от ведуще то интерфейс I2C МК немедленно пе следующие флаги:
го и обрабатывается, как и в режиме реключается в режим ведомого и мо ● AA – флаг выдачи бита «подтвержде

ведомого приёмника, за исключени жет обнаружить свой собственный ние». Когда он установлен, бит «под
ем того, что установленный бит на адрес ведомого в той же самой после тверждение» (низкий уровень на
правления (R) укажет ведомому, что довательной передаче. В табл. 48 при линии SDA) будет возвращаться ло
ведущий намерен принимать данные ведены значения кодов состояния ин гикой I2C МК во время тактового им
от ведомого. Последовательные дан терфейса I2C, которые возвращаются в пульса, отведённого для «подтвер
ные передаются ведомым для веду регистре состояния (I2STAT) в случае ждения», на линии SCL в следую
щего по линии SDA, в то время как шинных ошибок или других некорре щих ситуациях:
последовательный синхросигнал ктных ситуаций, могущих возникнуть – по шине был принят адрес ведо
принимается ведомым от ведущего при обмене. Формат обмена по шине мого, совпадающий с адресом,
по линии SCL. Условия START и STOP I2C для режима ведомого передатчика хранящимся в регистре адреса
распознаются ведомым как начало и показан на рис. 22. ведомого I2C;
конец последовательной передачи. К интерфейсу I2C МК LPC2000 отно – по шине был принят адрес обще
Как и в режиме ведомого приёмника, сятся выводы SDA (последовательные го вызова при установленном би
в режиме ведомого передатчика ап данные) и SCL (последовательный те общего вызова (GC) в регистре
паратные средства интерфейса I2C синхросигнал). В устройствах I2ADR;
производят сравнение принятого от LPC2000, имеющих два интерфейса – по шине был принят байт данных,
ведущего адреса ведомого со своим I2C (I2C0, I2C1, имеющие выводы SDA0, когда интерфейс I2C находится в
собственным адресом ведомого и ад SCL0 и SDA1, SCL1), специальные реги режиме ведущего приёмника;
ресом общего вызова. При наличии стры, относящиеся к интерфейсу I2C0, – по шине был принят байт дан
хотя бы одного совпадения адресов имеют адреса, совпадающие с адреса ных, когда интерфейс I2C нахо
генерируется прерывание. ми специальных регистров интер дится в режиме ведомого приём
Если управляющая программа МК фейса I2C в устройствах LPC2000 с од ника, к которому адресуется об
«желает» перейти из режима ведомого ним интерфейсом I2C. Интерфейс I2C ращение.

Таблица 45. Коды состояния для режима I2C ведущего приёмника

Код Ответ пользовательского программного обеспечения


Текущее состояние шины I2C и
состояния операции с битами I2CONSET Следующее действие аппаратной логики интерфейса
аппаратной логики интерфейса операции с I2DAT
(I2STAT) STA STO SI AA
Загрузить адрес
08h Передано условие START X 0 0 X Адрес ведомого + R будет передан; бит ACK будет получен
ведомого + R
Загрузить адрес X 0 0 X Адрес ведомого + R будет передан
ведомого + R
10h Передано условие повторный START
Загрузить адрес X 0 0 X I C перейдет в режим ведущего передатчика
2
ведомого + W

Арбитраж потерян во время прохождения 0 0 0 X Шина I C будет «отпущена»; I2C перейдёт в режим ведомого
2

38h бита NOT ACK 1 0 0 X Условие START будет передано, когда шина освободится

Адрес ведомого + R был передан; бит ACK 0 0 0 0 Байт данных будет получен; бит NOT ACK будет возвращён
40h был получен Нет операций с I2DAT 0 0 0 1 Байт данных будет получен; бит ACK будет возвращён
1 0 0 X Условие повторный START будет передано
Адрес ведомого + R был передан; бит NOT 0 1 0 X Условие STOP будет передано; флаг STO будет сброшен
48h ACK был получен
Условие STOP, сопровождаемое условием START, будет передано;
1 1 0 X флаг STO будет сброшен

Байт данных был получен; бит ACK был 0 0 0 0 Байт данных будет получен; бит NOT ACK будет возвращён
50h передан 0 0 0 1 Байт данных будет получен; бит ACK будет возвращён

Прочитать байт данных 1 0 0 X Условие повторный START будет передано


Байт данных был получен; бит NOT ACK был 0 1 0 X Условие STOP будет передано; флаг STO будет сброшен
58h передан
Условие STOP, сопровождаемое условием START, будет передано;
1 1 0 X флаг STO будет сброшен

28 © СТАПРЕСС WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007


КОМПОНЕНТЫ

Бит AA может быть сброшен путем пает одно из 25 возможных актив Таблица 46. Инициализация регистра
записи «1» в бит AAC регистре ных состояний интерфейса I2C. Как I2CONSET для режима ведомого
I2CONCLR. Когда бит AA сброшен, правило, прерывание I2C должно Номер бита Имя бита Значение бита
то бит «неподтверждение» (высо использоваться только для того, 0 – –
кий уровень на линии SDA) будет чтобы уведомить неактивное ведо 1 – –
возвращаться логикой I2C МК во мое устройство о наступлении на 2 AA 1
время тактового импульса, отведён шине I2C условия START или усло 3 SI 0
ного для «подтверждения», на ли вия STOP (если это неактивное ве 4 STO 0

нии SCL в следующих ситуациях: домое устройство ожидает начала 5 STA 0


6 I2EN 1
– по шине был принят байт данных, обмена по шине I2C). Флаг SI может
7 – –
когда интерфейс I2C находится в быть сброшен путем записи «1» в
режиме ведущего приёмника; бит SIC регистра I2CONCLR;
– по шине был принят байт дан ● STO – флаг условия STOP. Установка условие STOP генерируется на ши
ных, когда интерфейс I2C нахо этого бита заставляет интерфейс не I2C. Когда аппаратная логика ши
дится в режиме ведомого приём I2C генерировать на шине условие ны обнаруживает собственное ус
ника, к которому адресуется об STOP в режиме ведущего или выйти ловие STOP, бит STO автоматически
ращение; из состояния ошибки условия в ре сбрасывается. Флаг STO сбрасыва
● SI – флаг прерывания от I2C. Этот жиме ведомого. Когда бит STO уста ется аппаратными средствами ав
бит устанавливается, когда насту навливается в режиме ведущего, томатически;

Таблица. 47. Коды состояния для режима I2C ведомого приёмника


Ответ пользовательского программного обеспечения
Код
Текущее состояние шины I2C и
состояния Операции с битами I2CONSET Следующее действие аппаратной логики интерфейса
аппаратной логики интерфейса Операции с I2DAT
(I2STAT)
STA STO SI AA

60h Собственный адрес ведомого + W был Байт данных будет получен и бит NOT ACK будет возвращён
получен; бит ACK был возвращён
Арбитраж был потерян во время
прохождения адреса ведомого + R/W от
68h Байт данных будет получен и бит ACK будет возвращён
ведущего; собственный адрес ведомого + W
был получен; бит ACK был возвращён
Нет операций с I2DAT X 0 0 0
Адрес общего вызова (00h) был получен;
70h бит ACK был возвращён
Арбитраж был потерян во время
прохождения адреса ведомого +R/W от
78h ведущего; адрес общего вызова был
получен; бит ACK был возвращён
Предварительно адресованный собственный
80h адрес ведомого был получен; байт данных Прочитать байт данных X 0 0 1
был получен; бит ACK был возвращён
Переключение в режим без адресации адреса ведомого; отсутствие
0 0 0 0 распознавания собственного адреса ведомого или адреса общего
вызова
Переключение в режим без адресации адреса ведомого;
0 0 0 1 собственный адрес ведомого будет распознаваться; адрес общего
Предварительно адресованный собственный вызова будет распознаваться, если I2ADR[0] = 1
адрес ведомого (для 88h) или адрес общего Прочитать байт данных
88h, 98h Переключение в режим без адресации адреса ведомого; отсутствие
вызова (для 98h) был получен; байт данных
был получен; бит NOT ACK был возвращён 1 0 0 0 распознавания собственного адреса ведомого или адреса общего
вызова; условие START будет передано, когда шина освободится
Переключение в режим без адресации адреса ведомого;
1 0 0 1 собственный адрес ведомого будет распознаваться; адрес общего
вызова будет распознаваться, если I2ADR[0] = 1; условие START
будет передано, когда шина освободится
Предварительно адресованный адрес X 0 0 0 Байт данных будет получен, и бит NOT ACK будет возвращен
90h общего вызова был получен; байт данных Прочитать байт данных
был получен; бит ACK был возвращён X 0 0 1 Байт данных будет получен, и бит ACK будет возвращён
Переключение в режим без адресации адреса ведомого; отсутствие
0 0 0 0 распознавания собственного адреса ведомого или адреса общего
вызова
Переключение в режим без адресации адреса ведомого;
0 0 0 1 собственный адрес ведомого будет распознаваться; адрес общего
Условие STOP или условие повторный вызова будет распознаваться, если I2ADR[0] = 1
START было получено, в то время как I2C
A0h Нет операций с I2DAT Переключение в режим без адресации адреса ведомого; отсутствие
находится в режиме ведомого приёмника
или ведомого передатчика 1 0 0 0 распознавания собственного адреса ведомого или адреса общего
вызова; условие START будет передано, когда шина освободится
Переключение в режим без адресации адреса ведомого;
собственный адрес ведомого будет распознаваться; адрес общего
1 0 0 1 вызова будет распознаваться, если I2ADR[0] = 1; условие START
будет передано, когда шина освободится

Таблица 48. Коды прочих состояний интерфейса I2C

Код Ответ пользовательского программного обеспечения


Текущее состояние шины I2C и
состояния операции с битами I2CONSET Следующее действие аппаратной логики интерфейса
аппаратной логики интерфейса операции с I2DAT
(I2STAT) STA STO SI AA
Неопределённое состояние, при котором
F8h Нет операций с I2CONSET Ожидание или продолжение текущей передачи
никакая информация не доступна; SI = 0
Ошибка на шине в режиме ведущего или
выбор режима ведомого из>за некорректных Нет операций с I2DAT Только внутренние аппаратные средства I2C затрагиваются в
условий START или STOP. Состояние 00h режимах ведущего или адресуемого ведомого. Во всех случаях шина
00h 0 1 0 X
может также наступить в случае взаимного I2C будет «отпущена» и интерфейс I2C переключится в режим
наложения попыток интерфейса I2C перейти ведомого без адресации адреса ведомого; бит STO будет сброшен
в неопределённое состояние

СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007 WWW.SOEL.RU © СТАПРЕСС 29


КОМПОНЕНТЫ

● STA – флаг условия START. Установка Регистр управления сбросом I2C (для 25 состояний, автоматически уста
этого бита заставляет интерфейс I2C I2C0: I2CONCLR или I2C0CONCLR – навливается бит SI регистра I2CON
перейти в режим ведущего и сгене 0xE001 C018, для I2C1: I2C1CONCLR – SET. Битовая структура регистра
рировать на шине I2C условие START 0xE005 C018). Битовая структура реги I2STAT показана в табл. 51.
или повторное условие START, если стра I2CONCLR показана в табл. 50. Регистр данных I2C (для I2C0: I2DAT
интерфейс I2C уже находится в ре Регистр состояния I2C (для I2C0: или I2C0DAT – 0xE001 C008, для I2C1:
жиме ведущего. Флаг STA может I2STAT или I2C0STAT – 0xE001 C004, I2C1DAT – 0xE005 C008). Регистр со
быть сброшен путем записи «1» в для I2C1: I2C1STAT – 0xE005 C004). держит данные, которые будут пере
бит STAC регистра I2CONCLR; Этот регистр доступен только для даны или которые были только что
● I2EN – бит разрешения интерфейса чтения. Он содержит код состояния получены через I2C. К регистру мож
I2C. Когда бит I2EN установлен, интерфейса I2C. Всего имеется 26 воз но обращаться только в том случае,
функция интерфейса I2C МК разре можных кодов состояния, из них 25 если установлен флаг SI регистра
шена. Флаг I2EN может быть сбро активных. Если код состояния равен I2CONSET.
шен путем записи «1» в бит I2ENC F8h, то это говорит о том, что состоя Регистр адреса ведомого I2C (для
регистра I2CONCLR. Битовая струк ние интерфейса I2C не менялось и бит I2C0: I2ADR или I2C0ADR – 0xE001
тура регистра I2CONSET показана в SI регистра I2CONSET не установлен. C00C, для I2C1: I2C1ADR – 0xE005
табл. 49. Когда наступает любое из остальных C00C). Этот регистр используется
только тогда, когда интерфейс I2C ра
Таблица 49. Биты регистра установок управления I2C (для I2C0: I2CONSET или I2C0CONSET – ботает в режиме ведомого. Битовая
0xE001 C000, для I2C1: I2C1CONSET – 0xE005 C000) структура регистра I2ADR показана в
Биты I2CONSET Имя Описание Значение после сброса табл. 52.
0 Зарезервирован Пользовательское ПО не должно производить запись в NA Регистры рабочего цикла SCL I2C
зарезервированные биты. Чтение зарезервированного бита
1 Зарезервирован возвращает неопределённое значение NA (для I2C0: I2SCLH или I2C0SCLH –
2 AA Флаг выдачи бита «подтверждение» 0 0xE001 C010, для I2C1: I2C1SCLH –
3 SI Флаг прерывания от I2C 0 0xE005 C010, для I2C0: I2SCLL или
4 STO Флаг STOP 0 I2C0SCLL – 0xE001 C014, для I2C1:
5 STA Флаг START 0 I2C1SCLL – 0xE005 C014). Программа
6 I2EN Бит разрешения I2C 0 может выбирать желаемую скорость
Пользовательское ПО не должно производить запись в
7 Зарезервирован зарезервированные биты. Чтение зарезервированного бита NA передачи данных через интерфейс I2C
возвращает неопределённое значение путём установки значений I2SCLH и
I2SCLL. Содержимое I2SCLH определя
Таблица 50. Биты регистра управления сбросом I2C (для I2C0: I2CONCLR или I2C0CONCLR – 0xE001 ет одно слагаемое значения количест
C018, для I2C1: I2C1CONCLR – 0xE005 C018) ва циклов pclk в периоде SCL интер
Биты I2CONCLR Имя Описание Значение после сброса фейса I2C, а содержимое I2SCLL – дру
0 Зарезервирован Пользовательское ПО не должно производить запись в NA гое слагаемое. Частота импульсов SCL
зарезервированные биты. Чтение зарезервированного бита
1 Зарезервирован возвращает неопределённое значение NA определяется в соответствии со следу
Бит сброса флага выдачи бита «подтверждение». Запись «1» в ющей формулой: Частота следования
2 AAC этот бит сбрасывает бит AA в регистре I2CONSET. Запись «0» не NA
имеет никакого эффекта битов = pclk/(I2SCLH + I2SCLL), где
Бит сброса флага прерывания от I2C. Запись «1» в этот бит (I2SCLH + I2SCLL) – значение суммы
3 SIC сбрасывает бит SI в регистре I2CONSET. Запись «0» не имеет NA
никакого эффекта содержимого регистров I2SCLH и
Пользовательское ПО не должно производить запись в I2SCLL. Значения I2SCLH и I2SCLL не
4 Зарезервирован зарезервированные биты. Чтение зарезервированного бита NA
возвращает неопределённое значение должны быть одинаковыми. Про
Бит сброса флага START. Запись «1» в этот бит сбрасывает бит грамма может задавать различный пе
5 STAC STA в регистре I2CONSET. Запись «0» не имеет никакого NA
эффекта риод рабочего цикла SCL, однако ско
Бит отключения интерфейса I2C. Запись «1» в этот бит
6 I2ENC сбрасывает бит I2EN в регистре I2CONSET. Запись «0» не имеет NA рость передачи данных через I2C всег
никакого эффекта да должна лежать в диапазоне от 0 до
Пользовательское ПО не должно производить запись в
7 Зарезервирован зарезервированные биты. Чтение зарезервированного бита NA 400 кГц. Кроме того, каждое из значе
возвращает неопределённое значение
ний содержимого регистров I2SCLH и
I2SCLL должно быть больше или рав
Таблица 51. Биты регистра состояния I2C (для I2C0: I2STAT или I2C0STAT – 0xE001 C004, для I2C1: но четырём. На рис. 23 показана обоб
I2C1STAT – 0xE005 C004) щённая блоксхема интерфейса I2C
Биты I2STAT Имя Описание Значение после сброса устройств семейства LPC2000.

2:0 Состояние Эти биты всегда равны 0 0


ИНТЕРФЕЙС SPI
7:3 Состояние Биты (код) состояния 1
Интерфейс SPI устройств LPC2000
имеет следующие особенности:
Таблица 52. Биты регистра адреса ведомого I2C (для I2C0: I2ADR или I2C0ADR – 0xE001 C00C, для ● два законченных и независимых

I2C1: I2C1ADR – 0xE005 C00C) контроллера SPI;


● синхронное последовательное
Биты I2ADR Имя Описание Значение после сброса
полнодуплексное соединение;
0 GC Бит разрешения детектирования общего вызова 0
● интерфейс SPI может быть веду
7:1 Адрес Адрес ведомого в режиме ведомого 0
щим и ведомым;

30 © СТАПРЕСС WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007


КОМПОНЕНТЫ

● максимальная задающая частота


8
обмена составляет 1/8 от входной
тактовой частоты.
Сдвоенный модуль SPI устройств Регистр адреса I2ADR
LPC2000 обслуживается следующими
выводами:
● SCK1, SCK0 – последовательный
Входной Компаратор
фильтр
синхросигнал; SDA
● SSEL1, SSEL0 – выбор ведомого;
Выходной
● MISO1, MISO0 – вход ведущего, вы каскад Регистр сдвига АСК
ход ведомого; I2DAT
● MOSI1, MOSI0 – выход ведущего,

вход ведомого. 8

В качестве линий вводавывода SPI Счётчик битов,

Шина VPB
арбитраж pclk

Выбор времени
используются стандартные линии Входной и логика

управления
и логика
вводавывода CMOS. Когда блок SPI фильтр синхронизации
SCL
сконфигурирован для режима ведо
Прерывание
мого, его линии вводавывода актив Выходной Генератор
каскад последовательного
ны только в том случае, когда внеш синхросигнала
ний сигнал SSEL имеет активный (низ
кий) уровень. На рис. 24 приведена I2CONSET Регистр установок управления
I2CONCLR и регистры рабочего цикла SCL
временная диаграмма, иллюстрирую I2SCLH
I2SCLL 16
щая четыре различных формата пере
дачи данных, которые могут исполь
зоваться в стандарте SPI. На рисунке Декодер
состояния Регистр состояния
показана передача одного байта дан
ных. В первой части диаграммы пока Состояние шины I2CSTAT 8
заны сигналы SSEL и SCK, во второй
части – сигналы MOSI и MISO, когда
переменная (параметр интерфейса) Рис. 23. Блоксхема интерфейса I2C
CPHA = 0, а в третьей – сигналы MOSI и
MISO, когда CPHA = 1. У ведущего и ве
SCK (CPOL = 0)
домого устройств, осуществляющих
обмен через SPI, установленные ком
SCK (CPOL = 1)
бинации переменных CPOL и CPHA
должны соответственно совпадать. SSEL
Блоксхема модуля SPI LPC2000, в
соответствии с которой построены CPHA = 0
интерфейсы SPI0 и SPI1, приведена
на рис. 25. Цикл # CPHA = 0 1 2 3 4 5 6 7 8

ОПЕРАЦИИ SPI MOSI (CPHA = 0) Бит 1 Бит 2 Бит 3 Бит 4 Бит 5 Бит 6 Бит 7 Бит 8
Для осуществления передачи (при
MISO (CPHA = 0) Бит 1 Бит 2 Бит 3 Бит 4 Бит 5 Бит 6 Бит 7 Бит 8
ёма) данных через блок SPI, сконфи
гурированный в качестве ведущего,
CPHA = 1
рекомендуется определённая после
довательность операций: Цикл # CPHA = 1 1 2 3 4 5 6 7 8
1. Задать в регистре счётчика синхро
импульсов SPI желаемую тактовую MOSI (CPHA = 1) Бит 1 Бит 2 Бит 3 Бит 4 Бит 5 Бит 6 Бит 7 Бит 8
частоту;
2. Задать в регистре управления SPI MISO (CPHA = 1) Бит 1 Бит 2 Бит 3 Бит 4 Бит 5 Бит 6 Бит 7 Бит 8
желаемые параметры настройки;
3. Записать данные, подлежащие пе Рис. 24. Формат передачи данных, которые могут использоваться в стандарте SPI
редаче, в регистр данных SPI. Эта
запись инициализирует передачу 6. Прочитать принятые через SPI дан Если нет необходимости читать
данных через SPI; ные путём чтения регистра данных, регистр данных SPI (приём не про
4. Ожидать установки бита SPIF в ре если это необходимо, т.е. если тре изводится), то бит SPIF сбросится
гистре состояния SPI. Бит SPIF бу буется произвести не только пере только при записи в регистр новых
дет автоматически установлен по дачу, но и приём; данных.
сле завершения последнего цикла 7. Вернуться к выполнению пункта 3, Для осуществления передачи (при
передачи данных через SPI; если имеются ещё данные, подле ёма) данных через блок SPI, сконфи
5. Прочитать регистр состояния SPI; жащие передаче. гурированный в качестве ведомого,

СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007 WWW.SOEL.RU © СТАПРЕСС 31


КОМПОНЕНТЫ

5. Прочитать принятые через SPI дан


MOSI_in ные путём чтения регистра данных,
MOSI_out
MISO_in если это необходимо, т.е. если тре
MISO_out
Прерывание от SPI Сдвиговый регистр SPI буется произвести не только пере
дачу, но и приём;

Регистровый интерфейс SPI


SCK_in
SCK_out 6. Вернуться к выполнению п. 2, если
Генератор SS_in
синхросигнала имеются ещё данные, подлежащие
SPI & детектор
передаче.
Чтение или запись регистра дан
ных SPI требуются, чтобы сбросить
Управление состоянием SPI
Шина VPB
бит SPIF в регистре состояния. Поэто
SCK_out_en
MOSI_out_en му всегда необходимо или прочитать
MISO_out_en
Разрешение выходной логики регистр данных, или произвести за
пись в него.
Рис. 25. Блоксхема модуля SPI Блок SPI устройств семейства
LPC2000 обслуживается следующими
рекомендуется такая последователь поэтому она должна быть сделана регистрами.
ность операций: до того, как ведущее устройство Регистр управления SPI (S0SPCR –
1. Задать в регистре управления SPI начнёт передачу; 0xE0020000, S1SPCR – 0xE0030000).
желаемые параметры настройки; 3. Ожидать установки бита SPIF в ре Битовая структура регистра SPCR
2. Записать данные, подлежащие пе гистре состояния SPI. Бит SPIF бит приведена в табл. 53.
редаче, в регистр данных SPI, если будет автоматически установлен Регистр состояния SPI (S0SPSR –
это необходимо, т.е. если требуется после последнего перепада син 0xE0020004, S1SPSR – 0xE0030004).
произвести не только приём, но и хросигнала, осуществившего вы Регистр доступен только для чтения.
передачу. Эта запись не инициали борку; Битовая структура регистра SPSR
зирует передачу данных через SPI, 4. Прочитать регистр состояния SPI; приведена в табл. 54.

Таблица 53. Биты регистра управления SPI (S0SPCR – 0xE0020000, S1SPCR – 0xE0030000)
Биты регистра SPCR Функция бита Описание Значение после сброса
Пользовательское ПО не должно производить запись в зарезервированные биты. Чтение такого бита возвращает
2:0 Зарезервированы NA
неопределённое значение
Бит управления фазой синхроимпульсов. Этот бит определяет отношение между данными и синхросигналом при передаче
через SPI, а также моменты начала и окончания передачи ведомого устройства. Когда этот бит установлен, выборка данных
производится по второму (завершающему) перепаду синхроимпульса SCK. Передача начинается с первого перепада
3 CPHA синхроимпульса и заканчивается с последним перепадом, осуществляющим выборку, когда сигнал SSEL активен. Когда 0
этот бит сброшен, выборка данных производится по первому (начальному) перепаду синхроимпульса SCK. Передача
начинается и заканчивается соответственно в моменты активации и дезактивации сигнала SSEL
Бит управления полярностью синхросигнала. Когда бит установлен, сигнал SCK имеет низкий активный уровень. Когда бит
4 CPOL 0
сброшен, сигнал SCK имеет высокий активный уровень
Бит выбора режима ведущего. Когда этот бит установлен, блок SPI работает в режиме ведущего. Когда этот бит сброшен,
5 MSTR 0
блок SPI работает в режиме ведомого
Бит управления очерёдностью передачи через SPI разрядов в байте. Когда этот бит установлен, при передаче данных через
6 LSBF 0
SPI сначала предаётся МЗР (бит 0). Когда этот бит сброшен, при передаче данных через SPI сначала предаётся СЗР (бит 7)
Разрешение прерывания от SPI. Когда этот бит установлен, каждый раз при переходе в активный уровень бита SPIF или
7 SPIE бита MODF генерируется аппаратное прерывание. Когда этот бит сброшен, прерывания от SPI запрещены 0

Таблица 54. Биты регистра состояния SPI (S0SPSR – 0xE0020004, S1SPSR – 0xE0030004)
Биты регистра SPSR Функция бита Описание Значение после сброса

2:0 Зарезервированы Пользовательское ПО не должно производить запись в зарезервированные биты. Чтение такого бита возвращает NA
неопределённое значение
Бит аварийного прекращения работы ведомого. Когда бит установлен, это указывает, что произошло аварийное
3 ABRT 0
прекращение работы ведомого. Этот бит сбрасывается путём чтения регистра SPSR
Бит ошибки режима. Когда бит установлен, то это указывает, что произошла ошибка режима. Этот бит сбрасывается путём
4 MODF 0
чтения регистра SPSR и последующей записи в регистр управления SPI
Бит переполнения при чтении. Когда бит установлен, это указывает, что произошло переполнение при чтении. Этот бит
5 ROVR 0
сбрасывается путём чтения регистра SPSR
Бит коллизии записи. Когда бит установлен, это указывает, что произошла коллизия записи. Этот бит сбрасывается путём
6 WCOL 0
чтения регистра SPSR и последующего обращения к регистру данных SPI
Флаг окончания передачи через SPI. Когда флаг установлен, это указывает на окончание передачи данных через SPI. Когда
устройство является ведущим, этот флаг устанавливается в конце последнего цикла передачи. Когда устройство является
7 SPIF 0
ведомым, этот флаг устанавливается по перепаду SCK, осуществляющего выборку последнего бита данных. Этот флаг
сбрасывается путем первого чтения регистра SPSR и последующего обращения к регистру данных SPI*

*Этот флаг не является флагом прерывания от SPI, который находится в регистре SPINT.

Таблица 55. Биты регистра прерывания от SPI (S0SPINT – 0xE002001C, S1SPINT – 0xE003001C)
Биты регистра SPINT Функция бита Описание Значение после сброса
Флаг прерывания от SPI. Этот флаг устанавливается аппаратно при генерации прерывания от SPI. Флаг сбрасывается
0 Прерывание от SPI 0
путём записи в него 1*
Пользовательское ПО не должно производить запись в зарезервированные биты. Чтение такого бита возвращает
7:1 Зарезервированы NA
неопределённое значение

*Этот флаг будет установлен один раз, когда устанавливаются бит SPIE и хотя бы один из битов SPIF или WCOL. Однако только в том случае, когда бит прерывания от SPI
установлен и прерывание от SPI разрешено в VIC, прерывание от SPI может быть обработано программным обработчиком.

32 © СТАПРЕСС WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007


КОМПОНЕНТЫ

Регистр данных SPI (S0SPDR – количество циклов pclk, которое сос 2. LPC2119/2129/2194/2292/2294 USER
0xE0020008, S1SPDR – 0xE0030008). тавляет один цикл синхросигнала MANUAL. Feb. 2004. Philips Semiconduc
Этот доступный для чтения и записи SPI. Значение этого регистра всегда tors (www.LPC2000.com).
8разрядный регистр обеспечивает должно быть чётным, а также всегда 3. ARM 7TDMI Data Sheet. Document
передачу и приём данных SPI. Дан должно быть больше или равно 8. Аб Number: ARM DDI 0029E. Issued: August
ные, подлежащие передаче через SPI, солютное значение задающей часто 1995. Copyright Advanced RISC
записываются в этот регистр. Дан ты SPI может быть рассчитано по Machines Ltd. (ARM) 1995
ные, принятые через SPI, могут быть формуле cclk/ab, где а – значение (www.arm.com).
прочитаны из него. Когда устрой SPCCR, b – значение VPBDIV. 4. ARM7TDMIS Technical Reference Manual
ство является ведущим, запись в этот Регистр прерывания от SPI (Rev 4) Copyright © ARM Limited. ARM DDI
регистр инициализирует передачу (S0SPINT – 0xE002001C, S1SPINT – 0234A (www.arm.com).
данных через SPI. Запись в этот ре 0xE003001C). Этот регистр содержит 5. ARM Instruction Set. Quick Reference Card
гистр не приведёт к инициализации флаг прерывания от интерфейса SPI. (www.arm.com).
передачи в том случае, если бит SPIF Битовая структура регистра SPINT 6. Thumb Instruction Set. Quick Reference
в регистре состояния был установ приведена в табл. 55. Card (www.arm.com).
лен и регистр состояния не был про 7. 80C51 Family Derivatives 8XC552/562
читан. ЛИТЕРАТУРА Overview. Philips Semiconductors, 1996
Регистр счётчика синхроимпуль 1. Редькин П.П. Микроконтроллеры Aug 06, (www.semiconductors.philips.com/
сов SPI (S0SPCCR – 0xE002000C, ARM7. Семейство LPC2000 компании acrobat/various/8XC552_562OVERVIEW_
S1SPCCR – 0xE003000C). Этот регистр Philips: полное руководство пользова 2.pdf).
управляет значением частоты SCK ве теля. М.: ДодэкаXXI. 2006 (готовится к
дущего устройства. Регистр содержит выпуску). Продолжение следует

Новости мира News of the World Новости мира


Фирма Xilinx выпускает день единственных с таким размером,
новое семейство ПЛИС имеющих разрешение 8 мегапикселов.
ПЛИС с архитектурой FPGA семейств Достижение столь высокой плотности
Spartan3, Spartan3E, Spartan3A фирмы компоновки пикселов объясняется мини
Xilinx, изготовленные по 90нм технологии, мизацией их размера – 1,75 мкм, что, как
служат в качестве недорогой платформы утверждается, также является рекордным
для разработки цифровых устройств мас показателем. Размер чипа составляет 10
сового потребления. Новое семейство × 10 × 3,5 мм. Начало массового произ
Spartan3A оптимизировано для приложе водства намечено на апрель 2007 г.
ний, где количество вводоввыводов и про Рассказывая о своём новом продукте, ● ток потребления в спящем режиме
изводительность важнее логической ёмко Sharp отметила, что миниатюрные разме 2 мкА;
сти ПЛИС (системы передачи данных по ры и высокое разрешение соответствуют ● токи потребления в рабочих режимах:
дифференциальной паре, системы под актуальным требованиям рынка ЦФК. На 22 мА при передаче, 19 мА при приёме;
держки различных стандартов интерфей ряду с этим утверждается, что новая CCD ● 40выводной корпус QFN (6 × 6 мм).
сов памяти или системы, использующие матрица позволит также снизить себесто www.microchip.com
«бриджинг» как метод маршрутизации). имость цифровых фотоаппаратов с высо
Семейство Spartan3E оптимизировано ким разрешением. Кроме собственно сен Stratix II GXFPGA от Altera
для приложений, в которых логическая сора, Sharp предлагает и комплекты, Фирма Altera поставляет Stratix II GX
ёмкость важнее количества вводоввыво включающие необходимые для создания FPGAs. Элементы содержат до 20 экономи
дов применяемой ПЛИС. Например, сопро готовых устройств компоненты, такие как, чных трансиверов со скоростью передачи
цессоры в системах цифровой обработки например, сигнальные процессоры (DSP). данных от 600 до 6,375 Mбит/с для последо
сигналов, встроенные системы управления. www.3dnews.ru вательных связей с общей скоростью пере
Семейство Spartan3 оптимизировано дачи до 127 Гбит/с. EP2SGX30 и EP2SGX60
для приложений, в которых одинаково ва Microchip: однокристальный представляют собой всё семейство Stratix II
жны большая логическая ёмкость и боль радиочастотный трансивер GX. Altera поставляет для производства
шое количество вводоввыводов. Напри MRF24J40 сертифицированные элементы, которые
мер, системы обработки данных высокой Компания Microchip анонсировала новый своими параметрами поддерживают все
степени интеграции. радиочастотный трансивер MRF24J40 для распространённые протоколы и скорости
www.xilinx.com диапазона 2,4 ГГц c аппаратной поддерж связи. Предоставляется среда разработки
кой PHY и MACуровней IEEE 802.15.4. на базе Stratix II GXчипов. Это системное
Sharp анонсировала 8Мп Основные особенности трансивера: решение включает программное обеспече
CCDматрицы размером ● полное соответствие спецификации ние разработки Quartus II, инструментарий
10 мм IEEE 802.15.4; целостности сигналов и оценки питания, IP
Компания Sharp объявила о начале от ● возможность реализации ZigBee™, Cores, модели систем Altera, Cadence
грузок образцов CCDматриц MiWi™ и проприетарных протоколов; Designs Systemes и Mentor Graphics, базо
RJ23V3BA0BT формата 10 мм, – по заяв ● четырёхпроводной последовательный вые разработки и документацию.
лениям производителя, на сегодняшний интерфейс SPI; www.altera.com

СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 2 2007 WWW.SOEL.RU © СТАПРЕСС 33