Major (09.03.2004 07:24, просмотров: 1) ответил sdy на Ну и вопросы у Вас. Такое мне в голову не приходило лет 5 уже как. Дма контроллер не может
Я наверное не правильно задал вопрос. В топике треп для того чтобы привить себе понимание. В гениальности инженеров не приходило в голову сомневаться :)
А вопросы от непонимания и недостатка опыта ДСП занимаюсь только второй месяц, а с DMA столкнулся фактически именно в нем.
Меня интересовало куда пишет контроллер DMA при работе на передачу в последовательный порт (внутренняя память« ввод-вывод через последовательный порт);
Просмотрел доку еще раз, на диаграмке нарисовано что он обращается к буферам FIFO последовательно порта (в чем и хотелось убедиться), это мне и надо.
Возвращаясь к последовательному порту, и непрерывной передаче данных: "Мнение: подгружается с опережением на 1/2 такта до окончания фрейма."
А вопрос вот в чем: Если загрузка данных происходит приблизительно за 0.5 такта, то получается что FIFO послед. порта на передачу фактически не используется? И если возникает блокировка на уровне ДМА, то образуется простой, которого могло бы и не быть за счет использования FIFO?
В моей модели например:
1. Заполнили все фифо.
2. как только буфер на передачу стал «не полный» подгружаются новые данные.
3. и так пока не передали все данные.
Но в документации на послед. порт сказано:
"Когда ТХ заполнен и предыдущее слово передано, его содержимое
автоматически загружается в выходной регистр сдвига. Когда регистр сдвига загружен, генерируется прерывание, указывающее, что буфер ТХ готов принять следующее слово (т. е. буфер ТХ «не полный»). Это прерывание не будет генерироваться, если разрешен DMA через последовательный порт или если установлен соответствующий бит маски в регистре IMASK."
То есть, в режиме ДМА режим "не полный" не использутся, косвенно указывая на то что FIFO последовательного порта в режиме DMA не используется.