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