Skip to main content

STM8S-Discovery. Теперь с CAN-шиной

Постановка задачи

На пике популярности STM8S  выпускались и продавались КИТы STM8 Discovery на базе STM8S105, единственными достоинствами которых были цена, наличие набортного отладчика/программатора ST-link V1 и маленькая область для макетирования. Недостатком же явилось отсутствие поддержки шины CAN.
Решить проблему несложно  — достаточно заменить STM8S105 на STM8S208 с идентичным футпринтом и схожей, в рамках серии, распиновкой, что я и сделал. На область для макетирования запаял 5-вольтовый драйвер шины CAN.

Трудности

Поскольку STM8S208 позволяет работать с внешним источником HSE большей чем на STM8S105 частоты (24 МГц против 16 МГц у младщих чипов серии), то решил заодно и кварц махнуть на плате, с чем потом немало провозился: при активации в программе источника тактов HSE, программа намертво висла, грешил уже и на дефектный кварцевый резонатор и на номиналы конденсаторов — ничего не помогало, однако контроллер CAN крайне желательно питать от высокостабильного кварцевого источника (отклонение не более ~ 0.6% согласно заветам Роберта Боша). Истина была где-то рядом: ядро-то в STM8S208 разогнали, а вот область флеша осталась та же — оказалось надо притормозить контроллер набортного флеша: есть такой битик в конфиг-пространстве Option Bytes OPT7 WAITSTATE,  который и отвечает за введение холостых циклов обращения при быстром ядре ЦПУ.

This option configures the number of wait states inserted when reading from the Flash/data EEPROM memory.  1 wait state is required if fCPU > 16 MHz.
0: No wait state
1: 1 wait state

Обидно потраченного времени :-/

PS

Кстати, если кто также решил освоить beCAN, вот калькулятор настроек регистров в зависимости от нужных скоростей.

пример работы:

PS: если заметка помогла Вам, поделитесь ей с друзьями или коллегами: