1 (02-07-2024 11:11:38 отредактировано opel009)

Тема: UART-активация K-line-тайминги

Здравствуйте.
Пытаюсь "общаться" с K-line авто
В диагностику "достучался", активация K-line - отправка запроса-ответ
запросы отправляются с периодичностью 6мс, активация кнопкой
00            52ms активация
68             6ms запрос
6A             6ms
F0             6ms
81             6ms
43            32ms
48             5ms ответ блока
6B             5ms
10             5ms
C1             5ms
08             5ms
08             5ms
пытаюсь сделать тоже самое, отправить запрос на программирование, но там периодичность отправки 1мс, в итоге получаю хаотичную отправку
00           80 ms   80 активация 
00  факт    1ms   00 что должно быть
00             1ms   00
00             1ms   00
74             1ms   13
BD             1ms   00
00             1ms   00
00             1ms   03
74             1ms   00
BD             1ms   74
00             1ms   F1
13             1ms   55
74             1ms   DB
причем в симуляторе все ок, момент отправки сообщения почему-то "перепрыгивает" через несколько значений. Подозреваю что это связанно с выполнением контроллером других действий. Как настроить отправку в UART с переодичностью 1мс?

Вложений в сообщении

Иконка вложения 9600 передача запроса K-line для програмирования7.2.cfd 6.59 кб, скачивался 26 раз, последний раз 2024-07-02 

Иконка вложения передача запроса K-line 7.2.cfd 5.62 кб, скачивался 25 раз, последний раз 2024-07-02 

2

Re: UART-активация K-line-тайминги

Вы уверены, что наблюдаемые вами паузы в 5 мс и 1 мс являются именно максимально допустимыми?
Минимальное известное мне ограничение на паузу между байтами в сообщении k-line составляет 20 мс.

Для сокращения пауз в вашем случае могу лишь рекомендовать передавать весь пакет k-line одной посылкой UART, как это и происходит во всех известных мне реализациях.

Что касается:

Как настроить отправку в UART с переодичностью 1мс?

то боюсь, что на данный момент не могу порекомендовать надежного способа работающего при любых условиях. См. п.9 здесь: https://canny.ru/docs/tips_tricks/solut … ents_tips/

3 (15-07-2024 21:57:20 отредактировано opel009)

Re: UART-активация K-line-тайминги

Спасибо за подсказку, да пакетом проще
Но возникла другая сложность, последний байт передается некорректно, почему?
например в диаграмме во вложении
UART1 D9 D8  0*CC55 по факту передает 0*EC55
UART1 D9 D8  0*9955 по факту передает 0*FD55
UART1 D9 D8  0*A155 по факту 0*FD55
итд
пробовал увеличивать/уменьшать время передачи, либо не отправляет последний байт либо добавляет еще данных
пробовал по другому, генератором организовывать отправку, та же картина, мониторить получаемые данные другими способами например терминалом, все то же

Вложений в сообщении

Иконка вложения 9600 передача запроса K-line для програмирования7.2.cfd 4.9 кб, скачивался 20 раз, последний раз 2024-07-15 

скрин.jpg, 31.42 кб, 708 x 382
скрин.jpg 31.42 кб, скачивался 21 раз, последний раз 2024-07-15 

4

Re: UART-активация K-line-тайминги

Но возникла другая сложность, последний байт передается некорректно, почему?

Потому что вы не даете UART завершить передачу изменяя настройки драйвера UART раньше чем передача завершается.

например в диаграмме во вложении

см.пример хорошего вопроса: https://forum.canny.ru/viewtopic.php?pid=9810#p9810