Постановка задачи
На пике популярности 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, вот калькулятор настроек регистров в зависимости от нужных скоростей.
пример работы:
Settings: F_CPU: 12.00MHz, SP: 87.50, SPE: 5%
BitRate BR_Error SP (Error) BRP BS1 BS2 SJW
1000k (1.25e-05) 83.3 (5%) 1 9 2 1
1000k (0.00e+00) 91.7 (5%) 1 10 1 0
1000k (0.00e+00) 83.3 (5%) 2 4 1 0
800k (0.00e+00) 86.7 (1%) 1 12 2 1
500k (1.25e-05) 83.3 (5%) 2 9 2 1
500k (0.00e+00) 91.7 (5%) 2 10 1 0
500k (0.00e+00) 87.5 (0%) 3 6 1 0
500k (0.00e+00) 83.3 (5%) 4 4 1 0
250k (0.00e+00) 87.5 (0%) 3 13 2 1
250k (1.25e-05) 83.3 (5%) 4 9 2 1
250k (0.00e+00) 91.7 (5%) 4 10 1 0
250k (0.00e+00) 87.5 (0%) 6 6 1 0
250k (0.00e+00) 83.3 (5%) 8 4 1 0
125k (0.00e+00) 87.5 (0%) 6 13 2 1
125k (1.25e-05) 83.3 (5%) 8 9 2 1
125k (0.00e+00) 91.7 (5%) 8 10 1 0
125k (0.00e+00) 87.5 (0%) 12 6 1 0
125k (0.00e+00) 83.3 (5%) 16 4 1 0
50k (0.00e+00) 85.0 (3%) 12 16 3 2
50k (0.00e+00) 87.5 (0%) 15 13 2 1
50k (0.00e+00) 86.7 (1%) 16 12 2 1
50k (0.00e+00) 83.3 (5%) 20 9 2 1
50k (7.81e-06) 91.7 (5%) 20 10 1 0
50k (7.81e-06) 90.0 (3%) 24 8 1 0
50k (0.00e+00) 87.5 (0%) 30 6 1 0
20k (0.00e+00) 85.0 (3%) 30 16 3 2