• 正文
  • 相關(guān)推薦
申請入駐 產(chǎn)業(yè)圖譜

ZLG嵌入式筆記(連載23) | 串口數(shù)據(jù)錯亂?從標(biāo)志位設(shè)置入手

02/11 15:33
1118
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

串口通信開發(fā)中,數(shù)據(jù)錯亂是常見問題。本文將快速介紹串口標(biāo)志位的作用及配置方法,幫助解決數(shù)據(jù)傳輸錯誤。

有用戶反饋“串口應(yīng)用層數(shù)據(jù)錯亂、與發(fā)送端發(fā)送的字節(jié)數(shù)不匹配”,簡單來說就是接收和發(fā)送的數(shù)據(jù)不對,而且還存在幀數(shù)據(jù)錯亂的情況。經(jīng)排查,是程序沒用設(shè)置ISIG標(biāo)志位設(shè)置引起的。本節(jié)以此為切入點(diǎn)進(jìn)行展開,對串口設(shè)置的一些標(biāo)志位進(jìn)行簡單說明。

1. c_cflag:可以設(shè)置波特率、字符大小、數(shù)據(jù)位、停止位、奇偶校驗(yàn)位和硬軟流控等

1.1 波特率

1.2 其它

初始化c_flag時,不能直接對 c_cflag 成員進(jìn)行賦值,?而是需要通過“與”、?“或”?操作使用其中的某些選項(xiàng),例如:

c_cflag |= CNEW_RTSCTS

無硬件流控制

c_cflag &= ~CNEW_RTSCTS

2. c_iflag:用于控制端口接收端的字符輸入處理

禁用軟件流控制是禁止上面的選項(xiàng)。

c_iflag &= ~(IXON | IXOFF | IXANY);

3. c_oflag:用于控制終端端口發(fā)送出去的字符處理

因?yàn)楝F(xiàn)在終端的速度比以前快得多,?所以大部分延時掩碼幾乎沒什么用途。

啟用輸出處理需要在 c_oflag 成員中啟用 OPOST 選項(xiàng)。

c_oflag |= OPOST;

使用原始輸出,就是禁用輸出處理,使數(shù)據(jù)能不經(jīng)過處理過濾的完整地輸出到串口。當(dāng) OPOST 被禁止,c_oflag 其它選項(xiàng)也被忽略。

c_oflag &= ~OPOST;

4. c_lflag:用于控制控制終端的本地數(shù)據(jù)處理和工作模式

4.1 選擇規(guī)范模式

c_lflag |= (ICANON | ECHO | ECHOE);

 

4.2 選擇原始模式

c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);

5. c_cc:定義特殊控制特性

M3562 Cortex?-A53核心板

四核Cortex-A53

1.8GHz主頻

低成本3568方案

參考價格:288元起

致遠(yuǎn)電子

致遠(yuǎn)電子

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測量儀器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。

廣州致遠(yuǎn)電子股份有限公司成立于2001年,注冊資金5000萬元,國家級高新技術(shù)認(rèn)證企業(yè),廣州市高端工控測量儀器工程技術(shù)研究開發(fā)中心,Intel ECA全球合作伙伴和微軟嵌入式系統(tǒng)金牌合作伙伴。收起

查看更多

相關(guān)推薦

登錄即可解鎖
  • 海量技術(shù)文章
  • 設(shè)計(jì)資源下載
  • 產(chǎn)業(yè)鏈客戶資源
  • 寫文章/發(fā)需求
立即登錄