日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 單片機(jī) > 電子電路開(kāi)發(fā)學(xué)習(xí)
[導(dǎo)讀]前言好久沒(méi)更新文章了,這篇文章寫(xiě)寫(xiě)停停,用了近一周的時(shí)間,終于寫(xiě)完了,謝謝大家的關(guān)注。本篇文章介紹,串口協(xié)議數(shù)據(jù)幀格式、串行通信的工作方式、電平標(biāo)準(zhǔn)、編碼方式及Verilog實(shí)現(xiàn)串口發(fā)送一個(gè)字節(jié)數(shù)據(jù)和接收一個(gè)字節(jié)數(shù)據(jù)。對(duì)于MCU串口的發(fā)送接收,可能就是1行代碼就能實(shí)現(xiàn)串口的發(fā)送和...



前言

好久沒(méi)更新文章了,這篇文章寫(xiě)寫(xiě)停停,用了近一周的時(shí)間,終于寫(xiě)完了,謝謝大家的關(guān)注。本篇文章介紹,串口協(xié)議數(shù)據(jù)幀格式、串行通信的工作方式、電平標(biāo)準(zhǔn)、編碼方式及Verilog實(shí)現(xiàn)串口發(fā)送一個(gè)字節(jié)數(shù)據(jù)和接收一個(gè)字節(jié)數(shù)據(jù)。

對(duì)于MCU串口的發(fā)送接收,可能就是1行代碼就能實(shí)現(xiàn)串口的發(fā)送和接收:

STM32的串口接收和發(fā)送

  1. //STM32發(fā)送1個(gè)字節(jié)

  2. USART_SendData(USART1, 'A');

  3. while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);


  4. //STM32接收1個(gè)字節(jié):

  5. uint8_t Res;

  6. while (USART_GetFlagStatus(USART1, USART_FLAG_RXNE) == RESET);

  7. Res = USART_ReceiveData(USART1);

51單片機(jī)的發(fā)送和接收

  1. //51單片機(jī)發(fā)送1個(gè)字節(jié)

  2. SBUF = 'A;

  3. while(!TI);

  4. TI=0;



  5. //51單片機(jī)接收1個(gè)字節(jié):

  6. char Res;

  7. if(RI)

  8. {

  9. Res = SBUF;

  10. RI = 0;

  11. }

更方便一點(diǎn)的,通過(guò)重寫(xiě)C庫(kù)fput函數(shù)和fgetc函數(shù),還可以實(shí)現(xiàn)printf直接重定向到串口,用來(lái)輸出一些調(diào)試信息再方便不過(guò)了。

STM32實(shí)現(xiàn)輸入輸出重定向到串口發(fā)送接收

  1. //可重定向printf函數(shù)

  2. int fputc(int ch, FILE *f)

  3. {

  4. USART_SendData(DEBUG_USARTx, (uint8_t) ch);

  5. while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_TXE) == RESET);

  6. return (ch);

  7. }

  8. //可重定向scanf函數(shù)

  9. int fgetc(FILE *f)

  10. {

  11. while (USART_GetFlagStatus(DEBUG_USARTx, USART_FLAG_RXNE) == RESET);

  12. return (int)USART_ReceiveData(DEBUG_USARTx);

  13. }

而MCU上的串口是半導(dǎo)體廠商預(yù)先設(shè)計(jì)好的,幾乎是MCU的標(biāo)配,高度集成,使用起來(lái)十分方便,但是串口的引腳基本上是固定的,不可以更改。對(duì)于硬件橡皮泥——FPGA來(lái)說(shuō),需要使用HDL從底層串口數(shù)據(jù)幀來(lái)實(shí)現(xiàn),可以直接在任意一個(gè)引腳實(shí)現(xiàn)串口功能。為了用Verilog HDL實(shí)現(xiàn)標(biāo)準(zhǔn)的串口通訊協(xié)議,我們有必要先來(lái)詳細(xì)了解一下串口通訊協(xié)議。

串口數(shù)據(jù)幀格式

波特率

波特率,即比特率(Baud rate),即通信雙方“溝通的語(yǔ)言”,通信雙方要設(shè)置為一樣的波特率才可以正常通信。表示每秒發(fā)送的二進(jìn)制位數(shù),即傳輸1位的時(shí)間是:1/波特率 秒,如,波特率9600bps,即每秒傳輸9600bit,那么每一位的時(shí)間為:1/9600 s = 104.1666us,常用的波特率有:4800/9600/115200/12800等等,也可以根據(jù)需要自定義波特率大小,如1M或者3M,但是有的PC或者USB-TTL模塊不支持太高速度的波特率,常用的USB-TTL芯片有:CH340,CP2102,PL2103,F(xiàn)T232等,其中FT232HL芯片最大支持12M的波特率,當(dāng)然價(jià)格也比其他芯片高一些。

起始位和停止位

數(shù)據(jù)幀從起始位開(kāi)始,到停止位結(jié)束。起始信號(hào)用邏輯0表示,而停止位是用邏輯1表示,一般有0.5位、1位、1.5位或2位停止位,常用的一般是1位停止位,只要通信雙方約定一致即可。

數(shù)據(jù)位

起始位之后,緊跟著的是數(shù)據(jù)位,低位(LSB)在前,高位(MSB)在后,一般有5位、6位、7位和8位數(shù)據(jù)位,常用的是8位數(shù)據(jù)位,因?yàn)橐粋€(gè)字節(jié)正好是8位。

校驗(yàn)位

校驗(yàn)位一般用來(lái)判斷接收的數(shù)據(jù)位有無(wú)錯(cuò)誤,校驗(yàn)方法有:奇校驗(yàn)(odd)、偶校驗(yàn)(even)、0校驗(yàn)(space)、1校驗(yàn)(mark)及無(wú)校驗(yàn)(noparity)。奇校驗(yàn)要求有效數(shù)據(jù)和校驗(yàn)位中“1”的個(gè)數(shù)為奇數(shù),比如一個(gè)8位長(zhǎng)的有效數(shù)據(jù)為:01101001,此時(shí)共有4個(gè)“1”,為達(dá)到奇數(shù)個(gè)"1"的效果,校驗(yàn)位為“1”,讓“1”的個(gè)數(shù)變成5個(gè)(奇數(shù))。偶校驗(yàn)剛好相反,要求有效數(shù)據(jù)和校驗(yàn)位的“1”數(shù)量為偶數(shù),則此時(shí)為達(dá)到偶校驗(yàn)效果,校驗(yàn)位為“0”。而0校驗(yàn),即校驗(yàn)位總是為“0”,1校驗(yàn)校驗(yàn)位總是為“1”。奇偶校驗(yàn)邏輯相反,01校驗(yàn)邏輯相反。一般是奇偶校驗(yàn)或者是無(wú)校驗(yàn)位。

奇偶校驗(yàn)的Verilog實(shí)現(xiàn)

在Verilog中奇偶校驗(yàn)的計(jì)算非常簡(jiǎn)單,根據(jù)奇偶校驗(yàn)的原理,偶校驗(yàn)為數(shù)據(jù)位各位異或,奇校驗(yàn)是偶校驗(yàn)取反,通過(guò)使用單目運(yùn)算符的縮減功能,可以非常簡(jiǎn)單的計(jì)算奇偶校驗(yàn)位:

  1. input [7:0] data_in, //需要發(fā)送的8位數(shù)據(jù)


  2. wire even_bit; //偶校驗(yàn)位 = 各位異或

  3. wire odd_bit; //奇校驗(yàn)位 = ~偶校驗(yàn)位


  4. assign even_bit = ^data_in; //一元約簡(jiǎn)運(yùn)算符,等效于data_in[0] ^ data_in[1] ^ .....

  5. assign odd_bit = ~even_bit;


  6. wire POLARITY_BIT = even_bit; //偶校驗(yàn)

關(guān)于波特率允許的誤差

經(jīng)過(guò)我的實(shí)際測(cè)試,波特率是有一定的容錯(cuò)范圍的,例如,STM32配置成115200波特率,每10ms發(fā)送一個(gè)30字節(jié)的字符串,串口芯片用的CH340,上位機(jī)波特率設(shè)置成113000-121000也可以接收,無(wú)亂碼,差不多正負(fù)2000的波特率,這容錯(cuò)范圍也太大了,當(dāng)然如果發(fā)送頻率太快,數(shù)據(jù)量太大,誤碼率肯定會(huì)大大增加,所以還是建議通信雙方使用同樣的波特率以減少誤差。

串口數(shù)據(jù)的實(shí)際波形

使用串口上位機(jī)連接USB-TTL模塊,發(fā)送一個(gè)字節(jié)數(shù)據(jù):1位停止位 8位數(shù)據(jù)位 1位奇校驗(yàn)位 1位停止位,使用示波器的單次觸發(fā)功能,可以在USB-TTL模塊的TX引腳測(cè)得串口協(xié)議數(shù)據(jù)的實(shí)際波形,你知道這發(fā)送的是什么字符嗎?

一個(gè)字符的實(shí)際波形

兩個(gè)字符的實(shí)際波形

單工、半雙工、全雙工、異步和同步的區(qū)別

在介紹串口的電平標(biāo)準(zhǔn)之前,先來(lái)了解一下串行通信的工作方式,即單工、半雙工、全雙工,異步和同步的區(qū)別。

單工

單工,即數(shù)據(jù)傳輸只在一個(gè)方向上傳輸,只能你給我發(fā)送或者我給你發(fā)送,方向是固定的,不能實(shí)現(xiàn)雙向通信,如:室外天線電視、調(diào)頻廣播等。

半雙工

半雙工比單工先進(jìn)一點(diǎn),傳輸方向可以切換,允許數(shù)據(jù)在兩個(gè)方向上傳輸,但是某個(gè)時(shí)刻,只允許數(shù)據(jù)在一個(gè)方向上傳輸,可以基本雙向通信,如:對(duì)講機(jī),IIC通信。

全雙工

比半雙工更先進(jìn)的是全雙工,允許數(shù)據(jù)同時(shí)在兩個(gè)方向傳輸。發(fā)送和接收完全獨(dú)立,在發(fā)送的同時(shí)可以接收信號(hào),或者在接收的同時(shí)可以發(fā)送。它要求發(fā)送和接收設(shè)備都要有獨(dú)立的發(fā)送和接收能力,如:電話通信,SPI通信,串口通信。

同步和異步的區(qū)別

串行通信可以分為兩種類(lèi)型,一種叫同步通信,另一種叫異步通信。

簡(jiǎn)單的說(shuō),就是同步通信需要時(shí)鐘信號(hào),而異步通信不需要時(shí)鐘信號(hào)。

  • 同步:發(fā)送方發(fā)出數(shù)據(jù)后,等接收方發(fā)回響應(yīng)以后才發(fā)下一個(gè)數(shù)據(jù)包的通訊方式。

  • 異步:發(fā)送方發(fā)出數(shù)據(jù)后,不等接收方發(fā)回響應(yīng),接著發(fā)送下個(gè)數(shù)據(jù)包的通訊方式。

SPI和IIC為同步通信,UART為異步通信,而USART為同步
本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見(jiàn),不僅增加了維護(hù)成本,還影響了用戶(hù)體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(chē)(EV)作為新能源汽車(chē)的重要代表,正逐漸成為全球汽車(chē)產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車(chē)的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車(chē)的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車(chē) 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車(chē)場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周?chē)娮釉O(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開(kāi)關(guān)電源具有效率高的特性,而且開(kāi)關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開(kāi)關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉