Журнал Эмбеддед-Инженера

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, вот калькулятор настроек регистров в зависимости от нужных скоростей.

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

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
PS: если заметка помогла Вам, поделитесь ей с друзьями или коллегами: