Easyelectronics.ru

Электроника для всех
Текущее время: 25 июн 2019, 21:16

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 8 ] 
Автор Сообщение
 Заголовок сообщения: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 17 дек 2018, 16:39 
Только пришел

Зарегистрирован: 18 дек 2012, 01:38
Сообщения: 13
Здравствуйте уважаемые форумчане. Пытаюсь связать два микроконтроллера по шине LIN. В качестве мастера выбрал контроллер STM8S103F3P6 (Его Usart умеет только LIN MASTER). В качестве ведомого выбрал STM8S208RBT6 (У него 2 Усарта, один из которых умеет быть ведомым LIN) Собрал на двух макетных платах. LIN трансивер TJA1020 Прием и передача работают нормально. Но как дошло дело до защиты от потери линии связи, тут возникли проблемы. После обрыва линии связи и ее восстановления связь возобновляется. Но вот после короткого замыкания шины LIN ведомое (SLAVE) устройство намертво виснет. Точнее виснет в обработчике прерывания от USART3. Я пытался принудительно очистить флаг приема по узарту (UART3_FLAG_RXNE) и флаг приема хедер байта (UART3_FLAG_LHDF). А также скидывал флаг брэйк байта (UART3_FLAG_LBDF). Ничего не помогает программа не возвращается из прерывания по приему от USART_3. Но зато если в этот момент с ведущего устройства снова подать команду, то работоспособность ведомого устройства восстанавливается. Тоже самое помогает, если в обработчике прерывания по USART_3 принудительно подать рандомную команду на передачу. То есть, так как линия одна, она сама свою же команду и принимает, получается. Вроде все нормально, но как то коробит такой колхозный способ защиты от короткого замыкания шины. Подскажите, может я забываю еще какой нибудь скинуть флаг при случае коротыша на линии LIN или есть еще каrой нибудь правильный способ обойти защиту от потери связи после кратковременного замыкания на шине. Надеюсь тут есть люди, которые что-то делали с шиной LIN ?

Прилагаю инициализацию для мастер устройства
[color=#FF0000]UART1_Init( 9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
UART1_LINBreakDetectionConfig( UART1_LINBREAKDETECTIONLENGTH_11BITS);
UART1_ITConfig( UART1_IT_RXNE_OR, ENABLE);
UART1_LINCmd( ENABLE);
enableInterrupts();

И для Ведомого устройства
UART3_Init( 9600, UART3_WORDLENGTH_8D, UART3_STOPBITS_1, UART3_PARITY_NO, UART3_MODE_TXRX_ENABLE);
UART3_LINConfig( UART3_LIN_MODE_SLAVE, UART3_LIN_AUTOSYNC_ENABLE,UART3_LIN_DIVUP_LBRR1);
UART3_LINBreakDetectionConfig( UART3_LINBREAKDETECTIONLENGTH_11BITS);
UART3_ITConfig( UART3_IT_RXNE_OR, ENABLE);
UART3_ITConfig( UART3_IT_LBDF, ENABLE);
UART3_ITConfig( UART3_IT_LHDF, ENABLE);
UART3_LINCmd( ENABLE);
enableInterrupts();

А также обработчик прерывания для ведомого устройства
//Обработчик прерывания для UART3.
INTERRUPT_HANDLER( UART3_RX_IRQHandler, 21)
{
if( UART3_GetFlagStatus( UART3_FLAG_LHDF)){recUART3_Header=UART3_ReceiveData8(); UART3_ClearFlag(UART3_FLAG_LHDF);}
if( UART3_GetFlagStatus( UART3_FLAG_RXNE)){recUART3_Data=UART3_ReceiveData8(); UART3_ClearFlag(UART3_FLAG_RXNE);}
if( UART3_GetFlagStatus( UART3_FLAG_LBDF)){ UART3_ClearFlag( UART3_FLAG_LBDF);}
if( UART3_GetFlagStatus(UART3_FLAG_OR_LHE)){UART3_SendData8(0x00);UART3_ClearFlag(UART3_FLAG_OR_LHE);}// Отправляю пустую команду через USART_3
}


Последний раз редактировалось megavolt3101 17 дек 2018, 18:35, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 17 дек 2018, 16:54 
Старожил
Аватара пользователя

Зарегистрирован: 14 апр 2014, 11:06
Сообщения: 1515
Откуда: Курск
https://ru.wikipedia.org/wiki/BBCode


Последний раз редактировалось Cthulhu 17 дек 2018, 17:11, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 17 дек 2018, 16:58 
Только пришел

Зарегистрирован: 18 дек 2012, 01:38
Сообщения: 13
Прошу прощения, я здесь новичок, поэтому разместил немного не по правилам, не указал код в теги. Прошу не ругать сильно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 17 дек 2018, 18:32 
Старожил

Зарегистрирован: 11 сен 2012, 11:19
Сообщения: 5428
Незнание не освобождает от ответственности.
А красный цвет всегда был прерогативой администрации


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 17 дек 2018, 18:35 
Только пришел

Зарегистрирован: 18 дек 2012, 01:38
Сообщения: 13
Исправил


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 30 дек 2018, 00:46 
Заглядывает иногда

Зарегистрирован: 27 сен 2012, 17:14
Сообщения: 59
в отладчике разве не видно какие флаги вызывают прерывание ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 30 дек 2018, 00:58 
Заглядывает иногда

Зарегистрирован: 27 сен 2012, 17:14
Сообщения: 59
в даташите на трансивер TJA1020 указано Protections-Transmit data (TXD) dominant time-out function(20ms) то есть кз на массу должен вызвать поднятие Break флага.

Также в даашите указано наличие защиты от замыкания на плюс (Bus terminal short-circuit proof to battery and ground) вы не испытывали при кз на питание- передачу данных ? как на это реагирует трансивер? нагрев?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Помогите разобраться с LIN шиной STM8S
СообщениеДобавлено: 30 дек 2018, 01:13 
Заглядывает иногда

Зарегистрирован: 27 сен 2012, 17:14
Сообщения: 59
попробуйте в прерывании проверять флаг LSF. и сбрасывать его .


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

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


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB