Перейти к содержанию
    

ноги у sam7s64

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Ноги дергаются проверял, спи тоже работает (моси с мисо коротил смотрел что вернется), но дисплей игнорит. Задержки вставлял между командами, делал подтяжку всех ног на массу, потом на 3,3в безрезультатно. Плата олимекса sam7-p64. В чем может быть дело? Неужели силы не хватает?

 

Работаю с картой ММС, SPI тоже работает, но проблема оказалась в SPI_CSR[], может, посмотрите бит NCPHA?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В меге нету этого бита, так что в арме скорее всего тоже не надо, да и проблема всетаки в лапах, т.к. я пробывал дергать ими на арме, а команду слать с меги и все равно не работало.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В меге нету этого бита, так что в арме скорее всего тоже не надо, да и проблема всетаки в лапах, т.к. я пробывал дергать ими на арме, а команду слать с меги и все равно не работало.

 

и sam7s и sam7x прекрасно работают с данным дисплеем...

видать у моих "лапы" другие, тренированные...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В меге нету этого бита, так что в арме скорее всего тоже не надо, да и проблема всетаки в лапах, т.к. я пробывал дергать ими на арме, а команду слать с меги и все равно не работало.

Имеется в виду не установка конкретного бита, а режим работы SPI (активный уровень CLK 0 или 1, фронт захвата данных и т.д.)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

и sam7s и sam7x прекрасно работают с данным дисплеем...

видать у моих "лапы" другие, тренированные...

Может поделишься в таком случае инитом spi и лап?

Изменено пользователем kiko

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может поделишься в таком случае инитом 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);

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...