Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Шина данных AT91RM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Cadavre
Здравствуйте!
Программирую готовое устройство на AT91RM9200. Нужно вручную управлять пинами шины данных контроллера (D0-D15/D16-D31) для связи с LCD. Выводами 16-31 удаётся управлять через PIO (порт С), а вот как быть с 0-15? Данные выводы не подключены к PIO-контроллеру, но в даташите в разделе Static Memory Controller (куда входят 0-15) написано, что всётаки можно ими управлять по-своему. Как?
Спасибо.
aaarrr
Цитата(Cadavre @ Mar 24 2011, 15:08) *
Данные выводы не подключены к PIO-контроллеру, но в даташите в разделе Static Memory Controller (куда входят 0-15) написано, что всётаки можно ими управлять по-своему.

Где такое написано, цитату приведите.
Cadavre
18.5.1 I/O Lines
The pins used for interfacing the Static Memory Controller may be multiplexed with the PIO lines. The programmer must first program the PIO controller... и ещё they can be used for other purposes by the PIO controller.

Так понимаю, что всётаки можно вручную ими управлять?
aaarrr
Цитата(Cadavre @ Mar 24 2011, 17:15) *
Так понимаю, что всётаки можно вручную ими управлять?

Там же не сказано, что всеми. Младшими данными нельзя.
alexf
Поставьте защелку на данные, подключите соответствующий chip select и будет счастье. Надеюсь для LCD достаточно только на выход. Если еще и вход надо, то в параллель 74HC245 или типа того. Т.е. как с обычным процессором. Или мультиплексировать D16-D31.
Cadavre
Получилось вручную управлять ногами через макрос:

#define write_data(x) *((volatile unsigned short*)0x40000000) = (unsigned short)(x)

Кусочек кода этот я нашёл в одном примере. Тогда напрашивается у меня ещё вопрос: почему именно по адресу 0x40000000? Вроде как это начало области EBI (Chip Select3 / NANDFlash Logic), если я правильно понимаю. Как тогда определить адрес, например, для NCS2, также входящего в EBI?
DmitryM
Цитата(Cadavre @ Mar 25 2011, 17:54) *
Получилось вручную управлять ногами через макрос:

#define write_data(x) *((volatile unsigned short*)0x40000000) = (unsigned short)(x)

Кусочек кода этот я нашёл в одном примере. Тогда напрашивается у меня ещё вопрос: почему именно по адресу 0x40000000? Вроде как это начало области EBI (Chip Select3 / NANDFlash Logic), если я правильно понимаю. Как тогда определить адрес, например, для NCS2, также входящего в EBI?


Это не управление ногами, а вывод на шину данных числа х, соответсвенно все тайминги определяются настройками чипселекта в EBI SMC.
Для NCS2 адресс, соответственно, будет 0x30000000. Но, если чипселект определен как 8-битный, при выводе short будет два обращения.
Cadavre
Не могли бы вы для новичка пояснить почему всётаки 0х30000000 для NCS2? rolleyes.gif и где найти информаию для остальных (NRD, NWR0, A1 и т.д.)?
VladislavS
doc1768.pdf раздел 8.Memories На странице 17.
Cadavre
Как я понял, при записи/чтении числа на шину данных через 0x30000000, состояние ног NCS2, NRD и NWR0 изменяется автоматически или ими можно управлять также, записывая число по адресу в память? Вот, например, для управления LCD нужно вручную управлять выводом A1 (low - индекс. регистр, high - данные GRAM ЖК экрана), который идёт на LCD. Разбираюсь уже долго и никак не могу понять, как всё это укротить, чтобы формировать желаемые импульсы через D0-15, NCS2, NRD, NWR0 и A1?
Dron_Gus
Пишете по (базовый адрес + 0), шина адреса выставляет соответсвенно адрес 0х0, на шину данных выставляются данные, делается строб WR. Если Вы ходтите выставить A1 в 1 пишите в (базовый адрес + 0х2) и т.д.
DmitryM
Цитата(Cadavre @ Mar 30 2011, 10:43) *
Как я понял, при записи/чтении числа на шину данных через 0x30000000, состояние ног NCS2, NRD и NWR0 изменяется автоматически или ими можно управлять также, записывая число по адресу в память? Вот, например, для управления LCD нужно вручную управлять выводом A1 (low - индекс. регистр, high - данные GRAM ЖК экрана), который идёт на LCD. Разбираюсь уже долго и никак не могу понять, как всё это укротить, чтобы формировать желаемые импульсы через D0-15, NCS2, NRD, NWR0 и A1?


Что Вы собираетесь укорачивать??? Если у Вас LCD имеет интерфейс обычной статической памяти, то и пишите просто по заданным адресам, как уже сказали, BASE и BASE+1(2), зависит от обращения. Тайминги выставляются автоматом в соответствии с настройкой SMC.
aaarrr
Cadavre: выложите схему подключения вашего экрана и его название. Тогда можно будет давать предметные советы.
Cadavre
OLED на контроллере S6E63D6X, параллельный интерфейс 8080 16-бит. У меня получилось таки запустить экран и выводить изображение! Спасибо вам большое, без вас бы у меня ничего не вышло yeah.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.