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

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

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

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

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

Сообщение Vey_Shi »

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

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

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

Сообщение ches »

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

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

Сообщение Vey_Shi »

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

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

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

Сообщение ches »

Vey_Shi писал(а): 02 апр 2024, 11: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
Сообщения: 1
Зарегистрирован: 26 фев 2024, 12:26
Предприятие: УОМЗ

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

Сообщение Norty304 »

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

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

Сообщение ches »

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

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

Сообщение ches »

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

Подробное описание регистров SPI приведено в руководстве пользователя (Приложение А.11).
Ответить

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