Перестал работать компорт на электронной нагрузке EBC-A20 фирмы ZKE TECH. Реализован на STM8S 105K4T6C выводы 46 , 47 UART.
Эти выводы выведены наружу через резисторы 100 Ом вместе с общим проводом (минус питания). Далее эти три провода подключены через PROLIFIC-PL2303 (USB to Serial Bridge Controller) на USB для соединения с компютером.
ЦЕЛЬ-ВОССТАНОВИТЬ соединение.
АЛГОРИТМ-надеюсь что существует, подскажите!! Я=ЧАЙНИК.
Предположения : вышел из строя внутренний UART микросхемы. Надо ПЕРЕНЕСТИ код в исправную пустую микросхему. Такое ВОЗМОЖНО? Если ДА, то скажите что для этого надо. Чем считать и как записать? Не защищена ли микросхема от копирования? И если защищена , то можно ли взять у производителя прошивку ( обновление) и записать его в новую микруху?
[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 - гумно.
[uquote="Martian",url="/forum/viewtopic.php?p=4506727#p4506727"]Из китайцев проще взять WCH340 - больше шансов на оригинал.[/uquote]Они вроде максимум 115200?
Конечно у автора STM8S и поэтому - маловероятно, что выше 115200, но вдруг?...
PS: Не люблю CH340. В мой 3D-принтер китайцы впендюрили CH340G (видимо с целью удешевления). Теперь отладочный лог из него на нормальной скорости не выплюнешь.
[uquote="А дольф",url="/forum/viewtopic.php?p=4505793#p4505793"]Такое ВОЗМОЖНО? Если ДА, то скажите что для этого надо. Чем считать и как записать? Не защищена ли микросхема от копирования? И если защищена , то можно ли взять у производителя прошивку ( обновление) и записать его в новую микруху?[/uquote]
Думаю, скачать прошивку с МК у вас не получиться, но можете попробовать. Для этого нужно установить программу ST Visual Programmer и купить программатор. Скачать программу можно на сайте производителя МК. Вот тут можете посмотреть описание.
Если все же у вас не получиться скачать прошивку с МК, то просите прошивку у производителя устройства. Может быть он вам ее даст.
Всем привет.
Хотел завести на STM8S103 SPI в режиме opendrain. Пока SPI выключен порт на котором MOSI так себя и ведет. Как только отправляю один байт по SPI, сразу переключается в пушпул и в нем остается пока SPI не выключу. Даже пробовал притянуть к нулю резистором, на 14мА четкая лог1.
У меня нечто подобное было на клоне STM32, он честно назывался CS32, только на USARTe. Я вот думаю, что у меня STM8 тоже клон. Две одинаковые платки одинаково себя ведут. Еще где то были чипы, можно попробовать перепаять.
Может у кого подобное было? Или может я чего не то делаю?
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
С 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 вроде как тоже ничего нет.
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Martian писал(а):то там нет настройки GPIO для работы SPI
Так в этом же тексте и написано, что периферия перехватывает DDR и ODR. Что их настраивать.
При этом CR1 и CR2 остаются в распоряжении пользователя.
Но для MOSI настройки порта я по всякому попробовал, никакой разницы. Может скорость нарастания фронта работает, не проверял.
Добавлено after 6 minutes 17 seconds:
Z_h_e писал(а):Я вот думаю, что у меня STM8 тоже клон.
Так что все может быть очень просто.
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
[uquote="Martian",url="/forum/viewtopic.php?p=4519836#p4519836"]Проще говоря, когда Вы запускаете SPI, на выводе микроконтроллера параллельно с каким-то там GPIO_С_PIN2 появляется подсоединённый вывод MOSI, свойствами которого управлять невозможно, и если для SPI требуется пуш-пулл, то MOSI таким и будет, и если на GPIO_С_PIN2 открытый коллектор с подтягивающим резистором, то этот резистор будет просто параллелен верхнему ключу MOSI.[/uquote]Странное что-то рассказываете.... Откуда такие данные??
Вроде как схема 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?
В какой среде пишете код и как огранзирован SPI - со стандартной библиотекой, другим способом? Дайте хотя бы фрагмент кода того, что сделали. Делаете это ради потребления или по другим причинам? Какова скорость передачи данных по шине?
Бы использовал стандартный SPI (push-pull) , после отправки данных бы освободл шину и бы установл GPIO так, как хотим (в pull up/down ?). По новой отправке: новую инициализацию, отправка и новое отключение. Или бы создал свой собственный программный SPI, который работает по своему усмотрению.
Последний раз редактировалось veso74 Чт дек 21, 2023 22:44:26, всего редактировалось 2 раза.
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.
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Спойлер
Пушпуш будет работать на обоих схемах.
Открытый сток только на левой, если заработает на обеих, то это пушпул.
Именно для этой проверки я предлагал притянуть резистор к нулю.
Martian писал(а):впрочем, его нет, даже если не притягивать, а убрать резистор
Но и этого уже думаю достаточно. И по осциллу видно что сигналы разные.
STM8S103F3 (тот что на 20 пинов).
При занятости портов C6 и C7 (это могли бы быть TIM1_CH1 и TIM1_CH2), я же не могу аппаратно запустить TIM1, не упускаю какой-то возможности для этого?
Именно эти порты освободить не могу.
Спасибо.
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Уточняю, сорри за неточный вопрос. Хочу включать таймер (запускать счет) от внешнего импульса. Пока вижу решение от внешнего прерывания, временные ресурсы для этого есть. Но если я упускаю возможность запуска таймера без участия программы, то будет обидно.
Martian писал(а):то их можно взять с PC3 и 4
Вот я на них и смотрю. Но по структурной схеме в RM, я не вижу что их можно использовать как триггер для запуска таймера. Если можно, так как?
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.