Theo mình đc hiểu là như vầy, với UART theo phương thức vật lý RS232, khi bạn thiết lập cho nó ví dụ như ở phần mềm Hercules, sẽ thấy nó có quy định số bit data bạn mong muốn được truyền. Ví dụ ở đây mình cho là 8. Nó sẽ quy ước cho dù kiểu gì cũng sẽ phải truyền cho đủ 8 bit, đổi mã HEX sang nó cũng phải đổi thành dạng 8 bit có đầy đủ 8 data. Nhưng frame nó đc cấu tạo mặc định là 9 bit, nó sẽ đẩy bắt buộc 1 lần đc 9bit này đi (8 data +1 Parity) (TH chọ data là 7 thì nó vẫn phải truyền đủ 9bit), nếu bạn có cho phép nó cài chức năng chuẩn lỗi bằng Parity nó sẽ mặc định như thế. Cho nên khi nó truyền (kg liên quan đến thằng đọc nên nó cứ truyền 1 cách liên tù tì, hay còn có thể nói : nó chỉ biết đến nó là đủ. Nó sẽ tự biết truyền phải đầy đủ, khi đủ 9 bit này rồi thì "bit sau của nó" tự động sẽ cho là Stop bit (Bên đọc nó cũng phải tuân theo thế này khi đọc). Nếu sau bit Stop đấy vẫn đc kéo lên cao mãi, thì bên đọc sẽ ngầm hiểu nó chưa muốn truyền tiếp byte tiếp theo (hay gọi là truyền chồng lên), còn nếu muốn truyền tiếp thì sau "High Bit của Stop" nó sẽ dậm ngay xuống luôn, bên nhận khi đọc vào tự biết là đó sẽ là Start bit. Bởi v mới nói RS232 nó như hai người chơi đánh Morse bằng đèn pin vậy đó, chỉ thống nhất với nhau thời gian đánh đèn và thời gian đọc tín hiệu đèn. Còn nếu truyền sai chính bên nhận nó cũng đâu có biết, nó cứ đọc thôi, nó chỉ kiểm tra chẵn lẻ đc số bit "1" để biết truyền thiếu hay dư thôi. Chứ sai ở đâu vị trí nào nó cũng kg biết. Do vậy phải truyền lại từ đầu, mà điều này chỉ khi bị nhiễu mới xảy ra, còn lại hiếm thấy TH nó lỗi v lắm. Hy vọng cách giải thích của mình giúp đc bạn. Chúc ban học tốt
Quá hây rất dể hiểu bạn ơi!
dễ hiểu mà giọng lại hay nữa ạ
hay quá a
Giải thích khá dễ hiểu
Dễ hiểu lắm ạ
anh cho em hỏi làm sao nó phân biệt được mức điện áp cao của bit stop vs mức điện áp cao của bit gửi ạ?
mk cũng thắc mắc chỗ đó :))
Theo mình đc hiểu là như vầy, với UART theo phương thức vật lý RS232, khi bạn thiết lập cho nó ví dụ như ở phần mềm Hercules, sẽ thấy nó có quy định số bit data bạn mong muốn được truyền. Ví dụ ở đây mình cho là 8. Nó sẽ quy ước cho dù kiểu gì cũng sẽ phải truyền cho đủ 8 bit, đổi mã HEX sang nó cũng phải đổi thành dạng 8 bit có đầy đủ 8 data. Nhưng frame nó đc cấu tạo mặc định là 9 bit, nó sẽ đẩy bắt buộc 1 lần đc 9bit này đi (8 data +1 Parity) (TH chọ data là 7 thì nó vẫn phải truyền đủ 9bit), nếu bạn có cho phép nó cài chức năng chuẩn lỗi bằng Parity nó sẽ mặc định như thế. Cho nên khi nó truyền (kg liên quan đến thằng đọc nên nó cứ truyền 1 cách liên tù tì, hay còn có thể nói : nó chỉ biết đến nó là đủ. Nó sẽ tự biết truyền phải đầy đủ, khi đủ 9 bit này rồi thì "bit sau của nó" tự động sẽ cho là Stop bit (Bên đọc nó cũng phải tuân theo thế này khi đọc). Nếu sau bit Stop đấy vẫn đc kéo lên cao mãi, thì bên đọc sẽ ngầm hiểu nó chưa muốn truyền tiếp byte tiếp theo (hay gọi là truyền chồng lên), còn nếu muốn truyền tiếp thì sau "High Bit của Stop" nó sẽ dậm ngay xuống luôn, bên nhận khi đọc vào tự biết là đó sẽ là Start bit. Bởi v mới nói RS232 nó như hai người chơi đánh Morse bằng đèn pin vậy đó, chỉ thống nhất với nhau thời gian đánh đèn và thời gian đọc tín hiệu đèn. Còn nếu truyền sai chính bên nhận nó cũng đâu có biết, nó cứ đọc thôi, nó chỉ kiểm tra chẵn lẻ đc số bit "1" để biết truyền thiếu hay dư thôi. Chứ sai ở đâu vị trí nào nó cũng kg biết. Do vậy phải truyền lại từ đầu, mà điều này chỉ khi bị nhiễu mới xảy ra, còn lại hiếm thấy TH nó lỗi v lắm. Hy vọng cách giải thích của mình giúp đc bạn. Chúc ban học tốt