ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
22 июля
1072979 Топик полностью
evgeniy1294 (29.01.2021 15:30, просмотров: 321) ответил evgeniy1294 на Покопался в кишках CubeMX, теперь могу генерировать шаблон для конфигурации pll stm-ок, а заодно проверять параметры в compile-time. Всю работу выполняет питонячий скрипт, его ещё нужно доработать, но результат примерно следующий:
Парсер закончен, теперь у ClockTree есть информация с ограничениями частот: 
[name: kHsiFrequencyHz, type: fixed_src, signal: [ref: HSI_VALUE, default_value: 16000000, max_value: 16000000, min_value: 16000000], input: None, output: ['SysClkSource', 'PLLSource', 'MCO1Mult', 'FMPI2C1Mult', 'LPTIM1Mult']]

[name: kHseFrequencyHz, type: varied_src, signal: [ref: HSE_VALUE, default_value: 25000000, max_value: 50000000, min_value: 1000000], input: None, output: ['SysClkSource', 'HSERTCDevisor', 'PLLSource', 'MCO1Mult', 'MCO2Mult']]

[name: kLsiFrequencyHz, type: fixed_src, signal: [ref: LSI_VALUE, default_value: 32000, max_value: 32000, min_value: 32000], input: None, output: ['IWDGOutput', 'RTCClkSource', 'LPTIM1Mult']]

[name: kLseFrequencyHz, type: varied_src, signal: [ref: LSE_VALUE, default_value: 32768, max_value: 32768, min_value: 32768], input: None, output: ['RTCClkSource', 'MCO1Mult', 'LPTIM1Mult']]

[name: kRtcClkSource, type: mux, signal: [ref: RTCFreq_Value, default_value: 32000, max_value: 1000000, min_value: 0], input: ['HSERTCDevisor', 'LSEOSC', 'LSIRC'], output: ['RTCOutput']]

[name: kRtcClkHz, type: out, signal: None, input: ['RTCClkSource'], output: None] [name: kIwdgClkHz, type: out, signal: None, input: ['LSIRC'], output: None]

[name: kPllN, type: mul, signal: [ref: VCOOutputFreq_Value, default_value: 192000000, max_value: 432000000, min_value: 100000000], input: ['PLLM'], output: ['PLLQ', 'PLLP', 'PLLR']]

[name: kPllP, type: div, signal: [ref: PLLCLKFreq_Value, default_value: 96000000, max_value: 100000000, min_value: 24000000], input: ['PLLN'], output: ['SysClkSource', 'MCO1Mult', 'MCO2Mult']]

[name: kPllQ, type: div, signal: [ref: VCOQOutputFreq_Value, default_value: 192000000, max_value: 75000000, min_value: None], input: ['PLLN'], output: ['USBOTGOutput']]

[name: kPllR, type: div, signal: [ref: VCOROutputFreq_Value, default_value: 192000000, max_value: 100000000, min_value: 24000000], input: ['PLLN'], output: ['I2SSrc', 'MCO2Mult']]



Осталось дописать кодогенератор и шаблон для него.