Есть у меня плата SK-9g45-oem и дисплей Nec NL10260BC19
Пишу программу на С (компилятор IAR).
Дошел до стадии инициализации дисплея.
Вроде бы запустил, однако есть маленькая проблема - дисплей сдвинут вправо на 8 пикселей. Не могу понять, куда копать.
Вот код инициализации:
Хочу сразу сказать, что дисплей не реагирует на сигналы Hsync и Vsync, их там нет в принципе, он работает только лишь с DE сигналом.
Подскажите, в каком направлении мне дальше двигаться?
мне почему-то не нравятся нули вот тут, хоть у вас и de-only режим..
если у вас самописное и есть консольная отладка, то проще и быстрее найти правильные цифры - это в онлайне покрутить регистры LCDC и контролировать по изображению на экране..
и еще - по TIM1, в доке написано • VHDLY: Vertical to horizontal delay
In TFT mode, this is the delay between LCDVSYNC rising or falling edge and LCDHSYNC rising edge. Delay is
(VHDLY+1) LCDDOTCK cycles. Bit 31 must be written to 1.
в моей трактовке, у вас пишется 0 (могу ошибаться)..
1.
The LCD DMA burst size in 32-bit words is programmed by BRSTLN field in DMAFRMCFG
register.
The LCD DMA Base Address is programmed in DMABADDR1 register.
The LCD DMA Base Address must be programmed with a value aligned onto LCD DMA burst
size, e.g.:
BRSTLN = 15
For a 16-word burst, the LCD DMA Base Address must start on a 16-word offset: 0x0, 0x40,
0x80 or 0xc0.
BRSTLN = 3
For a 4-word burst, the LCD DMA Base Address offset must start on a 4-word offset: 0x0, 0x10,
..., 0xf0.
То есть как я понял, необходимо адрес выровнять по необходимому размеру DMA Burst.
Но он у меня вроде бы совпадает...
2. неправильный сброс буфера
When a FIFO underflow occurs, a reset of the LCD DMA and FIFO pointers is necessary.
If only LCD DMA pointers are reset (FIFO pointers not reset), the displayed image is shifted.
Problem Fix/Workaround
Apply the following sequence to correctly reset LCD DMA and FIFO pointers:
• LCD power off
• DMA disable
• Wait for DMABUSY
• DMA reset
• LCD power on
• DMA enable.
Powering LCD off, then powering LCD on, resets the FIFO pointers.
Disabling DMA, then enabling DMA, resets the DMA pointers.
Интересно, почему вы считаете что в атмеловской эррате должно быть написано о том что вы неправильно инициализируете lcd и dma :) у атмела есть огромная библиотека с примерами для всей периферии - думаю есть смысл туда заглядывать, даташит все же не может содержать полную информацию.
Ха, а кто же тогда должен содержать полную информацию, как не даташит? и почему на SAM9261 есть упоминание, а тут нет?:) Но это уже вопросы к АТМЕЛУ...
А атмеловской библиотекой я не воспользовался, потому как нашел там косяк с определением частоты LCDC контроллера, плюс еще покопал и решил писать сам.