kiko 0 20 февраля, 2008 Опубликовано 20 февраля, 2008 · Жалоба Пытаюсь подключить дисплей о S65 к sam7s64. Переписал код с примера для атмеги128, но естественно не работает ) вот код для меги: PORTB &= ~_BV(PB7); //LED DDRB |= _BV(PB7); PORTE &= ~_BV(LCD_RESET); DDRE |= _BV(LCD_RESET); PORTB |= _BV(LCD_MOSI); DDRB |= _BV(LCD_MOSI); PORTE &= ~_BV(LCD_CS); DDRE |= _BV(LCD_CS); PORTB &= ~_BV(LCD_SCK); DDRB |= _BV(LCD_SCK); PORTE |= _BV(LCD_RS); // not used from LPH display DDRE |= _BV(LCD_RS); // setup SPI Interface SPCR = _BV(MSTR) | _BV(SPE) | _BV(SPR0); SPSR = 1; // double speed bit void lcd_write(uint8_t dat) { SPDR= dat; while (!(SPSR & _BV(SPIF))); } void lcd_dat0(uint8_t dat) { lcd_write(dat); lcd_write(0x00); } void lcd_init(void) { uint8_t i; PORTE &= ~_BV(LCD_RESET); // reset display PORTE |= _BV(LCD_CS); // CS is high during reset release PORTE |= _BV(LCD_RS); // RS is set to high PORTE |= _BV(LCD_RESET); // release reset PORTE &= ~_BV(LCD_CS); // select display PORTE &= ~_BV(LCD_RS); lcd_dat0(DISON); PORTE |= _BV(LCD_CS); // deselect display } SPI на 2MHz вроде как работает. а вот для арма: pPIO->PIO_PER = lcdCS | lcdRS |lcdRES; pPIO->PIO_OER = lcdCS | lcdRS |lcdRES; pPMC->PMC_PCER = 1<<AT91C_ID_PIOA; pPIO->PIO_SODR = lcdRS; pPIO->PIO_PDR = mosi | miso | spck; pPIO->PIO_ASR = mosi | miso | spck; pPIO->PIO_BSR = 0; pPMC->PMC_PCER = 1<<AT91C_ID_SPI; pSPI->SPI_CR = AT91C_SPI_SPIEN | AT91C_SPI_SWRST; pSPI->SPI_MR = AT91C_SPI_MSTR; pSPI->SPI_CSR[PCS0]= (AT91C_SPI_BITS_8 * AT91C_SPI_BITS /0x0f) | (0x18 *AT91C_SPI_SCBR / 0xff ); pSPI->SPI_CR = AT91C_SPI_SPIEN; void lcdwr(u08 out) { out &= 0xFF; while(!(AT91C_BASE_SPI->SPI_SR & AT91C_SPI_TXEMPTY)); AT91C_BASE_SPI->SPI_TDR =out; } void lcd_dat(u08 dat){ lcdwr(dat); lcdwr(0x0); } void init_lcd_2(void){ pPIO->PIO_CODR = lcdRES; pPIO->PIO_SODR = lcdCS; pPIO->PIO_SODR = lcdRS; pPIO->PIO_SODR = lcdRES; pPIO->PIO_CODR = lcdCS; pPIO->PIO_CODR = lcdRS; lcd_dat(DISON); pPIO->PIO_SODR = lcdCS; } Ноги дергаются проверял, спи тоже работает (моси с мисо коротил смотрел что вернется), но дисплей игнорит. Задержки вставлял между командами, делал подтяжку всех ног на массу, потом на 3,3в безрезультатно. Плата олимекса sam7-p64. В чем может быть дело? Неужели силы не хватает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Neyron 0 20 февраля, 2008 Опубликовано 20 февраля, 2008 · Жалоба Ноги дергаются проверял, спи тоже работает (моси с мисо коротил смотрел что вернется), но дисплей игнорит. Задержки вставлял между командами, делал подтяжку всех ног на массу, потом на 3,3в безрезультатно. Плата олимекса sam7-p64. В чем может быть дело? Неужели силы не хватает? Работаю с картой ММС, SPI тоже работает, но проблема оказалась в SPI_CSR[], может, посмотрите бит NCPHA? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kiko 0 20 февраля, 2008 Опубликовано 20 февраля, 2008 · Жалоба В меге нету этого бита, так что в арме скорее всего тоже не надо, да и проблема всетаки в лапах, т.к. я пробывал дергать ими на арме, а команду слать с меги и все равно не работало. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АДИКМ 0 20 февраля, 2008 Опубликовано 20 февраля, 2008 · Жалоба В меге нету этого бита, так что в арме скорее всего тоже не надо, да и проблема всетаки в лапах, т.к. я пробывал дергать ими на арме, а команду слать с меги и все равно не работало. и sam7s и sam7x прекрасно работают с данным дисплеем... видать у моих "лапы" другие, тренированные... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Neyron 0 21 февраля, 2008 Опубликовано 21 февраля, 2008 · Жалоба В меге нету этого бита, так что в арме скорее всего тоже не надо, да и проблема всетаки в лапах, т.к. я пробывал дергать ими на арме, а команду слать с меги и все равно не работало. Имеется в виду не установка конкретного бита, а режим работы SPI (активный уровень CLK 0 или 1, фронт захвата данных и т.д.) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kiko 0 22 февраля, 2008 Опубликовано 22 февраля, 2008 (изменено) · Жалоба и sam7s и sam7x прекрасно работают с данным дисплеем... видать у моих "лапы" другие, тренированные... Может поделишься в таком случае инитом spi и лап? Изменено 22 февраля, 2008 пользователем kiko Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
АДИКМ 0 24 февраля, 2008 Опубликовано 24 февраля, 2008 · Жалоба Может поделишься в таком случае инитом spi и лап? Ну смотри - это для сам7с AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_PIOA) ; // enable the clock of the PIO AT91F_PMC_EnablePeriphClock ( AT91C_BASE_PMC, 1 << AT91C_ID_SPI) ; // enable the clock of the SPI AT91F_PIO_CfgOutput( AT91C_BASE_PIOA, AT91C_PIO_PA16 | AT91C_PIO_PA15 | AT91C_PIO_PA6) ; // Portpins output 17 AT91F_PIO_CfgPeriph(AT91C_BASE_PIOA, AT91C_PA12_MISO | AT91C_PA13_MOSI | AT91C_PA14_SPCK, AT91C_PA10_NPCS2 ); AT91F_SPI_CfgCs (AT91C_BASE_SPI,2,0x00000182); // pointer to a SPI controller, SPI cs number (0 to 3), Data to CSR Reg 182 AT91F_SPI_CfgMode (AT91C_BASE_SPI,0x30001); // Write to the MR register Master, CS 0 AT91F_SPI_Enable(AT91C_BASE_SPI); Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться