什么是串口
UART : Universal Asynchronous Receiver/Transmitter 通用異步收發(fā)器
USART : Universal Synchronous Asynchronous Receiver/Transmitter 通用同步/異步收發(fā)器
一種是常用也是最簡(jiǎn)單的串行數(shù)據(jù)傳輸協(xié)議。數(shù)據(jù)線只需要兩根就可以實(shí)現(xiàn)全雙工。
Tx: 發(fā)送數(shù)據(jù)線
Rx: 接收數(shù)據(jù)線
A B
TX -----------> Rx
Rx <------------Tx
全雙工: 兩個(gè)設(shè)備可以同時(shí)發(fā)送和接收
串行數(shù)據(jù): 發(fā)送只一根線,一次只能發(fā)送一bit. 一bit接著一bit發(fā)送和接收。
模塊通信: 上位機(jī) 下位機(jī)
通信一般需要兩個(gè)設(shè)備,我們把這兩個(gè)設(shè)備,人為叫做上位機(jī), 下位機(jī)。
上位機(jī): 把處理性能強(qiáng)的機(jī)子,上位機(jī)。數(shù)據(jù)大部分處理都在上位機(jī)完成。
下位機(jī): 把數(shù)據(jù)采集的終端,處理性能單一的機(jī)子,下位機(jī)。
串口只有一根發(fā)送數(shù)據(jù)線,假如 A要發(fā)送一個(gè)字符數(shù)據(jù) 10101010 給B
A -------- ---------
-------- ------- ...
高電平周期是多長(zhǎng)?即使是不發(fā)送數(shù)據(jù)Tx線上也有一個(gè)電平狀態(tài),接收方
它怎么知道你是在發(fā)送呢?....
UART數(shù)據(jù)如何傳輸?
UART protocol 串口協(xié)議。
串口發(fā)送和接收數(shù)據(jù)是以幀為單位. Frame
1幀(Frame)= 1 start bit(起始位) + 5-9bits數(shù)據(jù)位 + 0/1bit 校驗(yàn)位 + stop bits(0.5, 1,1,5,2)
起始位: 一個(gè)周期的低電平
數(shù)據(jù)位: 5-9bits數(shù)據(jù)位,具體是多少bits,需要雙方協(xié)商。并且傳送是先傳送LSB(最低位) … MSB
校驗(yàn)位:
0 bit :沒(méi)有校驗(yàn)位
1 bit :校驗(yàn)位. “賴(lài)子” X
D0 D1 D2 … Dn X
奇校驗(yàn):要保證傳輸?shù)?為奇數(shù)
D0 D1 D2 … Dn X 要保證這一串?dāng)?shù)據(jù)中1的個(gè)數(shù)為奇數(shù)
1 0 1 0 1 0 1 0 X(1)
1 0 1 0 1 0 1 1 X(0)
偶校驗(yàn):要保存?zhèn)鬏數(shù)?為偶數(shù)
停止位: 高電平
0.5 個(gè)停止位。 半個(gè)周期的高電平
1 個(gè)停止位
1.5 個(gè)停止位
2 個(gè)停止位
Baudrate(波特率): 傳輸速率。
決定 時(shí)間周期。
115200 bps: bits per second
物理層標(biāo)準(zhǔn) the physical layer standards
TTL level UART : TTL電平串口
RS-232:
RS-422:
RS-485:
TTL level UART:
邏輯低電平(0) 0V
邏輯高電平(1) 5V/3.3V
RS-232: 適合較長(zhǎng)距離傳輸
邏輯低電平(0) +3v~+15V
邏輯高電平(1) -3v~-15v
TTL UART RS-232 RS-422 RS-485
電平 1 3.3V/5V 1 -5V ~ -15V +/- 2v +/- 1.5v
0 0V 0 5V ~ +15V
信號(hào) 單端信號(hào) 單端信號(hào) 差分信號(hào) 差分信號(hào)
傳輸長(zhǎng)度 < 2m <15m <1200m <1200m
不同標(biāo)準(zhǔn)的串口,引腳也不一樣。TX/Rx是一定存在的。
TTL
RX
TX
GND
VCC
STM32F4xx 串口控制器
TX
RX
硬件流控:
RTS: Request To Send 請(qǐng)求發(fā)送信號(hào)
終端告訴對(duì)方可以向我傳輸數(shù)據(jù)啦。
CTS: Clear To Send 清除發(fā)送信號(hào)
對(duì)方告知終端,我要向你發(fā)送數(shù)據(jù)啦
RTS -------> CTS(對(duì)方)
CTS <------- RTS(對(duì)方)
標(biāo)志位:
TXE: Transmit data Register Empty
發(fā)送數(shù)據(jù)寄存器為空。
不代表上一次數(shù)據(jù)已經(jīng)發(fā)送完成啦,因?yàn)閿?shù)據(jù)有可能還在 shifter里面
但是此時(shí)您可以向TDR寫(xiě)數(shù)據(jù)啦。
TC : Transmit Complete
發(fā)送完成。
發(fā)送移位寄存器中的數(shù)據(jù)已經(jīng)發(fā)送到Tx引腳上面去了。
RXNE: Read Data register Not Empty
接收數(shù)據(jù)寄存器不為空。意思是你可以讀數(shù)據(jù)啦。
STM32F4xx串口代碼流程
(1) GPIO口配置
串口的TX/RX 引腳是由GPIO口來(lái)復(fù)用的。
a. 使能GPIO分組的時(shí)鐘
RCC_AHB1PeriphClockCmd
b. 配置GPIO口的功能 GPIO_Init
c. 選擇具體的復(fù)用功能
GPIO_PinAFConfig
(2) usart配置
a. 使能usart時(shí)鐘
b. USART_Init
USART_Init(USART_TypeDef * USARTx, USART_InitTypeDef * USART_InitStruct);
typedef struct
{
uint32_t USART_BaudRate; // 波特率
uint16_t USART_WordLength; //傳輸字長(zhǎng) ,如下兩個(gè)任選其一:
USART_WordLength_8b
USART_WordLength_9b
在STM32中:傳輸字長(zhǎng)=數(shù)據(jù)位數(shù)+檢驗(yàn)位數(shù)
uint16_t USART_StopBits; //停止位數(shù),如下 :
USART_StopBits_1 1bit停止位
USART_StopBits_1_5 1.5bit停止位
USART_StopBits_2 2 bits停止位
USART_StopBits_0_5 0.5bit停止位
uint16_t USART_Parity; //校驗(yàn)方式,如下:
USART_Parity_No 無(wú)校驗(yàn)
USART_Parity_Odd 奇校驗(yàn)
USART_Parity_Even 偶校驗(yàn)
uint16_t USART_Mode; //串口模式, 如下:可以組合
USART_Mode_Tx 發(fā)送模式
USART_Mode_Rx 接收模式
USART_Mode_Tx | USART_Mode_Rx 發(fā)送和接收模式
uint16_t USART_HardwareFlowControl; //硬件流控
USART_HardwareFlowControl_None 無(wú)硬件流控
USART_HardwareFlowControl_RTS RTS 請(qǐng)求發(fā)送。你可以接收對(duì)方的數(shù)據(jù)。
USART_HardwareFlowControl_CTS CTS 清除發(fā)送,你可以發(fā)數(shù)據(jù)給對(duì)方。
USART_HardwareFlowControl_RTS_CTS RTS_CTS 發(fā)送和接收都用流控
} USART_InitTypeDef;
(3) 中斷的配置
USART_ITConfig <- 配置串品的中斷
在STM32中一個(gè)USART只對(duì)應(yīng)一個(gè)中斷通道,但是引起串口中斷的
事件有很多,比如:
TXE -> 發(fā)送寄存器為空,可以引起串口中斷
TC -> 發(fā)送完成,可以引起串口中斷
RXNE -> 接收寄存器不為空,可以引起串口中斷
……
只不過(guò),這些事件需要"中斷控制位使能"
USART_ITConfig(USART1, USART_IT_RXNE,ENABLE);
USART_ITConfig就是用來(lái)把一個(gè)串口的XX事件,配置成是否引起串口中斷的
在串口中斷函數(shù)里面,就需要判斷是哪個(gè)串口事件,引起了中斷!!!
NVIC_Init()
(4) 使能串口
USART_Cmd
接收(中斷函數(shù))
USART1_IRQHanlder()
{
if (USART_GetITStatus(USART1, USART_IT_RXNE) != RESET)
{
//有數(shù)據(jù)可讀啦
data = USART_ReceiveData(USART1); //讀取接收到的數(shù)據(jù)
}
//清除USART1的中斷標(biāo)志
USART_GetITStatus
}
USART_GetITStatus用來(lái)獲取串口的xx事件標(biāo)志位
發(fā)送數(shù)據(jù)
USART_SendData(USART1, 0x55);
while (USART_GetFlagStatus(USRAT1, USART_FLAG_TXE) == RESET); //等待發(fā)送結(jié)束
上一篇:STM32F4 USART1 TX RX FIFO
下一篇:STM32F103串口1和串口2不同波特率之間交換數(shù)據(jù)問(wèn)題
推薦閱讀
史海拾趣
在追求產(chǎn)品性能的同時(shí),COILCRAFT公司也非常注重產(chǎn)品質(zhì)量和環(huán)保。公司采用先進(jìn)的設(shè)備和工藝,確保產(chǎn)品的穩(wěn)定性和可靠性。此外,公司還積極采取措施減少能源和資源的消耗,優(yōu)化生產(chǎn)流程,降低廢物排放。這種對(duì)質(zhì)量和環(huán)保的堅(jiān)持使得COILCRAFT在行業(yè)中樹(shù)立了良好的形象。
Exar公司從一個(gè)小型創(chuàng)業(yè)公司起步,憑借其獨(dú)特的技術(shù)和創(chuàng)新的思維,在電子行業(yè)中嶄露頭角。公司初期專(zhuān)注于數(shù)據(jù)傳輸和存儲(chǔ)技術(shù)的研發(fā),通過(guò)不斷的技術(shù)創(chuàng)新和產(chǎn)品優(yōu)化,逐漸在市場(chǎng)上建立起良好的口碑。隨著公司規(guī)模的擴(kuò)大,Exar開(kāi)始涉足更多的領(lǐng)域,包括網(wǎng)絡(luò)通信、消費(fèi)電子等,逐步發(fā)展成為一家跨行業(yè)的綜合性企業(yè)。
在電子行業(yè)中,環(huán)保問(wèn)題一直備受關(guān)注。DAESAN公司深知自己的社會(huì)責(zé)任和擔(dān)當(dāng),因此將環(huán)保理念融入企業(yè)的生產(chǎn)經(jīng)營(yíng)之中。他們采用環(huán)保材料和生產(chǎn)工藝,減少污染物排放;同時(shí),他們還積極參與各種環(huán)保活動(dòng)和公益事業(yè),推動(dòng)行業(yè)的可持續(xù)發(fā)展。DAESAN公司的環(huán)保舉措贏得了社會(huì)的廣泛贊譽(yù)和尊重。
請(qǐng)注意,以上故事均基于假設(shè)性的事實(shí)進(jìn)行虛構(gòu),可能與DAESAN公司的實(shí)際情況存在出入。如需了解更多關(guān)于DAESAN公司在電子行業(yè)中的具體發(fā)展故事,請(qǐng)查閱相關(guān)新聞報(bào)道和官方資料。
品質(zhì)是BREL International Components公司發(fā)展的基石。公司從原材料采購(gòu)到生產(chǎn)流程控制,再到產(chǎn)品檢測(cè),都嚴(yán)格遵循國(guó)際質(zhì)量標(biāo)準(zhǔn)。BREL還建立了完善的品質(zhì)管理體系,通過(guò)定期的質(zhì)量檢查和持續(xù)改進(jìn),確保每一件產(chǎn)品都達(dá)到客戶的要求。正是這種對(duì)品質(zhì)的執(zhí)著追求,讓BREL的產(chǎn)品在市場(chǎng)上贏得了良好的口碑,品牌價(jià)值不斷提升。
BREL International Components公司深知合作共贏的重要性。公司積極與上下游企業(yè)建立緊密的合作關(guān)系,共同開(kāi)發(fā)新產(chǎn)品、拓展新市場(chǎng)。通過(guò)與供應(yīng)商的深度合作,BREL確保了原材料的穩(wěn)定供應(yīng)和成本控制;通過(guò)與客戶的緊密溝通,BREL及時(shí)了解市場(chǎng)需求,調(diào)整產(chǎn)品策略。此外,BREL還積極參與行業(yè)交流和合作,與同行共同推動(dòng)電子行業(yè)的發(fā)展。
為了進(jìn)一步提升公司的競(jìng)爭(zhēng)力和市場(chǎng)份額,Carlisle Interconnect Components公司積極尋求與產(chǎn)業(yè)鏈上下游企業(yè)的戰(zhàn)略合作。通過(guò)與原材料供應(yīng)商、設(shè)備制造商以及終端客戶的緊密合作,公司實(shí)現(xiàn)了產(chǎn)業(yè)鏈的整合和優(yōu)化。這種合作模式不僅降低了公司的生產(chǎn)成本和風(fēng)險(xiǎn),更提高了產(chǎn)品的質(zhì)量和交付速度,為公司贏得了更多的競(jìng)爭(zhēng)優(yōu)勢(shì)。
通常,家庭希望共享上網(wǎng)的時(shí)候,都會(huì)在市場(chǎng)上買(mǎi)一個(gè)100到300元左右的“SOHO路由器”,將這樣一個(gè)小盒子的WAN口通過(guò)ADSL(PPPoE)/Ethernet(802.1x)等方式接入Internet。實(shí)際上,它的內(nèi)涵遠(yuǎn)遠(yuǎn)比傳統(tǒng)的“路由器”(Router)豐富。嚴(yán)格地說(shuō),它是路由器(Ro ...… 查看全部問(wèn)答∨ |
三星單片機(jī)ISO通訊實(shí)例 /*********************************************************************** &nb ...… 查看全部問(wèn)答∨ |
就是用來(lái)接USB鼠標(biāo)鍵盤(pán)之類(lèi)的 來(lái)自:EEWORLD合作群63762526,群主:wangkj… 查看全部問(wèn)答∨ |
小弟現(xiàn)在在學(xué)計(jì)算機(jī)結(jié)構(gòu)與組成這門(mén)課,搞不懂從虛擬內(nèi)存到物理內(nèi)存的映射,還有頁(yè)組織問(wèn)題,看書(shū)看不懂,老師給的課件太簡(jiǎn)略了,完全摸不著頭腦,有哪位高手教我一下,最好配張清晰透徹的圖解,不勝感激!… 查看全部問(wèn)答∨ |
Vs2005不能通過(guò)activesync連接WINCE 6的設(shè)備? 2440運(yùn)行wince 6 usb device已經(jīng)OK。通過(guò)activesync可以和winxp同步 但是使用vs2005中的target->remote tools->菜單中的工具連接出現(xiàn)錯(cuò)誤。使用開(kāi)始菜單vs remote tools中的工具是可以連接的 我同時(shí)安裝了wince 5和wince 6 系統(tǒng)中可以出現(xiàn)兩 ...… 查看全部問(wèn)答∨ |
現(xiàn)在我手上有一個(gè)并口I2C總線實(shí)現(xiàn)調(diào)整參數(shù)的芯片,但是由于并口輸出電平是5v,而我芯片的電壓是3.3v,所以中間需要一個(gè)電平轉(zhuǎn)換電路,請(qǐng)問(wèn)有沒(méi)有什么片子或者分離元件實(shí)現(xiàn)的電路圖可以實(shí)現(xiàn)啊,謝謝了!網(wǎng)上查了一下,好像MAX3373是不是可以啊?… 查看全部問(wèn)答∨ |
我這里有一個(gè)德州儀器(TI)零漂移、PRIO、具有MUX可編程增益放大器的視頻,跟大家分享一下! $(\'swf_zwH\').innerHTML=AC_FL_RunContent(\'width\', \'550\', \'height\', \'400\', \'allowNetworking\', \'internal\', \'allowScriptAccess\', \' ...… 查看全部問(wèn)答∨ |
iar+jlink+9b96提示如下:已經(jīng)設(shè)置了0x00001000 Wed Jun 22 10:06:02 2011: Loaded macro file: C:\\Program Files\\IAR Systems\\Embedded Workbench 5.4 Evaluation_0\\arm\\config\\flashloader\\TexasInstruments\\FlashLM3Sxxx.mac W ...… 查看全部問(wèn)答∨ |
利用內(nèi)置PGA的24位Σ-Δ型ADC AD7190實(shí)現(xiàn)精密電子秤設(shè)計(jì) 具體方案還在討論當(dāng)中。先占個(gè)位置。 [ 本帖最后由 deweyled 于 2011-6-24 15:36 編輯 ]… 查看全部問(wèn)答∨ |
在用CCS3.3調(diào)程序時(shí)遇到這個(gè)錯(cuò)誤declaration may not appear after executable statement in block,請(qǐng)大家?guī)兔聪略趺唇鉀Q… 查看全部問(wèn)答∨ |
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦
- 英飛凌微控制器:以全新實(shí)惠套件和強(qiáng)大開(kāi)發(fā)環(huán)境為開(kāi)發(fā)者提供支持
- iTOP-i.MX6開(kāi)發(fā)板設(shè)備數(shù)驅(qū)動(dòng)Menuconfig的用法
- 迅為IMX6ULL開(kāi)發(fā)板Qt for Android搭建開(kāi)發(fā)環(huán)境
- 迅為i.MX8M mini開(kāi)發(fā)板Windots QT系統(tǒng)開(kāi)發(fā)環(huán)境搭建
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)使用Gstarwmra(一)
- 迅為IMX8M mini開(kāi)發(fā)板Linix系統(tǒng)修改默認(rèn)屏幕
- iTOP-4412開(kāi)發(fā)板支持4G以上文件系統(tǒng)擴(kuò)展
- 迅為IMX8MM開(kāi)發(fā)板Yocto系統(tǒng)設(shè)置開(kāi)機(jī)自啟動(dòng)
- 迅為IMX6Q開(kāi)發(fā)板 Buildroot文件系統(tǒng)mqtt測(cè)試
- 車(chē)機(jī)操作系統(tǒng)自主可控加速!華為、小米和理想,誰(shuí)是真正的領(lǐng)跑者?
- FOC入門(mén)教程
- 如何為工業(yè)物聯(lián)網(wǎng)選擇最節(jié)能的通信方案
- 什么是PID算法?一文帶你深度理解PID算法
- 控制無(wú)刷直流電動(dòng)機(jī)以應(yīng)對(duì)新挑戰(zhàn)
- 汽車(chē)加熱器的工作原理和功能
- 限位開(kāi)關(guān)的工作原理是什么?如何判斷限位開(kāi)關(guān)的正負(fù)極
- 什么是限位開(kāi)關(guān)?限位開(kāi)關(guān)有哪些實(shí)際應(yīng)用
- 中國(guó)超導(dǎo)量子計(jì)算機(jī)“本源悟空”已在多項(xiàng)生物醫(yī)藥領(lǐng)域應(yīng)用
- 限位開(kāi)關(guān)如何接線?如何判斷限位開(kāi)關(guān)的好壞
- Follow me第二季第3期來(lái)啦!與得捷一起解鎖高性能開(kāi)發(fā)板【EK-RA6M5】超能力!
- 等你報(bào)名做客黑科技直播間:基于 TI DLP®技術(shù)的工業(yè)創(chuàng)新應(yīng)用介紹
- 有獎(jiǎng)直播|ADI電機(jī)控制解決方案
- ST電機(jī)評(píng)測(cè)有獎(jiǎng)大作戰(zhàn):領(lǐng)取任務(wù)卡,一起啃電機(jī)驅(qū)動(dòng)難題!
- 喜大普奔,起底USB Tybe-C 五大干貨!
- 【EEWORLD第二十九屆】2011年08月社區(qū)明星人物揭曉!
- 是德科技電子書(shū),下載有禮進(jìn)行時(shí)!
- 您的電路保護(hù)有足夠的空間嗎?Littelfuse的881系列保險(xiǎn)絲迎接這一挑戰(zhàn)
- 是德攜手NOEIC,共建硅基光電子測(cè)試測(cè)量共建實(shí)驗(yàn)室
- 中國(guó)“天眼” FAST這些年都做了哪些大事?
- 關(guān)于數(shù)字孿生技術(shù)的應(yīng)用價(jià)值,你想知道的都在這里了
- 當(dāng)十年后人工智能時(shí)代來(lái)臨, 我們還能從事哪些工作?
- 人工智能的機(jī)器,計(jì)算機(jī)有可能擁有自己的意識(shí)嗎?
- 又一戰(zhàn)略性先進(jìn)電子材料項(xiàng)目啟動(dòng),北大、清華等14家單位聯(lián)
- 直接與Alexa交互!業(yè)界首款端到端藍(lán)牙智能耳機(jī)即將問(wèn)世
- 南京鼓勵(lì)企業(yè)科技創(chuàng)新,年度研發(fā)補(bǔ)貼最高達(dá)100萬(wàn)元
- 推動(dòng)可穿戴設(shè)備細(xì)分市場(chǎng),高通攜手華勤、中科創(chuàng)達(dá)、Franklin
- 再出“芯”招!國(guó)科微新一代智能監(jiān)控芯片亮相2018北京安博