Постановка задачи
На пике популярности 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, вот калькулятор настроек регистров в зависимости от нужных скоростей.
пример работы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 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 |