找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3173|回復(fù): 13
打印 上一主題 下一主題
收起左側(cè)

通信疑問 通信時(shí)基于軟件來協(xié)定傳輸模式的對(duì)吧?那么串行的話每次傳輸一幀數(shù)據(jù)

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:1047240 發(fā)表于 2023-2-12 18:38 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
50黑幣
過完年了我來重啟學(xué)習(xí)哈哈哈問個(gè)問題。
通信時(shí)基于軟件來協(xié)定傳輸模式的對(duì)吧?那么串行的話每次傳輸一幀數(shù)據(jù),可是軟件應(yīng)該怎么寫?我記得軟件對(duì)輸入的監(jiān)視都是以字符為單位的。


可以一幀數(shù)據(jù)里包含了起始結(jié)束等數(shù),其中就比如起始位只有1bit軟件怎么監(jiān)視它?

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:596109 發(fā)表于 2023-2-13 08:58 | 只看該作者
很多的單片機(jī)都有自帶的外設(shè),這些底層的通訊協(xié)議外設(shè)自己就能解讀,初始化的時(shí)候設(shè)置一下就行了,實(shí)在想知道怎么實(shí)現(xiàn)的話找個(gè)51的串口教程學(xué)習(xí)一下就行了
回復(fù)

使用道具 舉報(bào)

板凳
ID:236035 發(fā)表于 2023-2-13 09:40 | 只看該作者
收到起始位就認(rèn)為是報(bào)文頭了。所以協(xié)議要嚴(yán)謹(jǐn)。
回復(fù)

使用道具 舉報(bào)

地板
ID:94031 發(fā)表于 2023-2-13 10:24 | 只看該作者
通信雙方要有協(xié)議,比如一幀幾個(gè)字節(jié),起始字節(jié)是什么,結(jié)束字節(jié)是什么,中間字節(jié)含義是什么,接收方用串口中斷接收。
回復(fù)

使用道具 舉報(bào)

5#
ID:646520 發(fā)表于 2023-2-13 12:53 | 只看該作者
單片機(jī)底層串口協(xié)議保證一個(gè)字節(jié)接收無誤以bit為單位,你自己定義的通信協(xié)議在底層串口協(xié)議基礎(chǔ)上以字節(jié)為單位,這樣你就可以自己定義接收符,結(jié)束符和數(shù)據(jù)了。
回復(fù)

使用道具 舉報(bào)

6#
ID:384109 發(fā)表于 2023-2-13 14:50 | 只看該作者
協(xié)議是包含軟件和硬件的,并不是單一的
回復(fù)

使用道具 舉報(bào)

7#
ID:130230 發(fā)表于 2023-2-13 17:48 | 只看該作者
構(gòu)造一個(gè)通信幀就可以了有頭有尾有校驗(yàn)
回復(fù)

使用道具 舉報(bào)

8#
ID:1047240 發(fā)表于 2023-2-14 03:50 | 只看該作者
xuyaqi 發(fā)表于 2023-2-13 10:24
通信雙方要有協(xié)議,比如一幀幾個(gè)字節(jié),起始字節(jié)是什么,結(jié)束字節(jié)是什么,中間字節(jié)含義是什么,接收方用串口 ...

起始字節(jié)嗎?我看書上說的他給個(gè)圖就是下沿起始,所以這個(gè)下沿不是1bit嗎,并不是一個(gè)字節(jié)8nit啊。
而我學(xué)過的編程命令里只有一個(gè)監(jiān)視鍵盤的指令,這個(gè)指令監(jiān)視的是一個(gè)鍵盤至少1字節(jié)的信號(hào)。

而書上畫的是下沿不就等于1bit嗎所以我就不明白了,1bit不能代表任何字該怎么編程?

比如說I/O口P11<1則進(jìn)行某些指令,這個(gè)1不是8位的字節(jié)嗎?下沿只有1bit不能分辨啊。還是1就是1bit的1?

看來我是沒清楚I/O口的設(shè)計(jì)吧,我找找資料看看。
回復(fù)

使用道具 舉報(bào)

9#
ID:587810 發(fā)表于 2023-2-17 13:56 | 只看該作者
重點(diǎn)是檢測總線一幀數(shù)據(jù)的時(shí)間間隔,從而記錄數(shù)據(jù)起始位和結(jié)束位。
回復(fù)

使用道具 舉報(bào)

10#
ID:94031 發(fā)表于 2023-2-18 20:00 | 只看該作者
正在學(xué)習(xí)51 發(fā)表于 2023-2-14 03:50
起始字節(jié)嗎?我看書上說的他給個(gè)圖就是下沿起始,所以這個(gè)下沿不是1bit嗎,并不是一個(gè)字節(jié)8nit啊。
而我 ...

書上說的下沿起始,這是單片機(jī)硬件要解決的問題,你只需要把單片機(jī)收到的一個(gè)字節(jié)(8位)能處理就行,硬件的事不用你管。
回復(fù)

使用道具 舉報(bào)

11#
ID:353115 發(fā)表于 2023-2-18 20:52 | 只看該作者
1、串口和字節(jié)。串口自身規(guī)定了波特率F,在收到1個(gè)下降沿,串口硬件會(huì)不斷在1/F的時(shí)間內(nèi)采樣,若被理解成0,則認(rèn)為是起始信號(hào),然后以這樣的規(guī)律不斷采集中斷傳輸?shù)臄?shù)據(jù)。并去掉起始信號(hào)和結(jié)束信號(hào),將中間的數(shù)據(jù)以字節(jié)呈現(xiàn)在數(shù)據(jù)寄存器中。大概了解一下就行了。
2、若要監(jiān)控一幀?梢栽诿看谓邮找粋(gè)字節(jié)之后(請(qǐng)把它們存在數(shù)組中,并標(biāo)記接收數(shù)量)都啟動(dòng)定時(shí)器T,T的內(nèi)容是5ms后將幀接收完成標(biāo)志位置1。這樣每接收1個(gè)字節(jié)就刷新這個(gè)定時(shí)器,直到總線空閑了,你將會(huì)得到一幀內(nèi)容。
回復(fù)

使用道具 舉報(bào)

12#
ID:401564 發(fā)表于 2023-2-18 21:03 | 只看該作者
現(xiàn)在看來
我?guī)讉(gè)月前的回答,還是對(duì)
搞了那么久,連位和下降沿都沒分清
回復(fù)

使用道具 舉報(bào)

13#
ID:213173 發(fā)表于 2023-2-19 10:31 | 只看該作者
正在學(xué)習(xí)51 發(fā)表于 2023-2-14 03:50
起始字節(jié)嗎?我看書上說的他給個(gè)圖就是下沿起始,所以這個(gè)下沿不是1bit嗎,并不是一個(gè)字節(jié)8nit啊。
而我 ...

MCU通訊是基于兩個(gè)基本的物理量——電平與時(shí)間。電平的高低隨時(shí)間變化就是脈沖,對(duì)脈沖的高低及脈寬識(shí)別就能實(shí)現(xiàn)最基本的通訊需求。在此基礎(chǔ)上發(fā)展出復(fù)雜的通訊技術(shù),在特定時(shí)間的電平狀態(tài)為1bit,8 bit 為一個(gè)字節(jié),若干字節(jié)組成一幀數(shù)據(jù)。為了保證正確通訊,發(fā)送端與接收端必須對(duì)通訊信號(hào)含義做統(tǒng)一規(guī)定,這個(gè)規(guī)定就是通訊協(xié)議。通訊雙方呼叫起始可以是一個(gè)高電平或低電平,也可以是一個(gè)上升沿或下降沿,也可以是特定寬度的脈沖,也可以是特定的脈沖串。書上畫的上升沿或下沿不等于1bit,只是一個(gè)電平變化狀態(tài)。只有對(duì)上升沿或下沿賦予1bit數(shù)據(jù)含義才能說等于1bit。說的有點(diǎn)啰嗦,也不一定準(zhǔn)確,姑妄聽之。
回復(fù)

使用道具 舉報(bào)

14#
ID:1063483 發(fā)表于 2023-2-21 09:44 | 只看該作者
上位機(jī)要接收完整的以字節(jié) BYTE 為單位數(shù)據(jù),然后再去取某一位 bit 的值進(jìn)行判斷。麻煩的是電腦一般32位,甚至64位了,要考慮單片機(jī)是多少位機(jī),比如:8位的單片機(jī),就要用聯(lián)合體或者結(jié)構(gòu)體把 4 byte 的數(shù)據(jù)弄成32位的雙字 doubleword 給電腦,收到以后,再取含有起始位的字節(jié)里找到并判斷,比如:0xffff,肯定起始位就是1,0x0000,起始位就是0,當(dāng)然,其它比如:0xff8f  這種類型的話,這里面還有大端小端數(shù)據(jù)的分別,否則就容易取錯(cuò)了。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表