1) все процессорные модули (за исключением WiFi шлюза) имеют форм-фактор Arduino Pro Mini, 18x33 mm
2) весь софт написан в среде Ардуино и использует библиотеки Ардуино
Из первого пункта следует, что в альтернативных модулях я не могу использовать камни в корпусах большого размера.
Атмега 644А в корпусе QFN-44 7х7 мм годится, а в корпусе QFP-44 12х12 мм - нет. По какой-то неведомой мне причине китайцы задешево продают только Атмеги в больших корпусах, а в маленьких корпусах цена сразу вырастает в 2-3 раза и становится сопоставимой с ценами Digi-Key, Маузера, и т.п. Вполне вероятно, что дешевые Атмеги - это китайские пиратские копии, которые пакуются только в корпуса из узкого номенклатурного ряда; соответственно, чип Atmega 644А в корпусе QFN-44 уже не пиратский, поэтому стоит намного дороже.
Из второго пункта следует, что желательно исползовать или процы нативного Ардуиновского ряда, т.е. Атмега и SAMD21, или хотя бы те, которые сам производитель удосужился портировать в Ардуино, что верно для ХМС1100. Что же касается STM32, то посмотрев на то, что имеется для Maple и "голубой пилюли", я ужаснулся и решил, что это лучше не трогать.
На SAMD21 вполне можно сделать модуль размера Arduino Pro Mini. Но XMC1100 мне нравится больше за счет широкого диапазона напряжений питания. Кроме того, UART в XMC1100 имеет встроенный механизм обнаружения коллизий на шине, что хорошо подходит для HBus:
Но генератор в XMC1100 - это сущий ад: встроенный RC-генератор очень неточный (4%), его надо калибровать, иначе даже UART правильно работать не будет, а генератора на кварце вообще не предусмотрено.14.3.3.4 Collision Detection
In some applications, such as data transfer over a single data line shared by several
sending devices (see Figure 14-30), several transmitters have the possibility to send on
the same data output line TXD. In order to avoid collisions of transmitters being active at
the same time or to allow a kind of arbitration, a collision detection has been
implemented.
The data value read at the TXD input at the DX1 stage and the transmitted data bit value
are compared after the sampling of each bit value. If enabled by PCR.CDEN = 1 and a
bit sent is not equal to the bit read back, a collision is detected and bit PSR.COL is set.
If enabled, bit PSR.COL = 1 disables the transmitter (the data output lines become 1)
and generates a protocol interrupt. The content of the transmit shift register is considered
as invalid, so the transmit buffer has to be programmed again.