Нюансы были следующие:
1. Схему делал не я.
2. Прошивку писал не я.
3. Те исходники, которые нам выдали, не соответствовали фактически зашитой прошивке. Их пришлось допиливать.
4. Оригинальная схема с оригинальной прошивкой работала хорошо, но по необходимости микроконтроллер был заменён другими разработчиками на другой, более компактный. А схема вместо отдельной платы была включена в другую плату, где было ещё много всего.
В чём причина неправильной работы я разобрался, а вот кто виноват из-за пунктов выше будет выяснить сложно. Главное, что виноват не я.
Параллельная загрузка была выполнена при помощи GPIO, порт A. 16 бит. Как известно, ножки GPIO могут быть сконфигурированы на ввод, на вывод и на альтернативную функцию. При чтении исходников я обнаружил, что половина сконфигурирована на ввод, половина на вывод. И ещё парочка ножек на альтернативную функцию. Я думаю, не надо об'яснять, что поскольку я выдаю на ЦАП код в параллельном представлении, то ничего не будет работать, если режим всех шестнадцати ножек будет иным, чем "на вывод". Потому что если ножка сконфигурирована на ввод, то даже если я в её регистр запишу единичку, на выходе единички я не получу.
То есть, ножки были настроены неправильно. Но прежде, чем их перенастроить, я внимательно посмотрел на схему. И обнаружил, что две из шестндадцати ножек подключены ещё и к SWD, т.е. через них осуществляется отладка и прошивка микроконтроллера. А теперь представьте, что будет, если я эти ножки вместо текущих настроек переключу в режим "на вывод"? После этого я не смогу прошивать микроконтроллер, потому что если ножка работает на вывод, я не могу ему ничего передать!
Нет, это не будет кирпич. На нём будет вертеться та прошивка, которую я зашил последней. Более того, это стандартная ситуация, когда микроконтроллер перестаёт прошиваться из-за неправильного конфигурирования (заблокированы ножки отладки, не работает тактирование ядра и пр.). Там есть специальная ножка, BOOT0. Если она не прибита к земле, то зашитая прошивка не грузится и работают настройки по умолчанию. В этом случае до микроконтроллера можно достучаться.
Но ситуация, когда такое шаманство надо делать при каждой прошивке -- ненормальна. Я не знаю, возможно не было возможности так спроектировать схему, чтобы ножки не конфликтовали (там всё довольно компактно). Но случаев, когда прошивка/отладка блокируется после прошивки, следует избегать всеми силами. Если не хватает ножек, можно просто взять следующую по размеру модификацию.