Программирование STM8

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Ответить
Родился
Сообщения: 2
Зарегистрирован: Пн ноя 20, 2023 21:50:00

Сообщение А дольф »

Перестал работать компорт на электронной нагрузке EBC-A20 фирмы ZKE TECH. Реализован на STM8S 105K4T6C выводы 46 , 47 UART.
Эти выводы выведены наружу через резисторы 100 Ом вместе с общим проводом (минус питания). Далее эти три провода подключены через PROLIFIC-PL2303 (USB to Serial Bridge Controller) на USB для соединения с компютером.
ЦЕЛЬ-ВОССТАНОВИТЬ соединение.
АЛГОРИТМ-надеюсь что существует, подскажите!! Я=ЧАЙНИК.
Предположения : вышел из строя внутренний UART микросхемы. Надо ПЕРЕНЕСТИ код в исправную пустую микросхему. Такое ВОЗМОЖНО? Если ДА, то скажите что для этого надо. Чем считать и как записать? Не защищена ли микросхема от копирования? И если защищена , то можно ли взять у производителя прошивку ( обновление) и записать его в новую микруху?
Реклама
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="А дольф",url="/forum/viewtopic.php?p=4505793#p4505793"]Перестал работать компорт на электронной нагрузке EBC-A20 фирмы ZKE TECH. Реализован на STM8S 105K4T6C выводы 46 , 47 UART.
Эти выводы выведены наружу через резисторы 100 Ом вместе с общим проводом (минус питания). Далее эти три провода подключены через PROLIFIC-PL2303 (USB to Serial Bridge Controller) на USB для соединения с компютером.
ЦЕЛЬ-ВОССТАНОВИТЬ соединение.[/uquote]Что значит "перестал работать"? Как это определяете?
Выкинуть PL2303, заменить на другую. Лучше - на что-то из FT232xx или CP21xx. Так как PL2303 - гумно.
Реклама
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Martian",url="/forum/viewtopic.php?p=4506727#p4506727"]Из китайцев проще взять WCH340 - больше шансов на оригинал.[/uquote]Они вроде максимум 115200?
Конечно у автора STM8S и поэтому - маловероятно, что выше 115200, но вдруг?...

PS: Не люблю CH340. В мой 3D-принтер китайцы впендюрили CH340G (видимо с целью удешевления). Теперь отладочный лог из него на нормальной скорости не выплюнешь. :(
Грызет канифоль
Сообщения: 259
Зарегистрирован: Пн фев 10, 2014 19:40:03

Сообщение Pjatruha@mail.ru »

[uquote="А дольф",url="/forum/viewtopic.php?p=4505793#p4505793"]Такое ВОЗМОЖНО? Если ДА, то скажите что для этого надо. Чем считать и как записать? Не защищена ли микросхема от копирования? И если защищена , то можно ли взять у производителя прошивку ( обновление) и записать его в новую микруху?[/uquote]
Думаю, скачать прошивку с МК у вас не получиться, но можете попробовать. Для этого нужно установить программу ST Visual Programmer и купить программатор. Скачать программу можно на сайте производителя МК.
Вот тут можете посмотреть описание.
Если все же у вас не получиться скачать прошивку с МК, то просите прошивку у производителя устройства. Может быть он вам ее даст.
Реклама
Эиком - электронные компоненты и радиодетали
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Всем привет.
Хотел завести на STM8S103 SPI в режиме opendrain. Пока SPI выключен порт на котором MOSI так себя и ведет. Как только отправляю один байт по SPI, сразу переключается в пушпул и в нем остается пока SPI не выключу. Даже пробовал притянуть к нулю резистором, на 14мА четкая лог1.

У меня нечто подобное было на клоне STM32, он честно назывался CS32, только на USARTe. Я вот думаю, что у меня STM8 тоже клон. Две одинаковые платки одинаково себя ведут. Еще где то были чипы, можно попробовать перепаять.
Может у кого подобное было? Или может я чего не то делаю?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

С I2C не путаю. Скорость мне не нужна. Воткнул пока транзистор, видимо останется.
Из RM016
11.8 Output mode details
11.8.1 Alternate function output
Alternate function outputs provide a direct path from a peripheral to an output or to an I/O
pad, taking precedence over the port bit in the data output latch register (Px_ODR) and
forcing the Px_DDR corresponding bit to 1.
An alternate function output can be push-pull or pseudo-open drain depending on the
peripheral and Control register 1 (Px_CR1) and slope can be controlled depending on the
Control register 2 (Px_CR2) values.
Examples:
SPI output pins must be set-up as push-pull, fast slope for optimal operation.
Я перевел это так, переферия может работать в любом режиме, SPI должен быть настроен в пушпул для оптимальной работы. Но не написано что работает только в нем. Может я неправильно понял.
В Errata вроде как тоже ничего нет.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Реклама
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

В RM написано, периферия может работать в как в режиме пушпул, так и опендрей. Даже сделан акцент на это.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Martian писал(а):то там нет настройки GPIO для работы SPI
Так в этом же тексте и написано, что периферия перехватывает DDR и ODR. Что их настраивать.
При этом CR1 и CR2 остаются в распоряжении пользователя.
Но для MOSI настройки порта я по всякому попробовал, никакой разницы. Может скорость нарастания фронта работает, не проверял.

Добавлено after 6 minutes 17 seconds:
Z_h_e писал(а):Я вот думаю, что у меня STM8 тоже клон.
:dont_know: Так что все может быть очень просто.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Мудрый кот
Сообщения: 1855
Зарегистрирован: Вт авг 15, 2017 10:51:13

Сообщение jcxz »

[uquote="Martian",url="/forum/viewtopic.php?p=4519836#p4519836"]Проще говоря, когда Вы запускаете SPI, на выводе микроконтроллера параллельно с каким-то там GPIO_С_PIN2 появляется подсоединённый вывод MOSI, свойствами которого управлять невозможно, и если для SPI требуется пуш-пулл, то MOSI таким и будет, и если на GPIO_С_PIN2 открытый коллектор с подтягивающим резистором, то этот резистор будет просто параллелен верхнему ключу MOSI.[/uquote]Странное что-то рассказываете.... :shock: Откуда такие данные??
Вроде как схема IO-ног у STM8S вполне себе обычная - подобная другим МК. Схему можно найти в RM:
Изображение
Как видно - и GPIO-out и вывод "alternate function" - идут по одному и тому же пути, через единый мультиплексор. И управлять ногой должны одинаково.

[uquote="Martian",url="/forum/viewtopic.php?p=4519836#p4519836"]когда на одном выводе несколько GPIO[/uquote]Это как это - "несколько GPIO на одном выводе"??? Можно ссылку?

Добавлено after 4 minutes 22 seconds:
[uquote="Z_h_e",url="/forum/viewtopic.php?p=4519857#p4519857"]Но для MOSI настройки порта я по всякому попробовал, никакой разницы. Может скорость нарастания фронта работает, не проверял.[/uquote]А не пробовали - остановить CPU отладчиком в тот момент, когда вывод (работающий в режиме SPI) вдруг самопроизвольно стал push-pull. И проверить содержимое всех регистров управления GPIO?
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Я сейчас не вспомню точно что именно пробовал. Вот, сделал сейчас
Изображение

Добавлено after 5 minutes 46 seconds:
jcxz писал(а): в тот момент, когда вывод (работающий в режиме SPI) вдруг самопроизвольно стал push-pull
Этот момент становится от начала передачи и возвращается к настройкам порта только при выключении SPI.

Добавлено after 5 minutes 29 seconds:
Если SPI закончил передачу на 1, он порт останется в pullup, если 0, то pulldown.
Вложения
Снимок.PNG
(2.67 КБ) 657 скачиваний
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Поставщик валерьянки для Кота
Сообщения: 1988
Зарегистрирован: Сб май 05, 2012 20:24:52
Откуда: KN34PC, Болгария

Сообщение veso74 »

В какой среде пишете код и как огранзирован SPI - со стандартной библиотекой, другим способом? Дайте хотя бы фрагмент кода того, что сделали. Делаете это ради потребления или по другим причинам? Какова скорость передачи данных по шине?

Бы использовал стандартный SPI (push-pull) , после отправки данных бы освободл шину и бы установл GPIO так, как хотим (в pull up/down ?). По новой отправке: новую инициализацию, отправка и новое отключение. Или бы создал свой собственный программный SPI, который работает по своему усмотрению.
Последний раз редактировалось veso74 Чт дек 21, 2023 22:44:26, всего редактировалось 2 раза.
Контактная информация:
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

veso74, у меня пока вопрос не как реализовать, а почему не работает как написано в RM. Или может как правильно прочитать RM.
veso74 писал(а):Дайте хотя бы фрагмент кода того, что сделали.
Ну какой там код, один регистр настроек. Держите

Код: Выделить всё

  CLK_PCKENR1|=1<<1; //тактирование SPI  

  SPI_CR1=
    (0x6<<3) |               //предделитель на 128       
    MASK_SPI_CR1_MSTR |         //режим мастера
    //MASK_SPI_CR1_CPOL | //исходное состояние SCK высокий уровень
    //MASK_SPI_CR1_CPHA |  
    0;
  
  SPI_CR1|=MASK_SPI_CR1_SPE;          //включить 
Как только что-то положить в SPI_DR, сразу порт MOSI работает в пушпул.

Добавлено after 10 minutes 42 seconds:
Сейчас на UART попробовал. Как-только включаешь бит разрешения передачи, еще ничего не передавая, порт Tx сразу в pull_up. Настройки порта не трогал.
Я думаю надо дождаться камрада Martian, с его точно оригинальными STM8.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Я так понимаю, в осциллограммах надо обращать внимание на крутизну фронтов.
Martian писал(а):Резисторы 1 кОм
А если его притянуть к нулю? Это должно "обнулить" первую осциллограмму и никак не повлиять на вторую.
Martian писал(а):позже я проверю на честном STM8S103
Даже не знаю какому результату потом радоваться )).
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Martian писал(а):А вот с пуш-пулл мне жалко притягивать к нулю :)
А что ему будет через 1кОм то? Но смысла нет вроде как нет.
Martian писал(а):(внутренний тоже выключен)
На STM8L можно внутренний резистор включить в режиме выхода?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Martian писал(а):А, через резистор
Так и в первом случае через резистор надо, иначе какой смысл :)
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

СпойлерИзображение
Пушпуш будет работать на обоих схемах.
Открытый сток только на левой, если заработает на обеих, то это пушпул.
Именно для этой проверки я предлагал притянуть резистор к нулю.
Martian писал(а):впрочем, его нет, даже если не притягивать, а убрать резистор
Но и этого уже думаю достаточно. И по осциллу видно что сигналы разные.
Вложения
пушпуш.png
(12.64 КБ) 358 скачиваний
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Я спать. )))
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Martian писал(а):Рано ещё ))
У мну 5 утра уже было. Так что было не еще, а уже ))

Странные дела конечно. Такую фичу в еррату полюбасу надо было включать.
Или может у нас не та мазь для лыж :dont_know: :)
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

STM8S103F3 (тот что на 20 пинов).
При занятости портов C6 и C7 (это могли бы быть TIM1_CH1 и TIM1_CH2), я же не могу аппаратно запустить TIM1, не упускаю какой-то возможности для этого?
Именно эти порты освободить не могу.
Спасибо.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Собутыльник Кота
Аватара пользователя
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Сообщение Z_h_e »

Martian писал(а):не совсем понятно под аппаратно
Уточняю, сорри за неточный вопрос. Хочу включать таймер (запускать счет) от внешнего импульса. Пока вижу решение от внешнего прерывания, временные ресурсы для этого есть. Но если я упускаю возможность запуска таймера без участия программы, то будет обидно.
Martian писал(а):то их можно взять с PC3 и 4
Вот я на них и смотрю. Но по структурной схеме в RM, я не вижу что их можно использовать как триггер для запуска таймера. Если можно, так как?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

Вернуться в «Разные вопросы по МК»