|
|
  |
AT91SAM7S64 и SPI, Где проблема? |
|
|
|
Aug 15 2008, 18:27
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 3-07-07
Пользователь №: 28 861

|
Решил я заняться изучением АРМа – AT91SAM7S64. Написал в Кейле SPI инициализацию: Код AT91C_BASE_PMC->PMC_PCER = 1<<2 | 1<<5; //PIOA, SPI Peripheral Clock Enable AT91C_BASE_PIOA->PIO_PDR = 1<<11 | 1<<12 | 1<<13 | 1<<14; //Disables PIOA Control,enables peripheral control AT91C_BASE_PIOA->PIO_ASR = 1<<11 | 1<<12 | 1<<13 | 1<<14; //Peripheral A select T91C_BASE_SPI->SPI_MR = AT91C_SPI_MSTR | 14<<16; //Master mode | Fixed Peripheral Select - NPCS0, PCS = xxx0 NPCS[3:0] = 1110 AT91C_BASE_SPI->SPI_CSR[0] = 48<<8; //SPCK Baudrate AT91C_BASE_SPI->SPI_CR = 1; //SPI Enable
AT91C_BASE_SPI->SPI_TDR = 100; //Data Но ничего не сработало: SPI просто решил не запускаться (в SPI Status Register SPIENS = 0), в Logic Analyzer уровни линий NPCS0, MISO, MOSI, PSCK не разу не поменялись. Уже весь день пробую понять, в чём проблема? А она именно в этих строчках...
|
|
|
|
|
Aug 16 2008, 08:49
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 3-07-07
Пользователь №: 28 861

|
Цитата И старайтесь все же использовать символьные наименования битов буду стараться но MODFDIS не помогло. Я никак не могу понять, что в конце концов надо, чтобы запустить SPI и появилась галочка SPIENS в статус регистре? Код AT91C_BASE_PMC->PMC_PCER = AT91C_ID_PIOA | AT91C_ID_SPI; //PIOA, SPI Peripheral Clock Enable AT91C_BASE_PIOA->PIO_PDR = AT91C_PIO_PA11 | AT91C_PIO_PA12 | AT91C_PIO_PA13 | AT91C_PIO_PA14; //Disables PIOA Control,enables peripheral control AT91C_BASE_PIOA->PIO_ASR = AT91C_PIO_PA11 | AT91C_PIO_PA12 | AT91C_PIO_PA13 | AT91C_PIO_PA14; //Peripheral A select AT91C_BASE_SPI->SPI_CR = AT91C_SPI_SPIEN; или готовыми функциями: Код AT91PS_SPI SPI0 = AT91C_BASE_SPI;
AT91F_SPI_CfgPIO(); AT91F_SPI_CfgPMC(); AT91F_SPI_Enable(SPI0); результат тоже самый.
Сообщение отредактировал marcinio - Aug 16 2008, 08:49
|
|
|
|
|
Aug 16 2008, 11:36
|
Участник

Группа: Новичок
Сообщений: 42
Регистрация: 3-07-07
Пользователь №: 28 861

|
Попробовал данный код, ничего не изменилось. Проверяю и в симуляторе, и на железке - если SPIENS == 1, то засвечивается диод (жтага пока ещё нет). Я приложил свой проект, хоть там просто тот же самый код + while цикл с проверкой SPIENS.
SPI_Interface.zip ( 67.6 килобайт )
Кол-во скачиваний: 103
|
|
|
|
|
Aug 16 2008, 17:48
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(marcinio @ Aug 16 2008, 19:33)  Да, поже я проверил на железе - работает  Ну и зачем тогда надо было, ну скажем максимально мягко, - вводить в заблуждение: Цитата Попробовал данный код, ничего не изменилось. Проверяю и в симуляторе, и на железке Цитата Но почему такие простые действия не могут отображаться в симуляторе?  Потому, что Вы даже несколько сторочек не смогли написать, а с кого-то требуете некий симулятор который должен все понимать и работать
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|