iT邦幫忙

0

7bits資料如何表示?

如題,Uart當中可以設定資料長度格式為7, 8bits等。我們最常用的就是8N1,也就是8bits/None parity/1 stop bit

https://ithelp.ithome.com.tw/upload/images/20220104/20141393jqTacwtcEO.png

但是在編寫程式時是沒有所謂7bits這種數據類型,因此我在想實際寫code時應該是使用uint8_t宣告一組陣列資料,例如:

uint8_t buffer[8];

buffer[0] = 0x01;
buffer[1] = 0x02;
buffer[2] = 0x03;
buffer[3] = 0x04;
buffer[4] = 0x05;
buffer[5] = 0x06;
buffer[6] = 0x07;
buffer[7] = 0x08;

然後將該資料內容做bit operation轉換成7bits格式,但問題是我不太清楚7bits與8bits之間的轉換關係,這是否會涉及到parity?有人知道嗎?

我的想法是這樣,例如7E1會將空出來的1個bit用even parity去補上,7O1也是相同的道理。但假如是7N1呢?這種狀況會吃到stop bit,那是否要看硬體是否支援?
https://ithelp.ithome.com.tw/upload/images/20220104/20141393fgq8ncKxbA.png

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 個回答

2
海綿寶寶
iT邦大神 1 級 ‧ 2022-01-04 12:00:48
最佳解答

Google這兩篇供參考
看看合不合用
UART C 語言範例
7/8bits 只要設 CS7/CS8

Zacch iT邦新手 4 級 ‧ 2022-01-05 09:11:36 檢舉

感謝海綿大的資源,問題已解。mcu內部庫函數可以直接操作相關暫存器,硬體會自動轉換7/8bits data size

我要發表回答

立即登入回答