1921ВК035 (общие вопросы)

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

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

Аватара пользователя
Vey_Shi
Сообщения: 22
Зарегистрирован: 19 окт 2023, 12:29
Предприятие: АО НИТИ Авангард
Откуда: Санкт-Петербург

Re: 1921ВК035 (общие вопросы)

Сообщение Vey_Shi »

ches писал(а): 29 мар 2024, 14:46 Здравствуйте! Сигнал на линии RX скорее похож не на сигнал, а на помехи. Фактически на линии держится уровень 3.3В (с небольшими помехами).
Я бы начал с проверки подключения к микросхеме внешней памяти. Проверьте, нет ли замыкания между сигнальными линиями или питанием.
Вывод Tx должен быть подключен к выводу MOSI (в даташите на микросхему может быть обозначен как SI - Serial Data Input).
Вывод Rx должен быть подключен к выводу MISO (может быть обозначен как SO - Serial Data Output).
Проверку подключения выполнил. Замыканий на линии данных по питанию нет. Распиновка совпадает с присланной Вами схемой подключения. Прикрепляю схему. Выводы HOLD и WP остаются неподключенными.
ches писал(а): 29 мар 2024, 14:46 А какую микросхему внешней памяти используете?
Использую память AllianceMemory AS5F38G04SND-08LIN. Прикрепляю даташит.
| Показать
схема расключения.png
схема расключения.png (28.35 КБ) 1321 просмотр
Вложения
AllianceMemory_SPI_NAND_Flash_July2020_Rev1.0.pdf
(794.82 КБ) 58 скачиваний

Веерный Игорь
инженер-программист
АО НИТИ Авангард
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: 1921ВК035 (общие вопросы)

Сообщение ches »

Vey_Shi писал(а): 01 апр 2024, 08:51 Выводы HOLD и WP остаются неподключенными.
Здравствуйте! Попробуйте сигналы HOLD и WP подтянуть к напряжению +3.3В через резисторы номиналом 10-100 КОм.
Аватара пользователя
Vey_Shi
Сообщения: 22
Зарегистрирован: 19 окт 2023, 12:29
Предприятие: АО НИТИ Авангард
Откуда: Санкт-Петербург

Re: 1921ВК035 (общие вопросы)

Сообщение Vey_Shi »

ches писал(а): 01 апр 2024, 16:48 Здравствуйте! Попробуйте сигналы HOLD и WP подтянуть к напряжению +3.3В через резисторы номиналом 10-100 КОм.
Подтянул эти выводы к 3,3 В через 33 кОма. На линии RX всё ещё помеха, совпадающая с сигналом SCK. Прикрепляю осциллограмму.
| Показать
WP, HOLD 3,3V.jpg
WP, HOLD 3,3V.jpg (7.84 МБ) 833 просмотра

Веерный Игорь
инженер-программист
АО НИТИ Авангард
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: 1921ВК035 (общие вопросы)

Сообщение ches »

Vey_Shi писал(а): 02 апр 2024, 10:56 Подтянул эти выводы к 3,3 В через 33 кОма. На линии RX всё ещё помеха, совпадающая с сигналом SCK. Прикрепляю осциллограмму.
Значит, вероятнее всего, flash-память не понимает отправляемые коды команд, поэтому не отвечает на них.
В даташите на память, судя по таблице 2-1, коды команд 8-разрядные.
В примере проекта используется EEPROM-память, работающая с 16-разрядными кодами команд, поэтому в функции инициализации используется настройка модуля SPI для работы с 16-разрядными словами данных (строка SPI->CR0_bit.DSS = SPI_CR0_DSS_16bit;).
Поскольку Вам необходимо передавать 8-разрядные команды, строка должна выглядеть как: SPI->CR0_bit.DSS = SPI_CR0_DSS_8bit;
Norty304
Сообщения: 4
Зарегистрирован: 26 фев 2024, 11:26
Предприятие: УОМЗ

Re: 1921ВК035 (общие вопросы)

Сообщение Norty304 »

Добрый день, может кто-нибудь помочь разобраться как запустить SPI в прерываниях, камень преткновения какой-то, в примерах не вижу подобного, сам не могу осилить который день.
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: 1921ВК035 (общие вопросы)

Сообщение ches »

Norty304 писал(а): 11 апр 2024, 16:10 Добрый день, может кто-нибудь помочь разобраться как запустить SPI в прерываниях, камень преткновения какой-то, в примерах не вижу подобного, сам не могу осилить который день.
Добрый день! Не совсем понятно, Вы имеете ввиду как запустить передачу данных через интерфейс SPI? Если модуль интерфейса уже проинициализирован, то достаточно записать данные в регистр DR, чтобы начать передачу данных. Например так: SPI->DR_bit.DATA = 0xA5A5;
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: 1921ВК035 (общие вопросы)

Сообщение ches »

Norty304 писал(а): 11 апр 2024, 16:10 Добрый день, может кто-нибудь помочь разобраться как запустить SPI в прерываниях, камень преткновения какой-то, в примерах не вижу подобного, сам не могу осилить который день.
Если вопрос в том, чтобы настроить прерывания от SPI, тогда нужно при инициализации записать в регистр IMSC маску прерываний (установить биты необходимых для работы прерываний). А также разрешить прерывания от SPI в контроллере прерываний Энвик. Например, при записи Энвик_EnableIRQ(SPI_RX_IRQn); будут разрешены прерывания от приемного буфера SPI.
С помощью битовых полей TXIFLSEL и RXIFLSEL регистра CR1 можно задать величину порога опустошения передающего и наполнения приемного буферов, после которой будет сгенерировано прерывание.
В программе обработчике прерываний необходимо будет произвести запись в регистр ICR для сброса прерывания.
Следует с осторожностью разрешать прерывания от передающего буфера, поскольку может начаться непрерываная генерация прерываний до тех пор, пока в передающем буфере не будет записано необходимое количество слов данных (в соответствии со значением поля TXIFLSEL).

Подробное описание регистров SPI приведено в руководстве пользователя (Приложение А.11).
Norty304
Сообщения: 4
Зарегистрирован: 26 фев 2024, 11:26
Предприятие: УОМЗ

Re: 1921ВК035 (общие вопросы)

Сообщение Norty304 »

ches писал(а): 12 апр 2024, 14:16
Norty304 писал(а): 11 апр 2024, 16:10 Добрый день, может кто-нибудь помочь разобраться как запустить SPI в прерываниях, камень преткновения какой-то, в примерах не вижу подобного, сам не могу осилить который день.
Если вопрос в том, чтобы настроить прерывания от SPI, тогда нужно при инициализации записать в регистр IMSC маску прерываний (установить биты необходимых для работы прерываний). А также разрешить прерывания от SPI в контроллере прерываний Энвик. Например, при записи Энвик_EnableIRQ(SPI_RX_IRQn); будут разрешены прерывания от приемного буфера SPI.
С помощью битовых полей TXIFLSEL и RXIFLSEL регистра CR1 можно задать величину порога опустошения передающего и наполнения приемного буферов, после которой будет сгенерировано прерывание.
В программе обработчике прерываний необходимо будет произвести запись в регистр ICR для сброса прерывания.
Следует с осторожностью разрешать прерывания от передающего буфера, поскольку может начаться непрерываная генерация прерываний до тех пор, пока в передающем буфере не будет записано необходимое количество слов данных (в соответствии со значением поля TXIFLSEL).

Подробное описание регистров SPI приведено в руководстве пользователя (Приложение А.11).
Да, спасибо, я имел ввиду настройку! Спасибо, буду пробовать!
ches
Сообщения: 58
Зарегистрирован: 07 сен 2022, 17:08
Предприятие: АО НИИЭТ
Откуда: Воронеж

Re: 1921ВК035 (общие вопросы)

Сообщение ches »

Norty304 писал(а): 14 апр 2024, 10:04 Да, спасибо, я имел ввиду настройку! Спасибо, буду пробовать!
Попробуйте, если не заработает пишите сюда, желательно прилагая код
Norty304
Сообщения: 4
Зарегистрирован: 26 фев 2024, 11:26
Предприятие: УОМЗ

Re: 1921ВК035 (общие вопросы)

Сообщение Norty304 »

Vey_Shi писал(а): 02 апр 2024, 10:56
ches писал(а): 01 апр 2024, 16:48 Здравствуйте! Попробуйте сигналы HOLD и WP подтянуть к напряжению +3.3В через резисторы номиналом 10-100 КОм.
Подтянул эти выводы к 3,3 В через 33 кОма. На линии RX всё ещё помеха, совпадающая с сигналом SCK. Прикрепляю осциллограмму.
| Показать
WP, HOLD 3,3V.jpg
Добрый день! у меня ситуация аналогичная: микросхема памяти 1636рр52у. По линии MISO получается следующая картина:
1 1921вк035 не видит ответ микросхемы памяти.

2 Есть помеха на лииии. Методом проб и ошибок, подтяжкой к различным уровням разных выводов удалось достичь устранения помехи подключением конденсатора 0.1нФ между SCK и MISO (никакого обоснования не вижу и сам). После подключения конденсатора 1921вк035 видит ответ микросхемы, но судя по всему интерпретирует его неверно - осциллографом видно на линии 0х1С8 (id производителя в документации на 1636рр52у), читаю из буфера данных значение 0x81EC. Никакой связи не нахожу. Возможно конденсатор влияет на тайминги.

3 Микросхема отвечает, но уровень ответа, судя по осциллограмме от высокого 3.3В падает не до нуля ( в районе 1.7В). Пробник 1х. В связи с чем вопрос о логических уровнях, которые 1921вк035 стабильно воспринимает как 0 и как 1 (в документации не нашел).

С целью исключения влияния топологии платы подключил 1636рр52у от отладочной платы с 1921вк035. Картина та же.
Вложения
20240424_103126.jpg
20240424_103126.jpg (816.55 КБ) 607 просмотров
20240424_103115.jpg
20240424_103115.jpg (1.23 МБ) 607 просмотров
Ответить

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