|
發(fā)布時間: 2021-1-6 09:38
正文摘要:最近發(fā)現(xiàn)一個串口的迷惑行為。 單片機型號:STC8 頻率:24MHz 今天準備使用串口對程序進行調(diào)試,結果發(fā)過來的內(nèi)容總是出現(xiàn)各種錯誤。于是我用示波器看了一下波形。不看不知道,一看下巴都要驚掉了!! ... |
兩儀式 發(fā)表于 2021-1-6 12:16 就是單片機已經(jīng)開始發(fā)送字符了,但電腦那邊還沒準備好接收。 導致電腦誤把低電平數(shù)據(jù)位當成了起始位,導致數(shù)據(jù)錯位,最終出現(xiàn)傳輸錯誤 具體的在這里 http://m.raoushi.com/bbs/dpj-201131-1.html |
兩儀式 發(fā)表于 2021-1-6 12:16 就是不說 ![]() |
guysxpf 發(fā)表于 2021-1-6 12:02 什么問題說清楚啊 |
|
發(fā)現(xiàn)了兩個問題,已經(jīng)解決了:1、波形是正確的,沒有問題,應該是先發(fā)低位,再發(fā)高位。我給搞反了,但這并不是問題的關鍵 2、核心原因在這里:http://m.raoushi.com/bbs/dpj-201131-1.html 帖子正在審核,稍微等等就能看到了 |
人人學會單片機 發(fā)表于 2021-1-6 11:42 好的,多謝提醒 |
jjjjjjir 發(fā)表于 2021-1-6 11:46 已經(jīng)找到問題的關鍵了,謝謝 |
cocolala 發(fā)表于 2021-1-6 10:38 問題已經(jīng)解決了,不過還是謝謝您 |
| 是不是將串口設置成9位的工作模式了?檢查一下串口的寄存器設置是否有誤 |
| TXD 口需要推挽 |
|
1、樓主可以把STC8的單片機型號全稱注明下嗎?因為STC8下系列種類較多,不同型號可能會有所不同。 2、本人有使用STC8A8K64S4A12單片機,該型號單片機官方手冊給出了發(fā)送過程說明及示意圖,明確了起始位是低電平,停止位是高電平。
發(fā)送過程:串行通信模式發(fā)送時,數(shù)據(jù)由串行發(fā)送端TXD輸出。當主機執(zhí)行一條寫SBUF的指令就啟動串行通信的發(fā)送,寫“SBUF”信號還把“1”裝入發(fā)送移位寄存器的第9位,并通知TX控制單元開始發(fā)送。移位寄存器將數(shù)據(jù)不斷右移送TXD端口發(fā)送,在數(shù)據(jù)的左邊不斷移入“0”作補充。當數(shù)據(jù)的最高位移到移位寄存器的輸出位置,緊跟其后的是第9位“1”,在其左邊各位全為“0”,這個狀態(tài)條件,使TX控制單元作最后一次移位輸出,然后使允許發(fā)送信號“SEND”失效,完成一幀信息的發(fā)送,并置位中斷請求位TI,即TI=1,向主機請求中斷處理。 3、樓主亦可把程序關于串口配置及發(fā)送的源碼貼出。 |
| 參與人數(shù) 1 | 黑幣 +20 | 收起 理由 |
|---|---|---|
|
| + 20 | 回帖助人的獎勵! |
Powered by 單片機教程網(wǎng)