Миландр 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 | |
пример реализации на 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 | |
Тогда нужно:
1. смотрю не только данные но и осцилографом.1. Проверить железо (по схеме, вольтметром, осциллографом); 2. Включить "физику" на передачу, убедиться в этом. 3. Циклично слать в порт что-то, проверить. 4 .... 5. PROFIT! 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 есть тактирование, а для портов аналогичной ф-ции не видно.Может, действительно, тактирование портов не включено??Поэтому подозревая что я в корне не правильно взялся за решение и прошу пример работы с самим портом. А то с протоколами разобрался а с сами портом проблема. Тут товарищи-создатели чудесных микроконтроллеров часто появляются? |
Автор: | 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 | |
У меня на отладочной плате 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/ |