色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

一文詳解STM32串口通信

單片機與嵌入式 ? 來源:單片機與嵌入式 ? 2023-01-15 10:51 ? 次閱讀
1 什么是串口通訊?
串行通訊是指僅用一根接收線和一根發送線就能將數據以位進行傳輸的一種通訊方式。盡管串行通訊的比按字節傳輸的并行通信慢,但是串口可以在僅僅使用兩根線的情況下就能實現數據的傳輸。
典型的串口通信使用3根線完成,分別是地線、發送、接收。由于串口通信是異步的,所以端口能夠在一根線上發送數據同時在另一根線上接收數據。串口通信最重要的參數是波特率、數據位、停止位和奇偶的校驗。對于兩個需要進行串口通信的端口,這些參數必須匹配,這也是能夠實現串口通訊的前提。如下是串行通訊示數據傳輸意圖b6c412a8-93fb-11ed-bfe3-dac502259ad0.png ? ? ?2 串口通訊的通訊協議 最初數據是模擬信號輸出簡單過程量,后來儀表接口出現了RS232接口,這種接口可以實現點對點的通信方式,但這種方式不能實現聯網功能,這就促生了RS485我們知道串口通信的數據傳輸都是0和1,在單總線、I2CUART中都是通過一根線的高低電平來判斷邏輯1或者邏輯0,但這種信號線的GND再與其他設備形成共地模式的通信,這種共地模式傳輸容易產生干擾,并且抗干擾性能也比較弱。所以差分通信、支持多機通信、抗干擾強的RS485就被廣泛的使用了。RS485通信最大特點就是傳輸速度可以達到10Mb/s以上,傳輸距離可以達到3000米左右。大家需要注意的是雖然485最大速度和最大傳輸距離都很大,但是傳輸的速度是會隨距離的增加而變慢的,所以兩者是不可以兼得的。

3 串口通訊的物理層

串口通訊的物理層有很多標準,例如上面提到的,我們主要講解RS-232標準,RS-232標準主要規定了信號的用途、通訊接口以及信號的電平標準。b6dc31d0-93fb-11ed-bfe3-dac502259ad0.png在上面的通訊方式中,兩個通訊設備的"DB9接口"之間通過串口信號線建立起連接,串口信號線中使用"RS-232標準"傳輸數據信號。由于RS-232電平標準的信號不能直接被控制器直接識別,所以這些信號會經過一個"電平轉換芯片"轉換成控制器能識別的"TTL校準"的電平信號,才能實現通訊。下圖為DB9標準串口通訊接口:b705a876-93fb-11ed-bfe3-dac502259ad0.pngDB9引腳說明:b720997e-93fb-11ed-bfe3-dac502259ad0.png上表中的是計算機端的DB9公頭標準接法,由于兩個通訊設備之間的收發信號(RXD與TXD)應交叉相連,所以調制調解器端的DB9母頭的收發信號接法一般與公頭的相反,兩個設備之間連接時,只要使用"直通型"的串口線連接起來即可。 b72e12de-93fb-11ed-bfe3-dac502259ad0.png ? ? ?串口線中的RTS、CTS、DSR、DTR及DCD信號,使用邏輯 1表示信號有效,邏輯0表示信號無效。例如,當計算機端控制DTR信號線表示為邏輯1時,它是為了告知遠端的調制調解器,本機已準備好接收數據,0則表示還沒準備就緒。

4 波特率

波特率是指數據信號對載波的調制速率,它用單位時間內載波調制狀態改變的次數來表示。b75d2a92-93fb-11ed-bfe3-dac502259ad0.png比如波特率為9600bps;代表的就是每秒中傳輸9600bit,也就是相當于每一秒中劃分成了9600等份。因此,那么每1bit的時間就是1/9600秒=104.1666...us。約0.1ms。既然是9600等份,即每1bit緊接著下一個比特,不存在額外的間隔。兩臺設備要想實現串口通訊,這收發端設置的波特率必須相同,否則是沒辦法實現通訊的。收發波特率一致可以實現通訊:b771f30a-93fb-11ed-bfe3-dac502259ad0.gif收發波特率不一致,導致RX端不能正常接收:b787ebec-93fb-11ed-bfe3-dac502259ad0.gif

5 串口通訊的數據結構

b7a4e378-93fb-11ed-bfe3-dac502259ad0.png ? ? ?起始位:起始位必須是持續一個比特時間的邏輯0電平,標志傳輸一個字符的開始,接收方可用起始位使自己的接收時鐘與發送方的數據同步。數據位:數據位緊跟在起始位之后,是通信中的真正有效信息。數據位的位數可以由通信雙方共同約定。傳輸數據時先傳送字符的低位,后傳送字符的高位。奇偶校驗位:奇偶校驗位僅占一位,用于進行奇校驗或偶校驗,奇偶檢驗位不是必須有的。如果是奇校驗,需要保證傳輸的數據總共有奇數個邏輯高位;如果是偶校驗,需要保證傳輸的數據總共有偶數個邏輯高位。停止位:停止位可以是是1位、1.5位或2位,可以由軟件設定。它一定是邏輯1電平,標志著傳輸一個字符的結束。空閑位:空閑位是指從一個字符的停止位結束到下一個字符的起始位開始,表示線路處于空閑狀態,必須由高電平來填充。

6 單雙工通訊

單工:數據傳輸只支持數據在一個方向上傳輸;半雙工:允許數據在兩個方向上傳輸,但某一時刻只允許數據在一個方向上傳輸,實際上是一種切換方向的單工通信,不需要獨立的接收端和發送端,兩者可合并為一個端口;全雙工:允許數據同時在兩個方向上傳輸,因此全雙工通信是兩個單工方式的結合,需要獨立的接收端和發送端。b7b793e2-93fb-11ed-bfe3-dac502259ad0.png

7 STM32中的串口通訊

STM32串口通信接口有兩種,分別是:UART(通用異步收發器)、USART(通用同步異步收發器),對于大容量STM32F10x系列芯片,分別由3個USART和兩個UART。b7e311d4-93fb-11ed-bfe3-dac502259ad0.pngTXD:數據發送引腳;RXD:數據輸入引腳對于兩芯片的間的連接,兩個芯片GND共地,同時TXD和RXD交叉連接,這樣兩個芯片間可進行TTL電平通信。但如果對于芯片和PC機相連,除了共地條件外,不能使用如上的直接交叉連接,雖然兩者都有TXD和RXD引腳,但通常PC機使用的是RS232接口(9針),通常是TXC和RXD經過電平轉換得到,故如果要使芯片與PC機的RS232接口直接通信,需要將芯片的輸入輸出端口也電平轉換為RS232類型,再交叉連接。二者的電平標準不同:
  • 單片機的點評標準(TTL電平):+5V表示1,0V表示0;
  • RS232電平標準:+15/+13V表示0,-15/-13表示1。
b6dc31d0-93fb-11ed-bfe3-dac502259ad0.png因此單片機與PC機進行串口通信應該遵循:在單片機串口與上位機給出的RS232口之間,通過電平轉換電路實現TTL電平與RS232電平間的轉換。如果使用USB轉串口也可以實現串口通訊,USB轉串口電路圖如下所示。b8078154-93fb-11ed-bfe3-dac502259ad0.png STM32中串口通訊已經給大家建好了相應的庫函數,大家在使用和配置串口的時候直接進行調用庫函數和配置就行了,STM32串口通信庫函數實例相關文章學習STM32單片機,繞不開的串口STM32實例-用按鍵控制串口發送數據,文末附代碼請大家參照一下代碼:1、初始化結構體代碼b8226cee-93fb-11ed-bfe3-dac502259ad0.png2、NVIC配置中斷優先級b831a498-93fb-11ed-bfe3-dac502259ad0.png

3、USART配置函數

void DEBUG_USART_Config(void)
{
 GPIO_InitTypeDef GPIO_InitStructure;
 USART_InitTypeDef USART_InitStructure;


 /* 第一步:初始化GPIO */
  // 打開串口GPIO的時鐘
 DEBUG_USART_GPIO_APBxClkCmd(DEBUG_USART_GPIO_CLK, ENABLE);
  // 將USART Tx的GPIO配置為推挽復用模式
 GPIO_InitStructure.GPIO_Pin = DEBUG_USART_TX_GPIO_PIN;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
 GPIO_Init(DEBUG_USART_TX_GPIO_PORT, &GPIO_InitStructure);


  // 將USART Rx的GPIO配置為浮空輸入模式
 GPIO_InitStructure.GPIO_Pin = DEBUG_USART_RX_GPIO_PIN;
 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
 GPIO_Init(DEBUG_USART_RX_GPIO_PORT, &GPIO_InitStructure); 


 /* 第二步:配置串口的初始化結構體 */
  // 打開串口外設的時鐘
 DEBUG_USART_APBxClkCmd(DEBUG_USART_CLK, ENABLE);
 // 配置串口的工作參數
 // 配置波特率
 USART_InitStructure.USART_BaudRate = DEBUG_USART_BAUDRATE;
 // 配置 針數據字長
 USART_InitStructure.USART_WordLength = USART_WordLength_8b;
 // 配置停止位
 USART_InitStructure.USART_StopBits = USART_StopBits_1;
 // 配置校驗位
 USART_InitStructure.USART_Parity = USART_Parity_No ;
 // 配置硬件流控制
 USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
 // 配置工作模式,收發一起
 USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;
 // 完成串口的初始化配置
 USART_Init(DEBUG_USARTx, &USART_InitStructure);


/*--------------------------------------------------------*/
 // 串口中斷優先級配置
 NVIC_Configuration();


 // 使能串口接收中斷
 USART_ITConfig(DEBUG_USARTx, USART_IT_RXNE, ENABLE);
/*--------------------------------------------------------*/


 /* 第三步:使能串口 */ 
  // 使能串口
 USART_Cmd(DEBUG_USARTx, ENABLE); 
}

審核編輯:陳陳


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • STM32
    +關注

    關注

    2270

    文章

    10918

    瀏覽量

    356850
  • 串口通信
    +關注

    關注

    34

    文章

    1627

    瀏覽量

    55621

原文標題:STM32串口通信簡明知識

文章出處:【微信號:單片機與嵌入式,微信公眾號:單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32f103串口通信詳解原理

    STM32f103串口通信詳解原理分析首先,我們從串口通信的物理層和協議層來分別分析。物理層對于
    發表于 08-12 06:49

    stm32串口調試軟件

    電子發燒友網站提供《stm32串口調試軟件.rar》資料免費下載
    發表于 09-06 16:59 ?6次下載

    stm32f407串口通信的代碼

    stm32f407串口通信的代碼 原理圖還有封裝 很清楚自己畫的
    發表于 03-21 17:22 ?0次下載

    RS232-RS485串口通信詳解

    RS232-RS485串口通信詳解,很不錯的東東
    發表于 08-09 15:08 ?29次下載

    STM32串口DMA問題詳解

    昨天晚上在STM32串口DMA的問題上糾結了好長時間,所以今天上午寫篇博客來談談我對串口DMA發送的理解。
    的頭像 發表于 10-27 16:16 ?8472次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>DMA問題<b class='flag-5'>詳解</b>

    STM32串口通信數據亂碼的相關問題

    STM32串口通信以及溫度采集搞定,其中主要遇到STM32系列單片機時鐘樹的問題,串口通信遇到
    發表于 06-22 08:01 ?1.2w次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>數據亂碼的相關問題

    STM32串口通訊

    STM32串口通訊USART串口通信實踐USART串口通信實踐1、實驗環境參考資料 野火官
    發表于 12-06 20:21 ?13次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b>通訊

    STM32串口通信

    STM32串口通信串口通信簡介編程代碼注意:本文參考STM32F10XXX數據手冊
    發表于 12-07 09:36 ?15次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    Stm32串口通信基礎實驗

    目錄二、stm32串口通信二級目錄三級目錄二、stm32串口通信1.本次實驗使用的是
    發表于 12-07 09:36 ?32次下載
    <b class='flag-5'>Stm32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>基礎實驗

    "2個STM32串口之間的串口通信(RX,TX)"

    "2個STM32串口之間的串口通信(RX,TX)"
    發表于 12-09 17:21 ?83次下載
    "2個<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>之間的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>(RX,TX)"

    STM32串口通信晶振導致問題出現

    STM32串口通信問題關于stm32串口通信的問題,比較常見的主要是以下幾個問題:1,因為波特率
    發表于 12-24 18:38 ?2次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>晶振導致問題出現

    stm32串口代碼詳解

    stm32串口
    發表于 12-24 18:38 ?52次下載
    <b class='flag-5'>stm32</b><b class='flag-5'>串口</b>代碼<b class='flag-5'>詳解</b>

    STM32串口通信

    STM32串口通信串口通信簡介編程代碼注意:本文參考STM32F10XXX數據手冊
    發表于 01-14 13:47 ?12次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>

    (二)STM32串口總結(庫函數版)

    STM32F103ZET6 來說的。意思很簡單,就是說你要用USB串口將程序燒寫到STM32中或者是要通過USB串口將電腦和STM32
    發表于 01-14 13:56 ?0次下載
    (二)<b class='flag-5'>STM32</b><b class='flag-5'>串口</b>總結(庫函數版)

    STM32串口通信簡明知識

    STM32串口通信簡明知識
    的頭像 發表于 10-25 15:48 ?1358次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>串口</b><b class='flag-5'>通信</b>簡明知識
    主站蜘蛛池模板: 激情内射亚洲一区二区三区| 护士的下面又湿又紧10P| 狠狠色色综合网站| 小莹的性荡生活| 国产二级一片内射视频播放| 色WWW永久免费视频首页| 超碰免费视频公开观看| 日本不卡三卡四卡| 国产1769一七六九视频在线| 日本wwwxx| 国产高清视频a在线大全| 午夜免费福利| 国产在线亚洲v天堂a| 亚洲精品无码不卡在线播HE| 精品免费在线视频| 在线综合 亚洲 欧美| 蜜桃AV色欲A片精品一区| 99视频导航| 日韩一区二区三区精品| 国产精品日本无码久久一老A| 亚洲2017久无码| 精品香蕉99久久久久网站| 中文字幕亚洲欧美在线视频 | 性色AV一区二区三区咪爱四虎 | 欧美黑人经典片免费观看| ZZoo兽2皇| 丝袜美女自摸| 精品日韩视频| 99蜜桃在线观看免费视频网站 | 中文字幕亚洲综合小综合在线| 欧美尤物射精集锦| 国产精品久久久久久久久免费下载 | 国产a级黄色毛片| 亚洲国产综合另类视频| 老师给美女同学开嫩苞| 成人毛片免费在线观看| 性色AV乱码一区二区三区视频| 老司机午夜影院味味| 岛国片免费看| 伊在香蕉国产在线视频| 日本亚洲中文字幕无码区|