Цитата(Metallist64 @ Jan 29 2017, 15:07)

Есть ли возможность использовать EMC (LPC1778) для управления LCD с шиной данных - 8 бит(контроллер KS108). НО без шины адреса (в таких вещах обычно отсутствует)?!
Чип KS108 кроме линий данных имеет управляющие сигналы:
команда/данные (rs)
чтение/запись (r/w)
активизация интерфейса (eс)
сброс (reset).
Одну линию адреса придётся повесить на rs, иначе не будет возможности разделить команды и данные.
Есть возможность для фокуса. Линия адреса не обязательно должна быть А0. Можно использовать старший адрес, в линкере назначить индикатору адресное пространство ниже на одну команду. Примерно так(пример для 16бит шины) :
LCD (rw): ORIGIN = 0x600FFFFC, LENGTH = 2M
-------
Код
.lcd (NOLOAD):
{
. = ALIGN(1);
_slcd = .; /* create a global symbol at ccmram start */
*(.Alcd)
*(.Alcd*)
. = ALIGN(1);
_elcd = .; /* create a global symbol at ccmram end */
} >LCD
----------
новая структура
Код
#define ALCD __attribute__((section(".Alcd")))
ALCD static struct
{
volatile uint16_t nc;
volatile uint16_t reg;
volatile uint16_t data;
}lcd; /// FMC_A19 LCD_RS
----------
Теперь доступна запись в индикатор
lcd.reg = 0xC1;
lcd.data = 0x41;
И небольшой фокус - запись потоком через дма, адрес для старта при этом &lcd.data. DMA будет автоматически увеличивать адрес, но для индикатора реально будет учитываться линия FMC_A19, которая постоянно будет в режиме "данные". Без перебирания адреса - шина может обнулить старые данные, даже если они не успели записаться.
Сообщение отредактировал IgorKossak - Jan 29 2017, 16:38
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!