Миландр

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

Часовой пояс: UTC + 3 часа




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

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


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

Зарегистрирован: 2009-июл-21 14:13
Сообщения: 1355
Откуда: Тула
movAXBX писал(а):
пример реализации на 1986ве3 по rs-485. а то на демо плате по 232-му передачу и обмен отдельными байтами по имеющимся примерам и документации получилось, а с 485 затык.

А в чём, собственно, затык?
Если в переключении с передачи на приём, то да, вследствие природной кривизны тамошнего UART'a, не имеющего прерывания по окончанию передачи и снимающего флаг BUSY до окончания передачи стопового бита, реализация нормального полудуплекса становится не тривиальной и сильно зависящей от задачи. Хотя и на мегабите 485й поднять можно.

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


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

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


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

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

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


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

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

1. смотрю не только данные но и осцилографом.
3. что то шлю в порт отправляю.

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


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

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
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
Сообщения: 450
Цитата:
RST_CLK_PCLKcmd(RST_CLK_PCLK_UART1,ENABLE);

для UART есть тактирование, а для портов аналогичной ф-ции не видно.Может, действительно, тактирование портов не включено??

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

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


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

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
редактор писал(а):
Цитата:
RST_CLK_PCLKcmd(RST_CLK_PCLK_UART1,ENABLE);

для UART есть тактирование, а для портов аналогичной ф-ции не видно.Может, действительно, тактирование портов не включено??

тоже вопрос, для PORTI компилятор не пропустил включение тактирования.
Поэтому подозревая что я в корне не правильно взялся за решение и прошу пример работы с самим портом. А то с протоколами разобрался а с сами портом проблема. Тут товарищи-создатели чудесных микроконтроллеров часто появляются?


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

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 446
Откуда: ПКК "Миландр"
Тактирование, которое не включается функцией 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

_________________
Отдел технической поддержки support@milandr.ru


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

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


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

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 446
Откуда: ПКК "Миландр"
У меня на отладочной плате 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 в структуре, может поэтому и не работает.

_________________
Отдел технической поддержки support@milandr.ru


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

Зарегистрирован: 2019-май-06 01:06
Сообщения: 8
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
Сообщения: 446
Откуда: ПКК "Миландр"
В описании регистра PWR стр.139, значение 00 для пина означает зарезервировано. Это не значит что выход работает. Надо поставить хотя бы 01 - медленный фронт. В спецификации на 1986ВЕ9х написано более конкретно, 00 - передатчик отключен.

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

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

_________________
Отдел технической поддержки support@milandr.ru


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

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


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

Часовой пояс: UTC + 3 часа


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

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


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

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB