Может кто знает проблему - подскажет.
Имеется изделие на stm32f105 (CL).
Запущено на частоте 8*9 = 72. Это проверил ч/з MCO осциллографом.
Частота APB2 = 72/1, а APB2 = 72/2 = 36 ( в регистре RCC_CFGR PPRE1 = 4)
Согласно даташиту частота TIM2 (а также CAN), соответственно должна быть равна 36.
Но выведенный сигнал при расчетё получается такой, как будто частота таймера = 72. Всё пересчитывал уже 10 раз.
Собственно сам таймер - бог с ним. Непонятно откуда расхождение расчётной частоты и фактической. Почему-то не работает CAN. Собственно из-за этого и полез разбираться.
CAN программирую так.
TS1 = 2 (3 такта)
TS2 = 4 (5 такт.)
SJW = 0 (1 такт)
BRP = F (делитель 16)
То есть по моему пониманию часто та должна быть 36 / 16 / (3+5+1) = 250 кбит.
Подскажите где я неправ.
PS: Что-то уж очень туго идёт с stm32. Тот же CAN на LPC2478 занял 1 день, да и прочее тоже всё легко и приятно. А здесь шляпа на шляпе. ADC, таймер, CAN - всё с боем.