Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: at91rm9200 проблема с SPI
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
strannyi
Имеется отладочная плата ARGUSSOFT AS-9200 v1.0

Настроил SPI и все зависящие модули, запускаю программу тестирования чтения/записи
буфера данных используя PDC. SPI настроил с loсal loopback Enable. Все работает, данные из буффера передаются, перерывания генерируются. Когда пытаюсь работать с внешними (loсal loopback disable) выходами(подрублена dataflash) ничего не получается, смотрю осциллографом, с SPI ниче не лезет, клока нет, данных нет. Возможно где-то я накосячил, подскажите пожалуйста где копать.

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

REG(AT91RM9200_PMC|PMC_PCER) = PID_MASK(PID_SPI)|PID_MASK(PID_PIOA);

REG(AT91RM9200_PIOA|PIO_PER) = SETBIT(0)|SETBIT(1)|SETBIT(2)|SETBIT(3)|
SETBIT(4)|SETBIT(5)|SETBIT(6);

REG(AT91RM9200_PIOA|PIO_ASR) = SETBIT(0)|SETBIT(1)|SETBIT(2)|SETBIT(3)|
SETBIT(4)|SETBIT(5)|SETBIT(6);

REG(AT91RM9200_SPI|SPI_CR) = SETBIT(1)|SETBIT(7);
REG(AT91RM9200_SPI|SPI_MR) = 0x9|SETBIT(4)|(0xE<<16)|(0xff<<24);
REG(AT91RM9200_SPI|SPI_CSR0) = 0xA|(0x0<<4)|(0xFF<<8);
REG(AT91RM9200_SPI|SPI_CR) = SETBIT(0);

REG(AT91RM3400_SPI|PERIPH_RPR) = (unsigned long)&buff_rx;
REG(AT91RM3400_SPI|PERIPH_RCR) = BUFF_SIZE;

REG(AT91RM3400_SPI|PERIPH_TPR) = (unsigned long)&buff_tx;
REG(AT91RM3400_SPI|PERIPH_TCR) = BUFF_SIZE;

REG(AT91RM3400_SPI|PERIPH_PTCR) = SETBIT(0)|SETBIT(8); // Enable PDC TX, Rx
REG(AT91RM3400_SPI|SPI_CR) = SETBIT(0); // Enable SPI
aaarrr
Цитата(strannyi @ May 28 2008, 11:40) *
REG(AT91RM9200_PIOA|PIO_PER)

Это включение PIO, а не периферии.
strannyi
Цитата(aaarrr @ May 28 2008, 11:44) *
Это включение PIO, а не периферии.


ой спасибо, стормозил
вопрос снят, все работает wink.gif
strannyi
А еще вопросик.

Как удержать CS в 0 после передачи блока данных?
Пробовал делать софтварный CS на том же пине, но тогда
не коректно работает SPI точнее вообще перестает работать.
KolyanV
Цитата(strannyi @ May 28 2008, 12:33) *
А еще вопросик.

Как удержать CS в 0 после передачи блока данных?
Пробовал делать софтварный CS на том же пине, но тогда
не коректно работает SPI точнее вообще перестает работать.


Регистр SPI_CSR0, бит CSAAT
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.