Windows не является операционной системой реального времени, и независимо от того, на какой период установлен ваш таймер, нет никаких гарантий, что он будет постоянно поддерживаться. Кроме того, разрешение часов ОС зависит от реализации HAL поставщика оборудования и варьируется от системы к системе. Мультимедийные таймеры имеют более высокое разрешение, но гарантии в реальном времени по-прежнему отсутствуют.
Кроме того, вам нужно сделать небольшую арифметику относительно времени, которого вы пытаетесь достичь. На 38400, N, 8,1, вы можете перевести не более 3,84 символов за 1 мс, так что в любом случае ваше время ограничено, так как вы пингуете один символ и ожидаете возврата трех символов. Конечно, вы не можете идти быстрее, не увеличивая скорость.
Лучшим решением было бы, чтобы хост ПК отправлял требуемый отчетный период во встроенную цель один раз, а затем чтобы встроенная цель выполняла свою собственную синхронизацию так, чтобы он автономно излучал данные каждый период, пока ПК не запросит, чтобы он остановил или отправил другой период. Ваша встроенная система гораздо более способна поддерживать жесткие ограничения в реальном времени.
В качестве альтернативы вы могли бы просто заставить ваше устройство выполнить свою выборку и передать три символа со временем, полностью определяемым временем передачи трех символов, и постоянно передавать данные. Это даст вам период выборки 781.25us (1280 Гц) без какого-либо запуска с ПК, и он будет действительно периодическим и без дрожания. Если вам нужна более быстрая частота дискретизации, просто увеличьте скорость передачи данных.