якщо коротко то : і так і ні і залежить від прошивки
якщо довго: мінімальні вимоги - співпадіння по пінам, вважаємо виконаними,
то далі треба дивитись щоб
- збігались/перекривались технічні характеристики
- збігалось ядро
- збігались біти регістрів
- збігався memory mapping (тут якщо збігається, то скоріш за все те що нижче теж буде збігатись)
- збігалась перефирія (тут є нюанси, наприклад якщо на одному MCU э тільки I2C0 , а на другому є I2C0 та I2C1, і регістри (memory mapping) I2C0 і там і там збігаються, то замінити можна буде, при умові що інші регистри збігаються за рахунок резервування областей, а не зміщення , але навпаки, скоріше ні чим так, знову ж таки залежиться від конретного MCU, бо наприклад, є такі які можуть робити port mapping, не плутати з alternative function (AFs), і без коду прошивки взагалі не зрозумієш який модуль замапляний на конкретні порти,
- збігались обчислювальні модулі (FPU, CRC...). Якщо замість програмної реалізації в прошивці використовуються такі модулі, а міняємо на MCU де їх нема, то всьо, але якщо не використовуються то є шанс ))
але
наприклад знаємо що GD клонували шось у ST (наврят шо навпаки буде). Тобто збігається все.
То далі вступає така штука як errata - список косяків які вилізли після проектування і запуску серії, але їх вирішили не фіксити, а задокументувати ))
Так як errata не проектується, а створюється по факту, то у двох ідентичних начебто процессорів вона може бути різна, навіть у однієє фірми, одного й того ж процессора але двох різниз ревізій вона може бути різна. І якщо прошивка враховує поведінку описану в еррата, а процику який хочемо поставити поведінка трошки інша - отримаємо проблему, причому дуже може бути що проблема буде відкладеною, тобто вилізе не зразу.
В моєму випадку, то було пальцем в небо, по пінах збіглось - ок, якщо запрацює - супер, це швидше ніж аналізувати даташити (хоча от зараз пишу, і мені знадобилось хв 15, щоб дійти до memory mapping і побачити що воно не збігається)
Але питання до розміру прошивки 103 vs 303 залишились ))