Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
Ответ: Пример полностью рабочей процедуры инициализации(у меня заработала)
Отправлено
Ильдар 29 марта 2007 г. 18:56
В ответ на:
SPI, AT91SAM7S и IAR отправлено
<font color=gray>Ильдар</font> 29 марта 2007 г. 14:01
static void init_SPI3(void)
{
// Configure SPI PIOs
AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, AT91C_PA11_NPCS0 | AT91C_PA12_MISO | AT91C_PA13_MOSI | AT91C_PA14_SPCK, 0);
// Configure PMC by enabling SPI clock
// AT91F_PMC_EnablePeriphClock(AT91C_BASE_PMC, 1 << (AT91C_ID_SPI));
AT91F_SPI_CfgPMC ();
AT91F_SPI_Reset(AT91C_BASE_SPI);
AT91F_SPI_CfgMode(AT91C_BASE_SPI, AT91C_SPI_MSTR | AT91C_SPI_PS_FIXED | AT91C_SPI_MODFDIS | ((0x10 << 24) & AT91C_SPI_DLYBCS));
AT91F_SPI_CfgPCS(AT91C_BASE_SPI, 0);
AT91F_SPI_CfgCs(AT91C_BASE_SPI, 0, AT91C_SPI_CPOL | AT91C_SPI_BITS_8 | ((0x40 << 8) & AT91C_SPI_SCBR) | //Serial Clock Baud Rate
(AT91C_SPI_DLYBS & (128 << 16)) |
((0x2 << 24) & AT91C_SPI_DLYBCT)); //Delay Between Consecutive Transfers
AT91F_SPI_Enable(AT91C_BASE_SPI);
}//посылка байта
static unsigned char spiSendByte(unsigned char dat)
{
AT91PS_SPI pSPI = AT91C_BASE_SPI;
while( !( pSPI->SPI_SR & AT91C_SPI_TDRE ) ); // transfer compl. wait
pSPI->SPI_TDR = dat;
//while( !( pSPI->SPI_SR & AT91C_SPI_RDRF ) ); // wait for char
return (unsigned char)( pSPI->SPI_RDR ); // it's important to read RDR here!
}
Составить ответ | Вернуться на конференцию
Ответы