Пытаюсь подключить дисплей о 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. В чем может быть дело? Неужели силы не хватает?