0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
1 | |
Как запрограммировать STM32f103c8t612.09.2024, 12:33. Показов 790. Ответов 26
Метки нет (Все метки)
Уважаемые форумчане!
Суть задачи в следующем. Имеется 4 у/з датчика (парктроник) Веста 2015г.в. Нужно визуализировать их работу на Андроид ММС. На STM32F103c8t6 инициализировал режим захвата на TIM2 иTIM4 + DMA. Данные с датчика имеют 8 бит. Далее следует передать по UART в ММС в формате B0;B1;B2;B3;B4;B5;B6;B7. B0;B1;B3 неизменяемые биты, B3;B4;B5;B6 данные с датчиков. B7==(B1+B2+B3+B4+B5+B6)^FF. Не могу врубиться, как это запрограммировать. С микроконтроллерами STM32 только сейчас начал заниматься. Может кто-либо помочь в этом вопросе. Заранее благодарен!
0
|
12.09.2024, 12:33 | |
Ответы с готовыми решениями:
26
Как начать программировать STM32F103C8T6 Как запрограммировать STM32f103c8t6 Как настроить GPIO для каналов ADC в stm32f103c8t6? Как запрограммировать в HTML...? |
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
27.09.2024, 12:23 [ТС] | 2 |
Уважаемые форумчане!
Суть задачи в следующем. Имеется 4 у/з датчика (парктроник) Веста 2015г.в. Нужно визуализировать их работу на Андроид ММС. На STM32F103c8t6 инициализировал режим захвата на TIM2 иTIM4 + DMA. Данные с датчика имеют 8 бит. Далее следует передать по UART в ММС в формате B0;B1;B2;B3;B4;B5;B6;B7. B0;B1;B3 неизменяемые биты, B3;B4;B5;B6 данные с датчиков. B7==(B1+B2+B3+B4+B5+B6)^FF. Не могу врубиться, как это запрограммировать. С микроконтроллерами STM32 только сейчас начал заниматься. Может кто-либо помочь в этом вопросе. Заранее благодарен!
0
|
3319 / 2420 / 550
Регистрация: 11.09.2009
Сообщений: 8,789
|
|
28.09.2024, 03:02 | 3 |
Так про В2 ничего не известно. А В3 - неизменяемый, и он же с датчика. Поэтому наверное и не получается:
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
30.09.2024, 17:34 [ТС] | 4 |
i8085, Спасибо, что отозвались. В теме допустил ошибку.
Далее следует передать по UART в ММС в формате B0;B1;B2;B3;B4;B5;B6;B7. B0;B1;B2; неизменяемые биты, B3;B4;B5;B6 данные с датчиков.
0
|
57 / 43 / 14
Регистрация: 12.12.2020
Сообщений: 439
|
||||||
30.09.2024, 17:38 | 5 | |||||
Как то так помоему
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
30.09.2024, 18:46 [ТС] | 6 |
Alex1126, B7 - контрольная сумма, при её расчете B0 не учитывается.
B0 - стартовый байт B1 - тип посылки B2 - длина (кол-во байт) B3;B4;B5;B6 - данные B7 - контрольная сумма. B7= (B1+B2+B3+B4+B5+B6)^FF. Все в шестнадцатеричной системе счисления.
0
|
57 / 43 / 14
Регистрация: 12.12.2020
Сообщений: 439
|
|
30.09.2024, 20:45 | 7 |
так биты или байты? Я уже запутался что надо. Вопрос то в чем?
Код
SendUart(B0); SendUart(B1); SendUart(B2); SendUart(B3); SendUart(B4); SendUart(B5); SendUart(B6); B7= (B1+B2+B3+B4+B5+B6) & FF. SendUart(B7);
0
|
3319 / 2420 / 550
Регистрация: 11.09.2009
Сообщений: 8,789
|
|
30.09.2024, 22:46 | 8 |
Вы на каком языке пишете? В нём разве не предусмотрена запись чисел в шестнадцатиричном виде?
В чём затык-то? В том, что это микроконтроллер 16-разрядный? Как байты в 16-битные слова упаковать?
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
01.10.2024, 10:20 [ТС] | 9 |
i8085, Не хочется засорять форум, если можно, то напишу в личку. Долгая история и последовательность размышления.
0
|
3319 / 2420 / 550
Регистрация: 11.09.2009
Сообщений: 8,789
|
|
01.10.2024, 11:52 | 10 |
Михаил 25, для долгих историй - форум. "Личка" для другого.
Попробуйте поднапрячься и объяснить поподробнее. Ну чесслово непонятно, что вы хотите спросить.
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
01.10.2024, 14:14 [ТС] | 11 |
i8085, Ситуация следующая. На автомобиле установлена ММС на Андроид. В ней есть возможность отображать парктроник на мониторе. Разъем Tx, Rx свободны. Был приобретен парктроник Canbox OPS-114. заявленный, как поддерживающий такую функцию. Сразу проверить не получилось т.к. находился в командировке, прошло 3 месяца. Когда приехал домой и подключил, визуализация отсутствует. Предъявлять претензии продавцу - поздно. Настройки адаптера can bus - соответствуют. Подключил ноут с Terminal 1.9b записал логи. Протокол не соответствует настройкам кан адаптера. Frame должен выглядеть так 2E;22;04;data1;data2;data3;data4;контр. сумма:
Получаю 2E;0xc0;0xe0;0xff;0xf0; checksum 0x07. Так, как контроллеры используемые в устройстве 2 шт. ноу-нейм, решил собрать блок визуализации на имеющемся штатном акустическом парктронике + блок на stm32f103c8t6 в режиме захвата. Беда в том, что у него канал захвата работает только с одним фронтом (восходящ. или падающ.) Для того чтобы вычислить время прохождения зондирующего + эхо сигнала, приходится использовать второй канал (indirect). С одного таймера получается только два канала парка. Чтобы получить 4 канала парка надо использовать еще один таймер,Tim3 или Tim4, но что-то в CubeIDE это не получается, по крайней мере у меня. Есть вариант запустить это через мультиплексор и использовать один таймер, но я что-то никак не могу себе представить, как это все связать. Время можно вычислить, произведя сброс счетчика и начав отсчет в момент фиксации падающего фронта, по приходу восходящего, происходит прерывание, счетчик останавливается, а результат заносится в DMA, в которой можно вычислить контрольную сумму и отправить по UART в ММС. Был бы помоложе, может быть было легче учиться, когда я учился информатики не было, а ЭВМ были на лампах. Извините за длинную тираду, пенсионерам учиться негде, в интернете могут научить светодиодом помигать, до Гитхаба еще не дорос.
0
|
3319 / 2420 / 550
Регистрация: 11.09.2009
Сообщений: 8,789
|
|
01.10.2024, 15:02 | 12 |
Насколько я понял, это лог, снятый ноутбуком с Canbox OPS-114?
То есть получается, что никакой информации о расстоянии датчик не выдаёт... Ну хана полная получается. Как из этой фиксированной последовательности байт получить информацию, если её там нет?! ... Никак. Может в датчик какой-нибудь код сначала вдуть надо, так сказать "отсосать", чтоб дальше полилось, извините за вульгарность? На датчик техническое описание какое-нибудь есть?
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
01.10.2024, 16:07 [ТС] | 13 |
i8085, Да, нет изменения присутствуют в зависимости от расстояния до препятствия, но я не вижу во фрейме ни типа посылки, ни длины данных в байтах. Частота импульсов, которые считает счетчик (расстояние) выше, соответственно данные приходят, которые ММС не понимает. Связь от основного блока до скажем адаптера передается по Lin, затем преобразуется в UART и передается в ММС. В адаптере Lin - Uart стоит 14 пиновый микроконтроллер без маркировки, похож на PIC16f505 или подобный, других 14 пиновых на ум не приходит. Может там по- другому ведется подсчет импульсов, не так как я представляю. Закономерность данных вычислил, при передаче через Terminal, срабатывают те сектора, какие хочу запустить.
2E, тип, длина данные, кс, где 2E — стартовый байт 22 — байт с типом посылки 04 — байт длины данные — данные кс — контрольная сумма, сумма всех байт помимо стартового, и в конце XOR FF.
0
|
ValeryS
|
01.10.2024, 20:34
#14
|
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
01.10.2024, 21:17 [ТС] | 15 |
ValeryS, Спасибо! Учту, на будущее.
0
|
3319 / 2420 / 550
Регистрация: 11.09.2009
Сообщений: 8,789
|
|
01.10.2024, 23:22 | 16 |
Если эта загадочная фраза означает, что вы с ноутбука при помощи Terminal 1.9b имитируете код с датчика вида "2E 22 04 data1 data2 data3 data4 контр. сумма" (8 байт), передавая его по UART в ММС, и можете правильно установить отображение, задавая data1 data2 data3 data4, то это значит, что вы точно знаете, что надо передавать по UART в ММС. Знаете, что и в каком формате должно содержаться в data1 data2 data3 data4. Это верно?
Если "да", тогда следующий вопрос: Означают ли фразы что 0xC0 0xE0 0xFF 0xFF - это те самые данные, в том же порядке, те самые 4 байта, которые можно вставить в посылку Terminal 1.9b, добавив спереди 0x2E 0x22 0x04, а сзади байт контрольной суммы, передать с него эти 8 байт в MMC, и тот их примет и правильно отобразит? Если "да", то получается ваш вопрос в том, как из последовательности из 6 (шести) байт 0x2E data1 data2 data3 data4 checksum_A сделать последовательность из 8 (восьми) байт 0x2E 0x22 0x04 data1 data2 data3 data4 checksum_B ? Так что ли? (Поверить не могу... ) Добавлено И ещё вопрос. Вы нигде последовательность битов младший-старший не путаете? Решил тут посчитать "checksum 0x07" для 0xc0;0xe0;0xff;0xf0; ... не получается. Простая сумма этих 4 байт равна 0x038F. Если отбросить старший байт, то 0x8F. Инвертируй, не инвертируй, ну никак у меня 0x07 не получается. 0x70, хоть убейся... Какой алгоритм подсчёта контрольной суммы? ?
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
02.10.2024, 00:41 [ТС] | 17 |
i8085,Знаете, что и в каком формате должно содержаться в data1 data2 data3 data4. Это верно?
По - первому вопросу да. Означают ли фразы что 0xC0 0xE0 0xFF 0xFF - это те самые данные, в том же порядке, те самые 4 байта, которые можно вставить в посылку Terminal 1.9b, добавив спереди 0x2E 0x22 0x04, а сзади байт контрольной суммы, передать с него эти 8 байт в MMC, и тот их примет и правильно отобразит? По - второму нет. Это не эначения, к которым в начале можно подставить 3 первых байта и к.с. Эти данные ММ не примет. Конвертировать через массивы не желательно. Поэтому и решил использовать родной блок парктроника добавив к нему своего рода адаптер на stm32 в режиме захвата внешнего сигнала. С увеличением расстояния увеличивается интервал между последним импульсом пачки ультразвука и приходом эхо сигнала, счетчик посчитает количество импульсов это и есть данные дистанции. Ну и с таймером картина вырисовывается буду использовать мультиплекс/ демультиплекс CD4051B, в этом случае будет использован один таймер, проще настройка Добавлено через 5 минут i8085, Чек сумму не я считал, это данные лог анализатора Sealea Logic. По мануалу Lin bus сумма всех байт и инверсия Добавлено через 20 минут i8085, Для моего случая: 2E;0x22;0x04;0x08;0x10;0x18;0x20 Check sum= 89 сумма всех байт помимо стартового B0 (2E), и в конце XOR FF. Добавлено через 23 минуты i8085, Хотел видео скинуть, но что-то не получается.
0
|
Модератор
8945 / 6711 / 921
Регистрация: 14.02.2011
Сообщений: 23,658
|
|
02.10.2024, 00:50 | 18 |
это же обыкновенная инверсия
=0x76
!0x76=0x89 0x76+0x89=0xFF Добавлено через 1 минуту в "расширеном режиме" есть теги Ютуба и Рутуба
0
|
3319 / 2420 / 550
Регистрация: 11.09.2009
Сообщений: 8,789
|
|
02.10.2024, 09:59 | 19 |
Воот. Однозначно понятно. Не те.
А вот дальше - зачем мне про парктроник с адаптером, если речь о формате числа? Тема сисек не раскрыта. © Понятно только, что числа не те. Вообще не те, нет в них информации о дистанции и никаким алгоритмом их нельзя преобразовать к нужным, т.е. датчик выдаёт ненужный числовой мусор, или есть такой алгоритм? Дальше вы перекинулись на временные интервалы, описание работы ультразвукового датчика расстояния, подсчёт импульсов... Это написано для чего? Вы будете делать свой датчик, с нужным "правильным" выходным протоколом? Попробуйте всё-таки ещё поднапрячься и описать кратенько и только по делу, что же за задачу решаем. Преобразование кодов или разработку датчика? Или что?
0
|
0 / 0 / 0
Регистрация: 25.07.2017
Сообщений: 16
|
|
02.10.2024, 15:58 [ТС] | 20 |
i8085, Честно, говоря, я уже больше склоняюсь сделать свой блок парктроника. с штатными датчиками.
Какие контроллеры стоят в этом приборе, как он считает мне неизвестно. Перепрограммировать в принципе можно, нужно будет иметь программатор + панельки для контроллера. Да и чувствительность штатных датчиков выше. Как-то так. Буду делать свой.
0
|
02.10.2024, 15:58 | |
02.10.2024, 15:58 | |
Помогаю со студенческими работами здесь
20
Как запрограммировать экспоненту Как запрограммировать кнопку... как запрограммировать EEPROM Как запрограммировать интеграл в C++ Как в 1С запрограммировать поиск? Как запрограммировать факториал на C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |