% 1 içinde iseniz, iyi olmalısınız.
Örneğin, UART'ınızın 16x aşırı örnekleme saati kullandığını varsayalım, örneğin 1.843.200 Hz ila 16x aşırı örnek 115.200 bps olarak ayarlayabilirsiniz. (bunun gibi aşırı örnekleme oldukça yaygındır) Bu, UART'ın başlangıç bitinin düşen kenarından 8 fazla saati geri saymasını sağlar, böylece bit hücrelerinin merkezini saatin +/- bir periyoduna kadar bulabilir veriyi ne zaman örnekleyeceğini belirlemek için saatin 16 dönemini sayar.
Başlangıç bitinin ortasına vurabileceğini varsayarsanız, o zaman 8 veri biti boyunca doğru bit hücrelerinde örnek verileri tutmak için saat frekansı (8-0.5) / 8 ve (8 + 0.5 arasında kalmalıdır) ) / 8 veya hedeflenen bit hızının +/-% 6,25'i. Daha yüksek hız aşırtma, başlangıç bitinin ortasına vurmak için ideal koşula yaklaşır, ancak 8x veya 16x genellikle% 5 uyumsuzluğun işe yarayacağını varsayabilecek kadar yakındır.
Ancak, diğer tarafın frekansta mükemmel olduğuna güvenemezsiniz. % 4 hızlı bir cihazı% 4 yavaş olan bir cihaza bağlarsanız, bir sorununuz olur. Bir bilgisayar biraz yavaş çalışıyor ve bir cihaz biraz hızlı çalışıyordu ve aynı cihaz diğer bilgisayarlarla iyi olmasına rağmen ikisi sadece marjinal olarak iletişim kurabiliyordu ve PC diğer bilgisayarlarla iyiydi cihazlar. (Bunları 112kbps ve 119kbps'de O-kapsamına aldı) Bu nedenle nominal frekansı olabildiğince yakından vurmaya çalışmak iyi. Nominalin% 2'sinde hiçbir sorun görmedim.
Yapılacak en yaygın şey, istenen UART aşırı örnekleme oranının baud hızının katlarının bir tam katı olan bir ana saat hızı kullanmaktır. Örneğin, yaklaşık 8MHz'de çalışan bir CPU istiyorsanız, tam olarak 16 kat 115200 olan 1.8432MHz elde etmek için 4'e bölünebilen bir 7.3728MHz osilatör kullanabilirsiniz.