Господа, не поделитесь примером работы SAM7S с датафлэш AT45DB? А то чего то заводится не хочет. Или может подскажете по работе с SPI- 1.Как лучше работать с чип-селектом - а) посадить на отдельный пин, и дергать его(как в меге) или б)использовать регистр SPI_CSRx? 2.Если вариант б) то ессли я выставляю бит LASTXFER - то после передачи байта CS станет неактивным? 3. Не допонял зачем бит CSAAT.
У меня инициализация SPI такая void spi_init(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); }
Буду признателен за помощь. mail: slava(at)trace.ru ЗЫ.C TWI проблем не было, благо есть пример на сайте. если кому надо могу скинуть рабочую библиотеку для часов FM31xxx (Ramtron)
2aAdmin - а может создать топик как в AVR - с исходниками, люди уже наработали под АРМы много чего.
|