К вопросу об источнике сигнала тактовой частоты
Итак, мне не удалось обеспечить для интерфейса I2S тактирование от входа I2S_CKIN, куда я планировал подключить внешний генератор.
Как я уже писал ранее, если для MCU использовать тактовую частоту 24576 кГц, то можно подобрать настройки PLL так, чтобы обеспечить и 98304 кГц тактовой частоты для I2S, и 48000 кГц – для USB:

Получить калиброванный сигнал частотой 24576 кГц можно с синтезатора si5351 из состава трансивера, но синтезатор управляется по шине I2C. Получаем замкнутый круг: чтобы получить сигнал тактовой частоты от синтезатора, MCU должен уже от него этот сигнал получать.
Проблема счастливо разрешилась включением в функцию main () трёх строчек кода между тэгами /* USER CODE BEGIN Init */ и /* USER CODE END Init */ сразу после инициализации HAL, но ещё до настроек SystemClock:
int main(void) {
/* MCU Configuration--------------------------------------------------------*/
/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();
/* USER CODE BEGIN Init */
__HAL_RCC_GPIOB_CLK_ENABLE();
MX_I2C1_Init ();
VFO_Init ();
/* USER CODE END Init */
/* Configure the system clock */
SystemClock_Config();
...
}
Сразу после включения MCU работает от внутреннего источника HSI RC. Сигнал тактовой частоты 16 МГц от него подаётся на ядро и шины периферии, а следовательно, и на интерфейс I2C.
Для доступа к управлению синтезатором si5351 включаем тактирование порта B, к выводам которого подключен I2C, макросом __HAL_RCC_GPIOB_CLK_ENABLE(). Затем инициализируем I2C запуском функции MX_I2C1_Init (), а затем запускаем инициализацию синтезатора функцией VFO_Init ().
По окончанию этих процедур на выходе синтезатора, подключенному к входу RCC_OSC_IN микроконтроллера, появляется сигнал частотой 24576 кГц, который и будет использоваться в качестве сигнала тактовой частоты.
Про калибровку синтезатора я на Хабр уже писал.