СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №4/2015

ЭЛЕМЕНТЫ И КОМПОНЕНТЫ 38 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 4 2015 ● DMA_CPAR – содержит указатель на периферийное устройство, которое подключено к каналу; ● DMA_CMAR – содержит указатель области памяти, в которой будут записаны или прочитаны данные. Карта размещения регистров DMA в пространстве памяти представлена в таблице 1. В ней также показано зна- чение регистров после сброса. Каждый блок DMA включает в свой состав несколько групп регистров в соответствии с количеством обслужи- ваемых им каналов. На карте показаны группы регистров для каналов 1, 2 и 7. Регистры для остальных каналов имеют аналогичную структуру и одноимённые названия, отличающиеся лишь номе- ром канала и смещением относитель- но базового адреса. Рассмотрим подробнее назначе- ние всех разрядов этих регистров. В последующих описаниях регистров все биты для каналов 6 и 7 относятся только к DMA2, так как DMA1 имеет все- го 5 каналов. Регистр статуса прерываний DMA_ISR имеет нулевое смещение адреса и обну- ляется после сброса микроконтроллера. Назначение его бит следующее: ● биты 31…28 зарезервированы и при чтении имеют нулевое значение; ● биты 27, 23, 19, 15, 11, 7, 3 представля- ют собой флаги TEIFx ошибки обме- на в канале x, где х – номер канала от 1 до 7. Эти биты устанавливаются аппаратно и обнуляются программно путём записи логической «1» в соот- ветствующий бит регистра DMA_ IFCR. Значение флага «0» означает отсутствие ошибки обмена в канале x, а значение «1» – наличие ошибки обмена в канале x; ● биты 26, 22, 18, 14, 10, 6, 2 представ- ляют собой флаги HTIFx завершения половины обмена в канале x. Их уста- новка и обнуление производится ана- логично флагам TEIFx; ● биты 25, 21, 17, 13, 9, 5, 1 являются флагами TCIFx полного завершения обмена в канале x; ● биты 24, 20, 16, 12, 8, 4, 0 – это фла- ги GIFx, указывающие на возникшие прерывания в канале x. Регистр DMA_IFCR служит для очист- ки флагов прерываний DMA, описан- ных выше. Его биты 31…28 зарезерви- рованы, а остальные биты предназна- чены для обнуления описанных выше разрядов регистра DMA_ISR и имеют соответствующие им названия с добав- лением префикса «С» от слова Clear (пер. с англ. – очистить). Установка и обнуление этих флагов производит- ся программно. РегистрыDMA_CCRx нужны для кон- фигурации соответствующего канала x: ● биты 31…15 в нём зарезервированы и всегда читаются как «0»; ● бит 14 MEM2MEM позволяет запре- тить или разрешить режим работы «память-память» для DMA; ● биты 13…12 PL[1:0] определяют уро- вень приоритета канала и могут при- нимать следующие значения: − 00 – низкий приоритет, − 01 – средний приоритет, − 10 – высокий приоритет, − 11 – очень высокий приоритет; ● биты 11…10 MSIZE[1:0] задают размер данных в памяти и могут принимать значения: − 00 – 8 бит, − 01 – 16 бит, − 10 – 32 бита, − 11 – резерв; ● биты 9…8 PSIZE[1:0] определяют раз- мер данных для периферии анало- гично битам MSIZE[1:0]; ● бит 7 MINC задаёт режим инкремен- та указателя в памяти и может при- нимать следующие значения: − 0 – режим инкремента указателя в памяти отключён, − 1 – режим инкремента указателя в памяти разрешён; ● бит 6 PINC служит для запрета и раз- решения режима инкремента указа- теля периферии; ● бит 5 CIRC запрещает и разрешает режим цикличности; ● бит 4 DIR задаёт направление обме- на данных: − 0 – чтение из периферии, − 1 – чтение из памяти; ● бит 3 TEIE запрещает и разрешает прерывания от ошибки обмена; ● бит 2 HTIE запрещает и разрешает прерывания от события завершения половины обмена; ● бит 1 TCIE запрещает и разрешает прерывания от события заверше- ния обмена; ● бит 0 EN отключает и включает соот- ветствующий канал в работу. Регистр DMA_CNDTRx задаёт размер данных для канала x DMA: ● биты 31…16 зарезервированы и всег- да читаются как «0»; ● биты 15…0 NDT[15:0] задают размер данных обмена в байтах от 0 до 65535. В этот регистр можно произво- дить запись только тогда, когда канал выключен. Как только канал будет раз- решён, этот регистр можно будет толь- ко читать, чтобы определить число байт, оставшееся для обмена. Данный регистр декрементируется после каж- дой DMA-транзакции. Как только обмен завершён, этот регистр может либо остаться обну- лённым, либо автоматически переза- грузиться ранее запрограммирован- ным значением, если канал сконфи- гурирован в режиме автоматической перезагрузки, то есть цикличности. Если значение этого регистра равно нулю, никакая транзакция не может быть обслужена, причём независимо от того, разрешён канал или нет. Регистр DMA_CPARx позволяет задать адрес периферии для канала x DMA. В этот регистр нельзя производить запись, когда канал разрешён. Значе- ние его бит: ● биты 31…0 PA[31:0] задают базовый адрес регистра данных периферии, который будет участвовать в опера- циях чтения и записи. Когда в регистре DMA_CCRx биты PSIZE[1:0]=01 задают 16-битный раз- мер элемента данных, то бит PA[0] реги- стра DMA_CPARx игнорируется. Доступ к данным автоматически выравнива- ется по адресу полуслова. Когда биты PSIZE[1:0] =10 задают 32-битный раз- мер элемента данных, игнорируют- ся биты PA[1:0] регистра DMA_CPARx. Доступ к данным периферии автомати- чески выравнивается по адресу слова. Регистр DMA_CMARx даёт возмож- ность задать адрес памяти для кана- ла x DMA. В этот регистр также нельзя производить запись, когда канал раз- решён. Значение бит регистра: биты 31…0 MA[31:0] задают базовый адрес в памяти микроконтроллера для данных, которые будут участвовать в операциях чтения и записи. Когда в регистре DMA_CCRx биты MSIZE[1:0]=01 задают 16-битный раз- мер элемента данных, то бит MA[0] регистра DMA_CMARx игнорирует- ся. Доступ к данным автоматически выравнивается по адресу полусло- ва. Когда биты MSIZE[1:0]=10 задают 32-битный размер элемента данных, игнорируются биты MA[1:0] регистра DMA_CMARx, и доступ к данным памя- ти автоматически выравнивается по адресу слова. DMA- ТРАНЗАКЦИИ И ОСОБЕННОСТИ РАБОТЫ После возникновения запланиро- ванного события, периферия посыла- © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy