Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: SPI0 в режиме Master уходит в Disable при попытке отправить байт (AT91SAM7X128)
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Pasha 111
Всем привет!
Возникла у меня вот такая проблема, на которую потратил весь вчерашний день.

Использую SPI0 на AT91SAM7X128 в режиме Master для передачи байта устройству, висящему на NPSC3 (есть ещё другое на NPCS2, но с ним всё аналогично). Настраиваю ножки процессора для работы с периферией А (с включёнными pull-up'ами):
SPI0_NPCS2 (PA14)
SPI0_NPCS3 (PA15)
SPI0_MISO (PA16)
SPI0_MOSI (PA17)
SPI0_SPCK (PA18)

Вот настройки PIOA:


Дальше инициализирую SPI0. Всё нормально работает, пока на PA12 (SPI0_NPCS0) не установится низкий уровень.

Тогда после выполнения строчки:
Код
AT91C_BASE_SPI0->SPI_TDR = (frame & 0xFFFF) | (0x07 << 16) |
                AT91C_SPI_LASTXFER;

где frame = 0x06 - посылаемые данные,
состояние SPI0 меняется так:



SPIENS становится = 0, т.е. SPI0 переходит в disable. После этого SPI0 уже, естественно, не работает, и флаг AT91C_SPI_RDRF в Status Register не появляется. Причём изначально PA12 работал как порт ввода, когда на нём возникал низкий уровень происходил описанный глюк. Тогда я пошёл дальше, решил сделать его портом вывода. При установке на нём нуля происходит всё тоже самое! Как этот порт может влиять на SPI0, когда настроен как порт, а не как SPI0_NPCS0?

Да, на плате ещё используется SPI1, он нормально работает при этом. Если на PA12 высокий уровень, то SPI0 тоже нормально работает.

P.S. Порт PA12 идёт сразу в разъём, к нему только внешний PullUp подключается.
DIM
Установить бит "MODFDIS" в 1.
Иначе активный уровень CS воспринимается как запрос от другого мастера.
Ошибка должна уйти.
Pasha 111
Спасибо тебе, DIM, огромное!! Ошибка пропала!
Но получается, что это глюк проца, ведь при настройке PA12 как PIO на уровень этой ножки SPI0 реагировать ведь не должен, так?
DIM
Да, но происходит как происходит. Сам наелся.
Pasha 111
Да уж, могли бы в errat'е хотя бы написать.
Ладно, ещё раз спасибо за помощь!
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.