Pingvin писал(а):
Взялся за UART - вопросы есть по полудуплексу.
Нужен резистор подтягивающий к +3,3В?
Внешний резистор я не использую. Ставлю подтяжку на повязке при настройке GPIO, и отключаю подтяжку на сенсорах. Пока работает, но у меня только один сенсор подключен ещё. Вроде не должно быть проблем с любым количеством: главное, чтобы только один МК включал подтяжку.
Pingvin писал(а):
Когда передача происходит, приемник тоже этот пакет ловит?
Это зависит от того, как настроен последовательный порт. Но моя библиотека корректно работает в обоих вариантах, свои пакеты успешно отбрасывает.
Pingvin писал(а):
Смотрю в код - а где инициализация железа?
Как прием/передача реализованы, через прерывания?
В коде библиотеки нет работы с железом, она будет работать через драйвер. То есть пользователь должен, например, реализовать функцию передачи данных:
Код:
void ssp_send_data(uint8_t* data, uint16_t size);
и по получению байта вызывать функцию приема байта:
Код:
void ssp_receive_byte(uint8_t byte);
Так же и некоторые другие функции, см. коммертарии в файлах с заголовками драйвера.
По такому принципу устроены многие библиотеки для микроконтроллеров.
Прием и передача могут быть реализованы через прерывания, код рассчитан на это.
Pingvin писал(а):
Буфер кольцевой?
Смотря какой буфер. Буфер для эффектов - кольцевой, потому что это очередь: эффекты добавляются командами по шине, а извлекаются по мере "проигрывания". Буффер для входящих сообщений по шине линейный, в кольцевом там нет смысла, поскольку нет очереди: сообщения обрабатываются строго по одному (потому что протокол работает по принципу один запрос - один ответ)