找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

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

  [復(fù)制鏈接]
ID:1047240 發(fā)表于 2023-2-12 18:38 | 顯示全部樓層 |閱讀模式
50黑幣
過完年了我來重啟學(xué)習(xí)哈哈哈問個問題。
通信時基于軟件來協(xié)定傳輸模式的對吧?那么串行的話每次傳輸一幀數(shù)據(jù),可是軟件應(yīng)該怎么寫?我記得軟件對輸入的監(jiān)視都是以字符為單位的。


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

回復(fù)

使用道具 舉報

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

使用道具 舉報

ID:236035 發(fā)表于 2023-2-13 09:40 | 顯示全部樓層
收到起始位就認(rèn)為是報文頭了。所以協(xié)議要嚴(yán)謹(jǐn)。
回復(fù)

使用道具 舉報

ID:94031 發(fā)表于 2023-2-13 10:24 | 顯示全部樓層
通信雙方要有協(xié)議,比如一幀幾個字節(jié),起始字節(jié)是什么,結(jié)束字節(jié)是什么,中間字節(jié)含義是什么,接收方用串口中斷接收。
回復(fù)

使用道具 舉報

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

使用道具 舉報

ID:384109 發(fā)表于 2023-2-13 14:50 | 顯示全部樓層
協(xié)議是包含軟件和硬件的,并不是單一的
回復(fù)

使用道具 舉報

ID:130230 發(fā)表于 2023-2-13 17:48 | 顯示全部樓層
構(gòu)造一個通信幀就可以了有頭有尾有校驗
回復(fù)

使用道具 舉報

ID:1047240 發(fā)表于 2023-2-14 03:50 | 顯示全部樓層
xuyaqi 發(fā)表于 2023-2-13 10:24
通信雙方要有協(xié)議,比如一幀幾個字節(jié),起始字節(jié)是什么,結(jié)束字節(jié)是什么,中間字節(jié)含義是什么,接收方用串口 ...

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

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

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

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

使用道具 舉報

ID:587810 發(fā)表于 2023-2-17 13:56 | 顯示全部樓層
重點是檢測總線一幀數(shù)據(jù)的時間間隔,從而記錄數(shù)據(jù)起始位和結(jié)束位。
回復(fù)

使用道具 舉報

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

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

使用道具 舉報

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

使用道具 舉報

ID:401564 發(fā)表于 2023-2-18 21:03 | 顯示全部樓層
現(xiàn)在看來
我?guī)讉月前的回答,還是對
搞了那么久,連位和下降沿都沒分清
回復(fù)

使用道具 舉報

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

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

使用道具 舉報

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ù)的分別,否則就容易取錯了。
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

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