Миландр

Ключевым подразделением нашей компании
является Центр Проектирования интегральных микросхем
Текущее время: 2019-дек-10 10:42

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 14 сообщений ] 
Автор Сообщение
 Заголовок сообщения: RS-485
СообщениеДобавлено: 2019-июл-10 13:58 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
Возможно ли где посмотреть пример реализации на 1986ве3 по rs-485. а то на демо плате по 232-му передачу и обмен отдельными байтами по имеющимся примерам и документации получилось, а с 485 затык. и немного не понятен алгоритм работы с выходами (PORTI 13,14) управления приемо-передатчиком на демоплате. Заранее спасибо.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-10 14:38 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1390
Откуда: Тула
movAXBX писал(а):
пример реализации на 1986ве3 по rs-485. а то на демо плате по 232-му передачу и обмен отдельными байтами по имеющимся примерам и документации получилось, а с 485 затык.
А в чём, собственно, затык?
Если в переключении с передачи на приём, то да, вследствие природной кривизны тамошнего UART'a, не имеющего прерывания по окончанию передачи и снимающего флаг BUSY до окончания передачи стопового бита, реализация нормального полудуплекса становится не тривиальной и сильно зависящей от задачи. Хотя и на мегабите 485й поднять можно.

_________________
сочувствующий…


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-10 16:07 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
данные на выходе из порта вообще не вижу. Вот и начинаю сомневаться что код не правильно, или перемычки лишние или недоустановил на демоплате. уже даже просто передачу байта оставил, иди фиг даже видимости передачи на порту не вижу.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-10 17:06 
Не в сети

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1390
Откуда: Тула
Тогда нужно:
1. Проверить железо (по схеме, вольтметром, осциллографом);
2. Включить "физику" на передачу, убедиться в этом.
3. Циклично слать в порт что-то, проверить.
4 ....
5. PROFIT!

_________________
сочувствующий…


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-10 22:35 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
prostoRoman писал(а):
Тогда нужно:
1. Проверить железо (по схеме, вольтметром, осциллографом);
2. Включить "физику" на передачу, убедиться в этом.
3. Циклично слать в порт что-то, проверить.
4 ....
5. PROFIT!
1. смотрю не только данные но и осцилографом.
3. что то шлю в порт отправляю.

2,4,5 а зачем я прошу пример реализации, наверно что бы понять насколько мой код рабочий. и вот абсолютно бесполезный ваш ответ


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-10 22:43 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
PORT_InitTypeDef GPIO_user_iniCTRL;


GPIO_user_iniCTRL.PORT_FUNC=PORT_FUNC_PORT;
GPIO_user_iniCTRL.PORT_MODE=PORT_MODE_DIGITAL;
GPIO_user_iniCTRL.PORT_OE=PORT_OE_OUT;
GPIO_user_iniCTRL.PORT_Pin=PORT_Pin_All;
GPIO_user_iniCTRL.PORT_PULL_DOWN=PORT_PULL_DOWN_ON;
GPIO_user_iniCTRL.PORT_PULL_UP=PORT_PULL_UP_OFF;

PORT_Init (MDR_PORTI , &GPIO_user_iniCTRL);


//

PORT_ResetBits(MDR_PORTI , PORT_Pin_13);
PORT_SetBits(MDR_PORTI , PORT_Pin_14);
UART_SendData (MDR_UART1,countt );

код пытаюсь заставить работать на ДЕМОПЛАТЕ

PORT_InitTypeDef GPIO_user_ini;
UART_InitTypeDef uart_user_ini;

GPIO_user_ini.PORT_FUNC=PORT_FUNC_OVERRID; //PORT_FUNC_PORT;
GPIO_user_ini.PORT_MODE=PORT_MODE_DIGITAL;
// GPIO_user_ini.PORT_OE=PORT_OE_IN;
// GPIO_user_ini.PORT_Pin=PORT_Pin_3;
// GPIO_user_ini.PORT_PULL_DOWN=PORT_PULL_DOWN_OFF;
// GPIO_user_ini.PORT_PULL_UP=PORT_PULL_UP_OFF;
GPIO_user_ini.PORT_Pin=PORT_Pin_4;
GPIO_user_ini.PORT_OE=PORT_OE_OUT;
GPIO_user_ini.PORT_PULL_DOWN=PORT_PULL_DOWN_OFF;
GPIO_user_ini.PORT_PULL_UP=PORT_PULL_UP_OFF;
GPIO_user_ini.PORT_PD_SHM=PORT_PD_SHM_OFF;
GPIO_user_ini.PORT_PD=PORT_PD_DRIVER;


PORT_Init (MDR_PORTC,&GPIO_user_ini);

RST_CLK_PCLKcmd(RST_CLK_PCLK_UART1,ENABLE);

UART_BRGInit (MDR_UART1, UART_HCLKdiv1);

uart_user_ini.UART_BaudRate= 9600;
uart_user_ini.UART_FIFOMode=UART_FIFO_OFF;
uart_user_ini.UART_HardwareFlowControl=UART_HardwareFlowControl_TXE;
uart_user_ini.UART_Parity=UART_Parity_No;
uart_user_ini.UART_StopBits=UART_StopBits1;
uart_user_ini.UART_WordLength=UART_WordLength8b;


UART_Init (MDR_UART1, &uart_user_ini);
UART_Cmd (MDR_UART1, ENABLE);
//
while (runs=1) // LOOP
{
countt++;
PORT_ResetBits(MDR_PORTI , PORT_Pin_13);
PORT_SetBits(MDR_PORTI , PORT_Pin_14);
UART_SendData (MDR_UART1,countt );
}


этот код на демоплате данные на 485 не передает


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-11 08:59 
Не в сети

Зарегистрирован: 2010-авг-30 19:12
Сообщения: 465
Цитата:
RST_CLK_PCLKcmd(RST_CLK_PCLK_UART1,ENABLE);
для UART есть тактирование, а для портов аналогичной ф-ции не видно.Может, действительно, тактирование портов не включено??

_________________
О сколько нам открытий чудных
Готовит просвященья дух,
И опыт - сын ошибок трудных ... (Пушкин)

Пергаменты не утоляют жажду ("Фауст",Гете)


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-11 11:33 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
редактор писал(а):
Цитата:
RST_CLK_PCLKcmd(RST_CLK_PCLK_UART1,ENABLE);
для UART есть тактирование, а для портов аналогичной ф-ции не видно.Может, действительно, тактирование портов не включено??
тоже вопрос, для PORTI компилятор не пропустил включение тактирования.
Поэтому подозревая что я в корне не правильно взялся за решение и прошу пример работы с самим портом. А то с протоколами разобрался а с сами портом проблема. Тут товарищи-создатели чудесных микроконтроллеров часто появляются?


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-11 11:43 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 456
Организация: Milandr
Откуда: ПКК "Миландр"
Тактирование, которое не включается функцией RST_CLK_PCLKcmd(), включается функцией RST_CLK_PCLK2cmd(). Она прямо следующая объявлена в заголовочнике MDR32F9Qx_rst_clk.h библиотеки после RST_CLK_PCLKcmd().
Примеры работы с UART входят в состав библиотеки - C:\Keil_v5\ARM\PACK\Keil\MDR1986BExx\1.51\Examples\MDR1986VE3\UART

До кучи еще тут можно почитать:
https://startmilandr.ru/doku.php/prog:u ... o_sndarray
https://startmilandr.ru/doku.php/prog:uart:echo_rate


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-19 07:08 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
с тактитрованием разобрался, читая библиотеку чуть раньше. примеры из кейловской папки ни сильно помогают, вроде делаю также, передачи нет. В описании на отладочную плату сказано POrtI13 - разрешение выхода приемника (активный низкий логический уровень) PortI14- разрешение входа передатчика (активный высокий логичекий уровень). я уж и поочередно их переключал (что логично вроде) и одновременно. как их ставить что бы в конце концов что то увидеть на выходе порта. (может я конечно и не сильно прокачан но как то на stm32 кодил не сильно напрягаяс с физической настройкой портов и тп.- в доках и примерах было все понятно и бралось и практически копировалось. и я занимался алгоритмической начинкой тут же дискреты входы выходы, вход аналог заработали а вот с портами что то упускаю и уже не рад что повелся на импортозамещение)


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-19 11:31 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 456
Организация: Milandr
Откуда: ПКК "Миландр"
У меня на отладочной плате 2-й версии есть джампера TxEn, RxEn. Они подключают PI13 и PI14 к интерфейсной микросхеме. У вас они есть, установлены? Судя по схемотехнике должны быть - https://ic.milandr.ru/products/programm ... _1986ve3t/

Джамперами XP59 и XP60 выводы PC3 и PC4 необходимо подключить к RS485, а не RS232. Положения 2-3, как написано на плате.

Подтяжка для PORT_PULL_DOWN_ON для PortI не нужна. Пин в режиме драйвер выводит 0 и 1 сам. Инициализировать лишние биты в порте I не стоит.

Для PortI не задан PortInit.PORT_SPEED в структуре, может поэтому и не работает.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-19 14:34 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
Vasiliy писал(а):
У меня на отладочной плате 2-й версии есть джампера TxEn, RxEn. Они подключают PI13 и PI14 к интерфейсной микросхеме. У вас они есть, установлены? Судя по схемотехнике должны быть - https://ic.milandr.ru/products/programm ... _1986ve3t/

Джамперами XP59 и XP60 выводы PC3 и PC4 необходимо подключить к RS485, а не RS232. Положения 2-3, как написано на плате.

Подтяжка для PORT_PULL_DOWN_ON для PortI не нужна. Пин в режиме драйвер выводит 0 и 1 сам. Инициализировать лишние биты в порте I не стоит.

Для PortI не задан PortInit.PORT_SPEED в структуре, может поэтому и не работает.
ДЖамперы установлены, и на каждой итерации этой маеты перепроверяю.
с подтяжкой понятно. А устанавливать PI13 PI14 в 1,0, мне надо в зависимости от приема и передачи как? указание скорости понятно - доберусь до платы проверю. просто при работе дискретными выходами указание скорости не использовал насколько это может быть критично там же я просто приемопередатчики переключаю.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-июл-19 16:55 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 456
Организация: Milandr
Откуда: ПКК "Миландр"
В описании регистра PWR стр.139, значение 00 для пина означает зарезервировано. Это не значит что выход работает. Надо поставить хотя бы 01 - медленный фронт. В спецификации на 1986ВЕ9х написано более конкретно, 00 - передатчик отключен.

Если структура PortInit глобальная, а параметр .PORT_SPEED в коде не присваивается, то PWR будет 0 - PI13 и PI14 переключаться не будут. Если структура локальная, то там может быть произвольный мусор, что может отработать совсем непредсказуемо.

Приемник в сети RS485 может быть включен всегда, передатчик же необходимо отключать на время когда передает другой абонент. Для отладки поставьте оба сигнала PI13 и PI14 в активные уровни, как написано в описании к плате.


Вынести предупреждение
Вернуться к началу
 Заголовок сообщения: Re: RS-485
СообщениеДобавлено: 2019-авг-21 22:29 
Не в сети

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
Организация: freelance
для желающих повторить: ошибка во включении-выключении приемопередатчика как разберусь для себя и для ищуших отпишусь. "спасибо" отечественным производителям за интересные веччера


Вынести предупреждение
Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 14 сообщений ] 

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Быстрые действия:
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти: 

Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB