BitTiming = 1 / NominalBitTime;
NominalBitTime = tq + tBS1 + tBS2;
tq = tPCLK * Prescaler;
STM32F1xx tPCLK = 1 / 36 MHz
STM32F20x tPCLK = 1 / 30 MHz
STM32F40x tPCLK = 1 / 42 MHz
Например, требуется шина частотой 250KHz (NominalBitTime = 4).
Для STM32F1xx:
4 = (1/36) * Prescaler * (1 + tBS1 + tBS2);
Prescaler = 8 (с потолка);
4 = (1/36) * 8 * (tq + tBS1 + tBS2);
1 + tBS1 + tBS2 = 1152;
1152 кратно 16, тогда пусть tBS1 = 11, tBS2 = 4;
Итого:
Prescaler = 8;
tBS1 = 11;
tBS2 = 4;
Для STM32F2xx:
4 = (1/30) * Prescaler * (1 + tBS1 + tBS2);
Prescaler = 8 (опять с потолка);
4 = (1/30) * 8 * (tq + tBS1 + tBS2);
1 + tBS1 + tBS2 = 960;
960 кратно 15, тогда пусть tBS1 = 10, tBS2 = 4;
Комментариев нет:
Отправить комментарий