Обмен данными при прошивке контроллера
-
WolfenShtein
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Ср дек 05, 2012 18:12:18
Обмен данными при прошивке контроллера
Доброго времени суток, друзья! Собственно, перейду сразу к делу. Меня давно жгёт вопрос: как работает JDM-программатор? Если конкретнее - как через него идёт обмен данными между RS232 и лапками контроллера DATA, CLOCK, Vpp? Вот у меня такая вот схемка программатора EXTRA PIC, которую, наверно, большинство знают. Линия DATA завязана через MAX232 на лапку DTR, линия CLOCK - на DSR+RTS, напряжение программирования берётся с TX, CTS идёт обратно к терминалу. Вопрос: в каком порядке передаются сигналы с RS232? Например: нам нужно передать бит "1". Как при этом формируются по сути служебные (кроме TX) сигналы COM-порта?
Про эти служебные лапки я знаю следующее:
DTR - Data Terminal Ready - выход, который говорит о том, что у терминала есть данные для передачи.
DSR - Data Set Ready - вход, который говорит, что устройство на другом конце линии готово передавать данные.
RTS - Request To Send - выход запроса на передачу.
CTS - Clear To Send - Разрешение Передатчику передавать данные.
TX - собственно передача данных.
При нуль-модемном соединении обмен данными, как я понимаю, такой: передатчик, когда хочет что-то передать, выставляет по DTR сигнал о наличии данных на передачу, приёмник посылает ему на вход DSR сигнал о своей готовности к обмену. Передаттчик тогда уже конкретно спрашивает, можно ли передать пакет данных установкой запроса по RTS, а приёмник ему отвечает, что да, давай - установкой CTS. Без сигнала на входе CTS передатчик, как было где-то указано, не может передавать данные. Поэтому, как я понял, в заглушке для порта DTR соединяется с DSR, а RTS - с CTS. Ну и TX с RX соответственно.
В JDM, судя по всему, этот принцип используется как-то по своему. Пробежав мутным взглядом по схемке я рискнул предположить следующее. Передача бита начинается с установки DTR, что формирует фронт импульса лог.1 на линии DATA. Одновременно (или чуть позже - вопрос) устанавливается линия RTS, сигнал с которой зачем-то идёт на DSR. Этот сигнал формирует фронт сигнала CLOCK. Практика подсказывает, что он должен формироваться позднее сигнала DATA и заканчиваться раньше. А также сигнал с DTR поступает обратно в порт на вход CTS. Исходя из того, что я нашёл в нете по протоколу RS232, только после этого на лапке TX сформируется напряжение, которое здесь подаётся на вход программирования. Вот как я понял эту схэму. Но такое чувство, что я ошибаюсь. Подскажите, пожалуйста, кто эту тему знает, как это всё работает? Четвёртую ночь уже заснуть толком не могу Я уже не спрашиваю, на кой там инверторы стоят после MAX232 - у неё они внутри должны быть по даташиту.
Про эти служебные лапки я знаю следующее:
DTR - Data Terminal Ready - выход, который говорит о том, что у терминала есть данные для передачи.
DSR - Data Set Ready - вход, который говорит, что устройство на другом конце линии готово передавать данные.
RTS - Request To Send - выход запроса на передачу.
CTS - Clear To Send - Разрешение Передатчику передавать данные.
TX - собственно передача данных.
При нуль-модемном соединении обмен данными, как я понимаю, такой: передатчик, когда хочет что-то передать, выставляет по DTR сигнал о наличии данных на передачу, приёмник посылает ему на вход DSR сигнал о своей готовности к обмену. Передаттчик тогда уже конкретно спрашивает, можно ли передать пакет данных установкой запроса по RTS, а приёмник ему отвечает, что да, давай - установкой CTS. Без сигнала на входе CTS передатчик, как было где-то указано, не может передавать данные. Поэтому, как я понял, в заглушке для порта DTR соединяется с DSR, а RTS - с CTS. Ну и TX с RX соответственно.
В JDM, судя по всему, этот принцип используется как-то по своему. Пробежав мутным взглядом по схемке я рискнул предположить следующее. Передача бита начинается с установки DTR, что формирует фронт импульса лог.1 на линии DATA. Одновременно (или чуть позже - вопрос) устанавливается линия RTS, сигнал с которой зачем-то идёт на DSR. Этот сигнал формирует фронт сигнала CLOCK. Практика подсказывает, что он должен формироваться позднее сигнала DATA и заканчиваться раньше. А также сигнал с DTR поступает обратно в порт на вход CTS. Исходя из того, что я нашёл в нете по протоколу RS232, только после этого на лапке TX сформируется напряжение, которое здесь подаётся на вход программирования. Вот как я понял эту схэму. Но такое чувство, что я ошибаюсь. Подскажите, пожалуйста, кто эту тему знает, как это всё работает? Четвёртую ночь уже заснуть толком не могу Я уже не спрашиваю, на кой там инверторы стоят после MAX232 - у неё они внутри должны быть по даташиту.
- Вложения
-
- EXTRA PIC.rar
- (220.88 КБ) 193 скачивания
- Реклама
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Обмен данными при прошивке контроллера
При этом порт собственно не выполняет свою функцию, программа дергает ножками чисто по своему усмотрению. Даже TX можно перевести в произвольное состояние, а на RX уловить установленный уровень, не напрямую управляя этими выводами. Часть из них вообще используется исключительно для определения наличия программатора.
-
WolfenShtein
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Ср дек 05, 2012 18:12:18
Re: Обмен данными при прошивке контроллера
А общение контроллера с прогой-прошивалкой, я так понимаю, одностороннее? Т.е. контроллер работает только на приём? По схеме (см. вложение) я вижу, что простейшая проверка на ошибку обмена там идёт через лапку CTS, так ведь?
- Вложения
-
- EXTRA PIC.rar
- (220.88 КБ) 171 скачивание
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Обмен данными при прошивке контроллера
Нет конечно, как он по твоему прошивки считывает? Там еще надо ожидать завершения операций по сигналу с контроллера(например окончание программирования ячейки, окончание процесса стирания), можно конечно и в одну сторону задержками с запасом, но будет медленнее и менее гарантированно.
- Реклама
-
WolfenShtein
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Ср дек 05, 2012 18:12:18
Re: Обмен данными при прошивке контроллера
Так, хорошо. Тогда по схеме выходит, что терминал, когда хочет принять что-то от контроллера, должен статус DTR скинуть в ноль. Линия CLOCK при этом остаётся однонаправленной (в сторону контроллера), т.е. общение синхронное. Так? А у тебя случайно нет чего-нить, где описан сам протокол программирования контроллера, например, того же Пика? Чтоб понятно было, какие там команды вначале шлются, какие данные? Я на эту тему просто сурьёзно подсел, очень хочется разобраться. Был бы крайне благодарен 
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Обмен данными при прошивке контроллера
На сайте микрочипа есть эта документация, когда-то тоже интересовался... но потом подумал, а зачем оно мне надо. Да и сейчас, уже STM32 на подходе.
-
WolfenShtein
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Ср дек 05, 2012 18:12:18
Re: Обмен данными при прошивке контроллера
На сайте есть? Эт хорошо, буду копать. А что STM32 за зверёк?
-
Alexeyslav
- Друг Кота
- Сообщения: 4550
- Зарегистрирован: Чт май 05, 2011 21:26:34
- Откуда: Украина, Славутич
- Контактная информация:
Re: Обмен данными при прошивке контроллера
http://www.compel.ru/2010/07/12/stm32f1 ... 2%80%93m3/
На основе высокопроизводительного ARM-ядра... и все это по цене контроллеров. Отладочная платка сразу включает в себя и программатор.
На основе высокопроизводительного ARM-ядра... и все это по цене контроллеров. Отладочная платка сразу включает в себя и программатор.
-
WolfenShtein
- Первый раз сказал Мяу!
- Сообщения: 24
- Зарегистрирован: Ср дек 05, 2012 18:12:18
Re: Обмен данными при прошивке контроллера
Круто! Спасибо, буду черепить 


