久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2617|回復(fù): 1
收起左側(cè)

51單片機(jī)串口收發(fā)設(shè)計(jì)的思考

[復(fù)制鏈接]
ID:113517 發(fā)表于 2016-4-14 22:06 | 顯示全部樓層 |閱讀模式
最近項(xiàng)目里面要用到51單片機(jī)做一些控制,主要功能是通過串口接收上位機(jī)的指令并進(jìn)行分析解碼,等待一個外部觸發(fā)信號到來后執(zhí)行之前接收的指令動作。

正好手邊有一片STC89C52,趕緊搭了個最小系統(tǒng)。STC89C52單片機(jī)可以通過串口下載程序,可是試了好幾次都沒有下載成功,仔細(xì)檢查發(fā)現(xiàn)原來是9針串口線忘了接GND(地線)。順便總結(jié)下STC單片機(jī)下載不成功的主要原因:

1、最小系統(tǒng)出問題(晶振對不對、復(fù)位電路對不對、引腳連線對不對);

2、電平匹配問題(一般是要加MAX232電平轉(zhuǎn)換芯片的);

3、串口線(串口線質(zhì)量也是很重要的)連得對不對(至少連3根線TXD、RXD、GND),包括發(fā)送接收的方向?qū)Σ粚Γ?/font>

4、下載操作步驟對不對(單片機(jī)下電--->點(diǎn)下載--->單片機(jī)上電)。



排除了下載失敗的故障后,就可以寫代碼下程序了。先寫個串口調(diào)試功能的代碼,使用串口接收中斷方式,在主程序中將接受的字節(jié)回送到上位機(jī)中。

串口收發(fā)設(shè)計(jì)(阻塞式設(shè)計(jì))

代碼見原文。

對上述代碼進(jìn)行測試發(fā)現(xiàn):

1、上位機(jī)每隔0.5s發(fā)送1個字節(jié),代碼可以很好的工作,沒有丟失數(shù)據(jù);

2、上位機(jī)發(fā)送987個字節(jié)大小的文件,上位機(jī)接收到單片機(jī)回送數(shù)據(jù)986個,丟失1個;

3、上位機(jī)發(fā)送12307個字節(jié)大小的文件,上位機(jī)接收到單片機(jī)回送數(shù)據(jù)12286個,丟失21個;

4、上位機(jī)發(fā)送61541個字節(jié)大小的文件,上位機(jī)接收到單片機(jī)回送數(shù)據(jù)61453個,丟失88個。

一般情況,為了使串口收發(fā)更穩(wěn)健,會使用緩沖區(qū)機(jī)制,也就是設(shè)計(jì)接收FIFO,將接收到數(shù)據(jù)先存放到FIFO中,這樣可以防止在大數(shù)據(jù)收發(fā)過程中的覆蓋問題。FIFO一般設(shè)計(jì)成環(huán)形的,有一個讀指針和一個寫指針,對FIFO操作時會先檢查這兩個指針來確定FIFO的狀態(tài)。為了區(qū)分FIFO的滿狀態(tài)和空狀態(tài),往往會犧牲掉FIFO一個存儲單元,使得形成這樣的條件:

1、寫之前,檢查發(fā)現(xiàn)如果wr_ptr+1 = rd_ptr,則表示FIFO已滿(實(shí)際FIFO還有1個空位,但被我們犧牲掉了);

2、讀之前,檢查發(fā)現(xiàn)如果rd_ptr = wr_ptr,則表示FIFO為空(這時FIFO是真心空的)。

串口收發(fā)設(shè)計(jì)(非阻塞式設(shè)計(jì))

代碼見原文。

對代碼進(jìn)行同樣的測試:

1、上位機(jī)每隔0.5s發(fā)送1個字節(jié),代碼可以很好的工作,沒有丟失數(shù)據(jù);

2、上位機(jī)發(fā)送987個字節(jié)大小的文件,上位機(jī)接收到單片機(jī)回送數(shù)據(jù)986個,丟失1個;

3、上位機(jī)發(fā)送12307個字節(jié)大小的文件,上位機(jī)接收到單片機(jī)回送數(shù)據(jù)12286個,丟失21個;

4、上位機(jī)發(fā)送61541個字節(jié)大小的文件,上位機(jī)接收到單片機(jī)回送數(shù)據(jù)61429個,丟失112個。

從上面的測試數(shù)據(jù)上看,阻塞式的串口收發(fā)反而比非阻塞式的要好一些些。但是按照很多書本上以及原理上推論,應(yīng)該是非阻塞式的遠(yuǎn)好于阻塞式的,但今天的測試結(jié)果讓我有些不敢相信。靜下心來仔細(xì)思考,好像得出點(diǎn)結(jié)論:

1、在這個測試中,單片機(jī)僅僅只在做2件事:接收與發(fā)送。任務(wù)太簡單,阻塞式的也能很好的工作,反而非阻塞式的沒有體現(xiàn)出它的好處來;

2、這個單一的任務(wù)中,非阻塞式的要對FIFO進(jìn)行讀寫,反而要消耗時間,從而導(dǎo)致上面的測試數(shù)據(jù)看好阻塞式的;

3、如果增加其他的任務(wù),非阻塞式的理論上應(yīng)該比阻塞式的工作的好,當(dāng)然有待驗(yàn)證;

4、確實(shí)應(yīng)該多做實(shí)驗(yàn),不能光看書上怎么寫,要實(shí)際測試,看看哪些情況下適用哪些方法。


回復(fù)

使用道具 舉報

ID:388936 發(fā)表于 2018-8-22 16:09 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 99视频网| 国产精品亚洲成在人线 | 国产精品资源在线 | 国产一级在线观看 | 国产一区二区三区免费观看视频 | 久久久女女女女999久久 | 日韩五月天 | 欧美一区二区三区精品 | 在线永久看片免费的视频 | www.99热这里只有精品 | 国产精品久久久久久久岛一牛影视 | 精品av久久久久电影 | 日韩视频在线一区 | 色综合天天天天做夜夜夜夜做 | 国产日韩一区二区三区 | 自拍偷拍一区二区三区 | 91精品国产欧美一区二区 | 精品久久久久久久久久久久久 | 亚洲一区二区三区国产 | 国产乱精品一区二区三区 | 国产免费观看久久黄av片涩av | 在线一区| 超碰人人人 | 懂色中文一区二区在线播放 | 天天干天天草 | www.色.com | 免费在线观看成人 | 中文字幕在线三区 | 亚洲综合二区 | 日韩免费在线视频 | 亚洲激情专区 | 九九亚洲精品 | 国产精品成人69xxx免费视频 | 日韩欧美在线不卡 | 爱操av| 国产1区2区3区| 欧美成人一区二区三区片免费 | 亚洲高清一区二区三区 | 91精品一区| www.久久艹| 日韩欧美在线一区二区 |