I'm using the USART on an STM32F4 series MCU. I'm wondering how the receiver detects the start bit when oversampling by 8 is set.
The reference manual says the start bit detection sequence is the same when oversampling by 16 or by 8. The start.bit is confirmed when the 3 sampled bits are at zero (first sampling on the 3rd, 5th, 7th bits finds the 3 bits at 0 and second sampling on the 8th, 9th, 10th bits also finds the 3 bits are at 0).
However, the sampling rate is 8 times the baud rate clock, when oversampling by 8 is set, the receiver engine samples a one-bit period 8 times. That means it takes 8 samples to understand that bit.
It makes me confused there are only 8 sampling points, but the length of the start bit detection sequence is greater than 8 (the 3rd, 5th, 7th and the 8th, 9th, 10th sampling points). I have no idea how to explain this part of the manual.
additional: I have added a simple drawing of oversampling 16. From hardware perspective,the one-bit periond of data sampled is the same as time that the RX_Counter which is driven by baud clock counting to 16. It can locate the sample1 & sample2 which are required sampling ponits using the counter easily. However, if oversampling 8 is set, the counter only can count to 8.If both oversampling methods use the same start bit detection sequence, the sample1 & sample2 can not be located.