реклама на сайте
подробности

 
 
> Шина данных AT91RM
Cadavre
сообщение Mar 24 2011, 12:08
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 24-03-11
Пользователь №: 63 842



Здравствуйте!
Программирую готовое устройство на AT91RM9200. Нужно вручную управлять пинами шины данных контроллера (D0-D15/D16-D31) для связи с LCD. Выводами 16-31 удаётся управлять через PIO (порт С), а вот как быть с 0-15? Данные выводы не подключены к PIO-контроллеру, но в даташите в разделе Static Memory Controller (куда входят 0-15) написано, что всётаки можно ими управлять по-своему. Как?
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 13)
aaarrr
сообщение Mar 24 2011, 13:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(Cadavre @ Mar 24 2011, 15:08) *
Данные выводы не подключены к PIO-контроллеру, но в даташите в разделе Static Memory Controller (куда входят 0-15) написано, что всётаки можно ими управлять по-своему.

Где такое написано, цитату приведите.
Go to the top of the page
 
+Quote Post
Cadavre
сообщение Mar 24 2011, 14:15
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 24-03-11
Пользователь №: 63 842



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.

Так понимаю, что всётаки можно вручную ими управлять?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 24 2011, 14:20
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



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

Там же не сказано, что всеми. Младшими данными нельзя.
Go to the top of the page
 
+Quote Post
alexf
сообщение Mar 25 2011, 03:03
Сообщение #5


Местный
***

Группа: Свой
Сообщений: 420
Регистрация: 22-12-04
Пользователь №: 1 608



Поставьте защелку на данные, подключите соответствующий chip select и будет счастье. Надеюсь для LCD достаточно только на выход. Если еще и вход надо, то в параллель 74HC245 или типа того. Т.е. как с обычным процессором. Или мультиплексировать D16-D31.
Go to the top of the page
 
+Quote Post
Cadavre
сообщение Mar 25 2011, 14:54
Сообщение #6


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 24-03-11
Пользователь №: 63 842



Получилось вручную управлять ногами через макрос:

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

Кусочек кода этот я нашёл в одном примере. Тогда напрашивается у меня ещё вопрос: почему именно по адресу 0x40000000? Вроде как это начало области EBI (Chip Select3 / NANDFlash Logic), если я правильно понимаю. Как тогда определить адрес, например, для NCS2, также входящего в EBI?
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Mar 26 2011, 06:38
Сообщение #7


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(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 будет два обращения.
Go to the top of the page
 
+Quote Post
Cadavre
сообщение Mar 28 2011, 06:34
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 24-03-11
Пользователь №: 63 842



Не могли бы вы для новичка пояснить почему всётаки 0х30000000 для NCS2? rolleyes.gif и где найти информаию для остальных (NRD, NWR0, A1 и т.д.)?
Go to the top of the page
 
+Quote Post
VladislavS
сообщение Mar 28 2011, 13:14
Сообщение #9


Местный
***

Группа: Свой
Сообщений: 475
Регистрация: 14-04-05
Из: Москва
Пользователь №: 4 140



doc1768.pdf раздел 8.Memories На странице 17.
Go to the top of the page
 
+Quote Post
Cadavre
сообщение Mar 30 2011, 06:43
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 24-03-11
Пользователь №: 63 842



Как я понял, при записи/чтении числа на шину данных через 0x30000000, состояние ног NCS2, NRD и NWR0 изменяется автоматически или ими можно управлять также, записывая число по адресу в память? Вот, например, для управления LCD нужно вручную управлять выводом A1 (low - индекс. регистр, high - данные GRAM ЖК экрана), который идёт на LCD. Разбираюсь уже долго и никак не могу понять, как всё это укротить, чтобы формировать желаемые импульсы через D0-15, NCS2, NRD, NWR0 и A1?
Go to the top of the page
 
+Quote Post
Dron_Gus
сообщение Mar 30 2011, 07:30
Сообщение #11


Профессионал
*****

Группа: Свой
Сообщений: 1 202
Регистрация: 9-01-05
Из: Санкт-Петербург
Пользователь №: 1 861



Пишете по (базовый адрес + 0), шина адреса выставляет соответсвенно адрес 0х0, на шину данных выставляются данные, делается строб WR. Если Вы ходтите выставить A1 в 1 пишите в (базовый адрес + 0х2) и т.д.


--------------------
Если сверху смотреть, то сбоку кажется, что снизу ничего не видно.
Go to the top of the page
 
+Quote Post
DmitryM
сообщение Mar 30 2011, 16:48
Сообщение #12


Знающий
****

Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840



Цитата(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.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Mar 30 2011, 17:55
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Cadavre: выложите схему подключения вашего экрана и его название. Тогда можно будет давать предметные советы.
Go to the top of the page
 
+Quote Post
Cadavre
сообщение Apr 1 2011, 05:40
Сообщение #14


Участник
*

Группа: Участник
Сообщений: 15
Регистрация: 24-03-11
Пользователь №: 63 842



OLED на контроллере S6E63D6X, параллельный интерфейс 8080 16-бит. У меня получилось таки запустить экран и выводить изображение! Спасибо вам большое, без вас бы у меня ничего не вышло yeah.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 21st July 2025 - 10:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01642 секунд с 7
ELECTRONIX ©2004-2016