К1921ВК01Т (арм Cortex-M4F)

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

IT124NPOIT
Сообщения: 24
Зарегистрирован: 19 янв 2017, 18:37

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение IT124NPOIT »

Да, в макетный образец с той же программой шьется без проблем.
Вот часть программы:
void InitPort (void)
{
GPIO_A->OUTENABLESET=(1<<9); //Бит А[9] на выход, остальные на вход.
GPIO_A->ALTFUNCSET|=(1<<9); // Включена альтернативная функция по A[9].
//GPIO_A->ALTFUNCSET|=(1<<0); // Включена альтернативная функция по A[0].
GPIO_A->INTTYPESET=(1<<0); // Тип прерывания по А[0] по фронту.
//GPIO_A->INTTYPESET|=(1<<1); // Тип прерывания по А[1] по фронту.
GPIO_A->INTPOLSET=(1<<0); // Полярность фронта прерывания по A[0] - положительная.
//GPIO_A->INTPOLSET|=(1<<1); // Полярность фронта прерывания по A[1] - положительная.
GPIO_A->INTENSET=0x0000; //Пока нет разрешения на прерывание.
COMMON_REG->GPIOPUCTL0=(1<<0); //Подключена подтяжка PULLUP к порту А[0] , остальные и порт В отключены.
COMMON_REG->GPIOODCTL0=0x00000000; // Обычный режим работы портов А и В, не открытый коллектор.
COMMON_REG->GPIODSCTL0=0x00000000; // Нагрузочная способнось портов А и В 8мА.
COMMON_REG->GPIOPCTL0=0; // Альтернативная функция порта A[0], А[9] номер 1.
//COMMON_REG->GPIOSE0=0x00000000; // Фильтр к портам А и В не подключен.
COMMON_REG->GPIOQM0=(1<<0); // Фильтр подключен по 6-ти отсчетам к порту А[0].
COMMON_REG->GPIOQE0=(1<<0); // Фильтр подключен к порту А[0].
//COMMON_REG->GPIODEN0|=(1<<9)|(1<<1)|(1<<0); // Разрешение работы 0,1 и 9 битов порта А.
COMMON_REG->GPIODEN0=(1<<9)|(1<<0); // Разрешение работы 0 и 9 битов порта А.

GPIO_B->OUTENABLESET=(1<<15); //Бит B[15] на выход, остальные на вход.
GPIO_B->ALTFUNCSET|=(1<<15); // Включена альтернативная функция по В[15].
COMMON_REG->GPIOPCTL1=(0<<30); // Альтернативная функция порта В[15] номер 1.
COMMON_REG->GPIODEN0|=(1<<31); // Разрешение работы бита порта В[15].

GPIO_C->OUTENABLESET=0xFFC0; //Бит C[6] - C[15] на выход, остальные на вход.
GPIO_C->ALTFUNCSET|=0xFFC0; // Включена альтернативная функция по битам C[6] - C[15].
COMMON_REG->GPIOPUCTL1=0x00000000; //Подтяжка PULLUP к портам С и D отключены.
COMMON_REG->GPIOODCTL1=0x00000000; // Обычный режим работы портов C и D, не открытый коллектор.
COMMON_REG->GPIODSCTL1=0x00000000; // Нагрузочная способнось портов C и D 8мА.
COMMON_REG->GPIOPCTL2=0x00000000; // Альтернативная функция порта C номер 1.
COMMON_REG->GPIOSE1=0x00000000; // Фильтр к портам C и D не подключен.
COMMON_REG->GPIODEN1|=0x0000FFC0; // Разрешение работы битам C[6] - C[15].

GPIO_D->OUTENABLESET=0xf000; //Биты D[15] - D[12] на выход, остальные на вход.
GPIO_D->ALTFUNCSET|=0xf000; // Включена альтернативная функция по D[15] - D[12].
COMMON_REG->GPIOPCTL3=0x00000000; // Альтернативная функция порта D номер 1.
COMMON_REG->GPIODEN1=0xf000ffc0; // Разрешение работы битов D[15] - D[12].

GPIO_E->OUTENABLESET=(1<<12)|(1<<13); //Бит E[12], E[13] на выход, остальные на вход.
GPIO_E->ALTFUNCSET=(1<<12)|(1<<13); // Включена альтернативная функция по битам E[12], E[13].
COMMON_REG->GPIOPUCTL2=0x00000000; //Подтяжка PULLUP к портам E и F отключены.
COMMON_REG->GPIOODCTL2=0x00000000; // Обычный режим работы портов E и F, не открытый коллектор.
COMMON_REG->GPIODSCTL2=0x00000000; // Нагрузочная способнось портов E и F 8мА.
COMMON_REG->GPIOPCTL4=0x00000000; // Альтернативная функция порта E номер 1.
COMMON_REG->GPIOSE2=0x00000000; // Фильтр к портам E и F не подключен.
COMMON_REG->GPIODEN2=(1<<12)|(1<<13); // Разрешение работы битам E[12], E[13].

GPIO_F->OUTENABLESET=(1<<6); //Бит F[6] на выход, остальные на вход.
GPIO_F->ALTFUNCSET=(1<<6); // Включена альтернативная функция по F[6].
COMMON_REG->GPIOPCTL5=0x00000000; // Альтернативная функция порта F номер 1.
COMMON_REG->GPIODEN2|=(1<<22); // Разрешение работы бита F[6].

GPIO_G->OUTENABLESET=1; //Бит G[0] на выход, остальные на вход.
GPIO_G->INTTYPESET=(1<<12); // Тип прерывания по G[12] по фронту.
COMMON_REG->GPIOPUCTL3=(1<<12); //Подключена подтяжка PULLUP к порту G[12], остальные отключены.
COMMON_REG->GPIOQM3=(1<<12); // Фильтр подключен к порту G[12] по 6-ти отсчетам.
COMMON_REG->GPIOQE3=(1<<12); // Фильтр подключен к порту G[12].
COMMON_REG->GPIODEN3=(1<<12)|(1<<0); // Разрешение работы 0 и 12 битов порта G.

}
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение bkolbov »

Вот этой записью вы запрещаете работу SWDIO на выход:

Код: Выделить всё

COMMON_REG->GPIODEN0=(1<<9)|(1<<0); // Разрешение работы 0 и 9 битов порта А.
Правильнее так:

Код: Выделить всё

COMMON_REG->GPIODEN0|=(1<<9)|(1<<0); // Разрешение работы 0 и 9 битов порта А.
ku100
Сообщения: 3
Зарегистрирован: 21 окт 2016, 16:01

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение ku100 »

Добрый день!
При назначении и сбросе альтернативных функций порту (по крайней мере порту В) обнаружилась одна неприятная вещь. В программе некоторые выводы порта В были сначала переведены в режим работы альтернативной функции:
NT_GPIOB->ALTFUNCSET |= ((1 << 4) |(1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) |(1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13) | (1 << 14) | (1 << 15));
Далее при переводе хотя бы одного из этих выводов данного порта в режим GPIO,
NT_GPIOB->ALTFUNCCLR |= (1 << 15); // GPIO_Pin_15,
регистры ALTFUNCSET и ALTFUNCCLR сбрасываются в 0. В регистре ALTFUNCSET сбрасываются биты, отвечающие за выводы, которые должны работать в режиме альтернативной функции по умолчанию (выводы 0, 1, 2). Вследствие чего становится невозможной работа через JTAG.
Для устранения данной специфической особенности работы микроконтроллера приходится повторно назначать нужным выводам режим работы альтернативной функции.
NT_GPIOB->ALTFUNCSET |= ((1 << 0) | (1 << 1) | (1 << 2) | (1 << 4) | (1 << 5) | (1 << 6) | (1 << 7) | (1 << 8) |(1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13) | (1 << 14));
Должен ли так работать микроконтроллер?
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение bkolbov »

Добрый день!

Микроконтроллер отрабатывает верно. У вас ошибка в строке:

Код: Выделить всё

NT_GPIOB->ALTFUNCCLR |= (1 << 15); // GPIO_Pin_15,
Правильный вариант:

Код: Выделить всё

NT_GPIOB->ALTFUNCCLR = (1 << 15); // GPIO_Pin_15,
Дело в том, что к регистрам GPIO xxxCLR/xxxSET не совсем правильно применять стандартную процедуру "чтение-модификация-запись", нужно применять одиночную "запись". Использование этой процедуры с регистрами xxxSET не приводит к ошибке, однако с xxxCLR по-другому. Так например, прочитав ALTFUNCCLR регистр (впрочем как и ALTFUNCSET), вы получите текущее состояние альтернативных функций по порту. Это значение будет содержать установленные разряды, соответствующие включенным функциям. И когда, после модификации, вы запишите это значение обратно в ALTFUNCCLR - вы сбросите все включенные альтернативные функции.
ku100
Сообщения: 3
Зарегистрирован: 21 окт 2016, 16:01

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение ku100 »

Спасибо за ответ. Но есть еще один нерешенный вопрос.
Работаю с макетно-отладочным устройством для микроконтроллера К1921ВК01Т КФДЛ.441461.010. На данный момент в качестве примеров работы с периферией использую пакет драйверов из репозитория NIIETCM4 PD. Драйвера отлично работают после небольшой адаптации под данный набор. В отладочном наборе имеются микросхемы внешней памяти типа SRAM (CY62126ESL) и типа FLASH (SST39LF400A-55-4C). При общении со SRAM через контроллер внешней памяти никаких проблем не наблюдается (успешно проходят и чтение и запись), а вот записать во FLASH, используя драйвер контроллера внешней памяти из репозитория, не получается. Посылаю последовательность команд для записи согласно даташиту на SST39LF400A, данные и целевой адрес, но результат нулевой - данные не записываются.
Имеются ли где-то примеры исходников для работы именно с этим отладочным набором? В частности пример работы с внешней памятью типа FLASH через контроллер внешней памяти?
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Лашкевич »

Добрый день. Не нашел в документации количества циклов перезаписи для основной и пользовательской флеш-памяти.
Также интересен вопрос по температурному диапазону - что будет при минимальной, максимальной температуре? При какой температуре хранения изделия данные флеш-памяти будут гарантировано сохранны?
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 11:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение bkolbov »

Лашкевич писал(а):Добрый день. Не нашел в документации количества циклов перезаписи для основной и пользовательской флеш-памяти.
Также интересен вопрос по температурному диапазону - что будет при минимальной, максимальной температуре? При какой температуре хранения изделия данные флеш-памяти будут гарантировано сохранны?
Добрый день! Типичное количество циклов перезаписи - 100К. Если температура хранения не выходит за рамки рабочего диапазона температур изделия, то данные должны оставаться сохраненными.
Аватара пользователя
MR.Smith
Сообщения: 78
Зарегистрирован: 25 апр 2016, 10:56

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение MR.Smith »

Здравствуйте!
Подскажите, где можно скачать габаритный чертеж для металлокерамического корпуса К1921ВК01Т (корпус 4250.208-1) ?
Также необходима распиновка для этого корпуса. В ТО указана распиновка только для QFP208.

Спасибо!
hgost
Сообщения: 61
Зарегистрирован: 14 дек 2015, 12:07
Предприятие: АО НИИЭТ
Откуда: НИИЭТ
Контактная информация:

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение hgost »

MR.Smith писал(а):Здравствуйте!
Подскажите, где можно скачать габаритный чертеж для металлокерамического корпуса К1921ВК01Т (корпус 4250.208-1) ?
Также необходима распиновка для этого корпуса. В ТО указана распиновка только для QFP208.
Спасибо!
Добрый день!
Чертежи во вложении. Распиновка будет немного отличаться. В файле с пинами в конце есть таблица, в которой перечисленны отличия
Вложения
таблица выводов Кортекс-5 МК.doc
(889.5 КБ) 207 скачиваний
корпус 4250.208-1.7z
(423.98 КБ) 194 скачивания
IT124NPOIT
Сообщения: 24
Зарегистрирован: 19 янв 2017, 18:37

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение IT124NPOIT »

У меня такая проблема. При минус 20 в камере микроконтроллер перестает реагировать на прерывания по А(0) и G(12). Тактовая частота 100 МГц - 200МГц с делением на 2. В нормальных условиях и плюсе все хорошо.Амплитуда внешнего импульса для прерывания 2.1В, может быль в минусе это мала? Или на 100 МГц в минусе МК начинает плохо работать?
Настройки портов в моём сообщении от 20января.
Ответить

Вернуться в «32-разрядные микроконтроллеры»