ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
5 мая
1515176 Топик полностью
Nikolay_Po (29.04.2025 01:37, просмотров: 48) ответил Nikolay_Po на Сработало! После изменения делителя PPRE2 в регистре CFGR0 модуля тактирования RCC, частота второй периферийной шины (PB2) поделилась на 8, стала 13.824МГц. USART-делители пересчитались автоматически, связь по RS-485 с устройством не нарушилась. Кадровый таймер интерфейса связи не пострадал - оказался на первой периферийной шине (впрочем, и он пересчитывается автоматически - стоит лишь делитель верно задать).
Погонял малость. По устранял ошибки. Типа, в режиме только передачи, когда входящие с SPI не нужны, не включал DMA на приём. А в SPI ошибка OVR и её выявлял обработчик состояния SPI. Так же нужно было не забыть добавить очистку лишнего байта в буфере приёма и сброса ошибки последовательным чтением сначала регистра данных, потом статуса. 

Иначе залетевший шальной байт (например, из-за помехи по линии SCK), будет передаваться на следующую транзакцию - DMA получит лишний байт в начале.

Предварительно - всё работает. Данные с SPI передаются теперь уже достаточно чисто. По приёму, после устранения своих недоработок кода, ошибок не выявил. От частоты 13.824МГц замечательно работают и GPIO, и USART.

Для АЦП, а он на этой же PB2, максимально возможная тактовая 6.912МГц - примерно половина от максимально возможной - ОК. Ещё не проверял, но надеюсь, не подведёт.