Миландр
https://forum.milandr.ru/

RS-485
https://forum.milandr.ru/viewtopic.php?f=38&t=4069
Страница 1 из 1

Автор:  movAXBX [ 2019-июл-10 13:58 ]
Заголовок сообщения:  RS-485

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

Автор:  prostoRoman [ 2019-июл-10 14:38 ]
Заголовок сообщения:  Re: RS-485

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

Автор:  movAXBX [ 2019-июл-10 16:07 ]
Заголовок сообщения:  Re: RS-485

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

Автор:  prostoRoman [ 2019-июл-10 17:06 ]
Заголовок сообщения:  Re: RS-485

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

Автор:  movAXBX [ 2019-июл-10 22:35 ]
Заголовок сообщения:  Re: RS-485

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

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

Автор:  movAXBX [ 2019-июл-10 22:43 ]
Заголовок сообщения:  Re: RS-485

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 не передает

Автор:  редактор [ 2019-июл-11 08:59 ]
Заголовок сообщения:  Re: RS-485

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

Автор:  movAXBX [ 2019-июл-11 11:33 ]
Заголовок сообщения:  Re: RS-485

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

Автор:  Vasiliy [ 2019-июл-11 11:43 ]
Заголовок сообщения:  Re: RS-485

Тактирование, которое не включается функцией 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

Автор:  movAXBX [ 2019-июл-19 07:08 ]
Заголовок сообщения:  Re: RS-485

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

Автор:  Vasiliy [ 2019-июл-19 11:31 ]
Заголовок сообщения:  Re: RS-485

У меня на отладочной плате 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 в структуре, может поэтому и не работает.

Автор:  movAXBX [ 2019-июл-19 14:34 ]
Заголовок сообщения:  Re: RS-485

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, мне надо в зависимости от приема и передачи как? указание скорости понятно - доберусь до платы проверю. просто при работе дискретными выходами указание скорости не использовал насколько это может быть критично там же я просто приемопередатчики переключаю.

Автор:  Vasiliy [ 2019-июл-19 16:55 ]
Заголовок сообщения:  Re: RS-485

В описании регистра PWR стр.139, значение 00 для пина означает зарезервировано. Это не значит что выход работает. Надо поставить хотя бы 01 - медленный фронт. В спецификации на 1986ВЕ9х написано более конкретно, 00 - передатчик отключен.

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

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

Автор:  movAXBX [ 2019-авг-21 22:29 ]
Заголовок сообщения:  Re: RS-485

для желающих повторить: ошибка во включении-выключении приемопередатчика как разберусь для себя и для ищуших отпишусь. "спасибо" отечественным производителям за интересные веччера

Страница 1 из 1 Часовой пояс: UTC+03:00
Powered by phpBB® Forum Software © phpBB Limited
https://www.phpbb.com/