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

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

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

3天內不再提示

Linux中裸機串口通信的基本方法

嵌入式開發愛好者 ? 來源:嵌入式開發愛好者 ? 作者:嵌入式開發愛好者 ? 2022-12-12 09:32 ? 次閱讀

大家好,我是ST。

今天主要和大家聊一聊,如何使用串口進行通信的方法。

第一:串口的基本簡介

串口又叫做串行接口,通常叫做COM接口,串行接口指的是數據一個一個的順序傳輸,通信線路簡單。使用兩條線即可實現雙向通信,一條用于發送,一條用于接收。

UART作為串口的一種,其工作原理也是將數據一位一位的進行傳輸,發送和接收各用一條線,因此通過 UART 接口與外界相連最少只需要三條線:TXD(發送)、RXD(接收)和 GND(地線)。

263e8604-7944-11ed-8abf-dac502259ad0.png

各個為含義如下:

空閑位:數據線在空閑狀態的時候為邏輯“1”狀態,也就是高電平,表示沒有數據線空閑,沒有數據傳輸。

起始位:當要傳輸數據的時候先傳輸一個邏輯“0”,也就是將數據線拉低,表示開始數據傳輸。

數據位:數據位就是實際要傳輸的數據,數據位數可選擇 5~8 位,我們一般都是按照字節傳輸數據的,一個字節 8 位,因此數據位通常是 8 位的。低位在前,先傳輸,高位最后傳輸。

奇偶校驗位:這是對數據中“1”的位數進行奇偶校驗用的,可以不使用奇偶校驗功能。停止位:數據傳輸完成標志位,停止位的位數可以選擇 1 位、1.5 位或 2 位高電平,一般都選擇 1 位停止位。

波特率:波特率就是 UART 數據傳輸的速率,也就是每秒傳輸的數據位數,一般選擇 9600、19200、115200 等。

第二:UART的特點

①、兼容 TIA/EIA-232F 標準,速度最高可到 5Mbit/S。

②、支持串行 IR 接口,兼容 IrDA,最高可到 115.2Kbit/s。

③、支持 9 位或者多節點模式(RS-485)。

④、1 或 2 位停止位。

⑤、可編程的奇偶校驗(奇校驗和偶校驗)。

⑥、自動波特率檢測(最高支持 115.2Kbit/S)。

接下來看一下UART幾個重要的寄存器,第一個就是 UART 的控制寄存器 1,即UARTx_UCR1(x=1~8)。

第二個寄存器UARTx_UFCR、UARTx_UBIR和UARTx_UBMR,寄存器UARTx_UFCR中要用的是位RFDIV(bit9:7),用來設置參考

2667332e-7944-11ed-8abf-dac502259ad0.png

通過這三個寄存器可以設置UART的波特率,波特率的計算公式為:

267ab930-7944-11ed-8abf-dac502259ad0.png? ?

Ref Freq:經過分頻以后進入 UART 的最終時鐘頻率。

UBMR:寄存器 UARTx_UBMR 中的值。

UBIR:寄存器 UARTx_UBIR 中的值。

通過 UARTx_UFCR 的 RFDIV 位、UARTx_UBMR 和 UARTx_UBIR 這三者的配合即可得

到我們想要的波特率。比如現在要設置 UART 波特率為 115200,那么可以設置 RFDIV 為

5(0b101),也就是 1 分頻,因此 Ref Freq=80MHz。設置 UBIR=71,UBMR=3124,根據上面的

公式可以得到:

26b19a54-7944-11ed-8abf-dac502259ad0.png

第三:UART的配置步驟

1、設置 UART1 的時鐘源

設置 UART 的時鐘源為 pll3_80m,設置寄存器 CCM_CSCDR1 的 UART_CLK_SEL 位為 0

即可。

2、初始化 UART1

初始化 UART1 所使用 IO,設置 UART1 的寄存器 UART1_UCR1~UART1_UCR3,設置內

容包括波特率,奇偶校驗、停止位、數據位等等。

4、使能 UART1

UART1 初始化完成以后就可以使能 UART1 了,設置寄存器 UART1_UCR1 的位 UARTEN

為 1。

5、編寫 UART1 數據收發函數

編寫兩個函數用于 UART1 的數據收發操作。

第四:代碼基本實現

先實現串口的頭文件的基寫法:

#ifndef _BSP_UART_H
#define_BSP_UART_H


//函數聲明
void uart_init(void);
void uart_to_init(void);
void uart_disable(UART_Type *base);
voiduart_enable((UART_Type*base);
#endif

函數聲明中,繼續編寫對應的源文件內容:

#include "uart.h"


//初始化串口1,波特率為115200
void uart_init(void)
{
//初始化串口IO
uart_io_init();

/*2、初始化UART1*/
uart_disable(UART1);/*先關閉UART1*/
uart_softreset(UART1);/*軟件復位UART1*/

UART1->UCR1=0;/*先清除UCR1寄存器*/
UART1->UCR1&=~(1<<14);?/*?關閉自動波特率檢測?*/
/*
?*?設置?UART?的?UCR2?寄存器,設置字長,停止位,校驗模式,關閉硬件流控
?*?bit14:?1?忽略?RTS?引腳
?*?bit8:?0?關閉奇偶校驗
?*?bit6:?0?1?位停止位
?*?bit5:?1?8?位數據位
?*?bit2:?1?打開發送
?*?bit1:?1?打開接收
?*/
?UART1->UCR2|=(1<<14)?|?(1<<5)?|?(1<<2)?|?(1<<1);
?UART1->UCR3|=1<<2;?/*?UCR3?的?bit2?必須為?1?*/
?
?/*
?*?設置波特率
?*?波特率計算公式:Baud?Rate?=?Ref?Freq?/?(16?*?(UBMR?+?1)/(UBIR+1))?
?*?如果要設置波特率為?115200,那么可以使用如下參數:
?*?Ref?Freq?=?80M?也就是寄存器?UFCR?的?bit9:7=101,?表示?1?分頻
?*?UBMR?=?3124
?*?UBIR?=?71
?*?因此波特率=?80000000/(16?*?(3124+1)/(71+1))
?*?=?80000000/(16?*?3125/72)?
?*?=?(80000000*72)?/?(16*3125)?
?*?=?115200
?*/
?UART1->UFCR=5<<7;?/*?ref?freq?等于?ipg_clk/1=80Mhz?*/
?UART1->UBIR=71;
UART1->UBMR=3124;

#if0
uart_setbaudrate(UART1,115200,80000000);/*設置波特率*/
#endif
uart_enable(UART1);/*使能串口*/
}

總結:實現串口的基本功能,對后面利用串口來調試程序,具有重要的實踐意義。

審核編輯:湯梓紅

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

    關注

    87

    文章

    11292

    瀏覽量

    209335
  • uart
    +關注

    關注

    22

    文章

    1235

    瀏覽量

    101355
  • 串口通信
    +關注

    關注

    34

    文章

    1624

    瀏覽量

    55509

原文標題:Linux中裸機串口通信的基本方法

文章出處:【微信號:嵌入式開發愛好者,微信公眾號:嵌入式開發愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于Linux環境下串口通信的應用設計

    本文介紹了Linux環境下串口通信的設計方法和步驟,并介紹了ARM9微處理器s3c2440在Linux下和C8051Fxxx系列單片機進行串
    發表于 05-24 10:50 ?2836次閱讀

    Linux裸機點燈

    Linux裸機
    怎么啦
    發布于 :2023年10月27日 08:47:24

    請問串口裸機程序只能在nand運行嗎?

    串口裸機程序只能在nand運行嗎?在UBOOT里用GO命令總是卡死在“Application Starting”那。這是為什么?還有,在LINUX想用USB向板子傳輸BIN文件怎么傳
    發表于 07-05 00:40

    linux裸機程序下載的兩種方法

    的UBOOT命令 nand 燒寫程序到開發板。 1,通過SD_Writer.exe將mmc.bin燒寫到SD 卡 ,將開發板設置到SD卡啟動。(具體方法參見飛凌開發板linux3.0.1用戶手冊.pdf) 2
    發表于 07-18 10:09

    Linux下ARM和單片機的串口通信設計資料分享

    /KaqA4mMbmq9AXnxgHWTAXQLinux下ARM和單片機的串口通信設計原創 wonhere華和技術2016-04-15 本文介紹Linux 環境下串口
    發表于 12-13 06:32

    基于Labview的串口通信數據校驗和的實現方法

    基于Labview的串口通信數據校驗和的實現方法
    發表于 01-09 17:58 ?172次下載
    基于Labview的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>數據校驗和的實現<b class='flag-5'>方法</b>

    組態軟件串口設備通信實現方法設計

    本文分析了組態軟件串口設備通信的原理及開發方法,并提出了一種使用VC++6.0開發組態軟件串口設備通信模塊的具體實現
    發表于 06-17 08:00 ?18次下載

    串口通信基本接線方法

    串口通信基本接線方法 目前較為常用的串口有9針串口(DB9)和25針串口(DB25),
    發表于 04-07 08:30 ?9943次閱讀

    基于Linux的ARM/單片機串口通信設計

    介紹Linux 環境下串口通信的設計方法和步驟,并介紹了ARM9 微處理器s3c2440 在Linux 下和C8051Fxxx 系列單片機進
    發表于 05-24 09:45 ?2825次閱讀
    基于<b class='flag-5'>Linux</b>的ARM/單片機<b class='flag-5'>串口</b><b class='flag-5'>通信</b>設計

    Linux下ARM 和單片機的串口通信設計

     介紹Linux 環境下串口通信的設計方法和步驟,并介紹了ARM9 微處理器s3c2440 在Linux 下和C8051Fxxx 系列單片機
    發表于 05-24 10:16 ?3474次閱讀
    <b class='flag-5'>Linux</b>下ARM 和單片機的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>設計

    Linux下ARM和單片機的串口通信設計

    介紹Linux 環境下串口通信的設計方法和步驟,并介紹了ARM9 微處理器s3c2440 在Linux 下和C8051Fxxx 系列單片機進
    發表于 09-29 10:06 ?2012次閱讀
    <b class='flag-5'>Linux</b>下ARM和單片機的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>設計

    如何編寫基于ARM的裸機程序和基于Linux的驅動程序

    在嵌入式開發,ADC應用比較頻繁,本文主要講解ADC的基本原理以及如何編寫基于ARM的裸機程序和基于Linux的驅動程序。
    的頭像 發表于 09-13 09:25 ?3328次閱讀
    如何編寫基于ARM的<b class='flag-5'>裸機</b>程序和基于<b class='flag-5'>Linux</b>的驅動程序

    Linux單片機串口通信總結

    這是一個目錄Linux與單片機串口通信運行ROS串口發送節點后異常中斷棧溢出問題catkin_make報錯:函數未定義的引用ERROR L107: ADDRESS SPACE OVER
    發表于 11-23 18:06 ?9次下載
    <b class='flag-5'>Linux</b>單片機<b class='flag-5'>串口</b><b class='flag-5'>通信</b>總結

    CC2530無線通信模塊使用串口通信參考方法

    CC2530無線通信模塊使用串口通信參考方法
    發表于 04-24 17:20 ?13次下載

    基于Linux的ARM和單片機的串口通信設計

    電子發燒友網站提供《基于Linux的ARM和單片機的串口通信設計.pdf》資料免費下載
    發表于 10-11 10:35 ?0次下載
    基于<b class='flag-5'>Linux</b>的ARM和單片機的<b class='flag-5'>串口</b><b class='flag-5'>通信</b>設計
    主站蜘蛛池模板: 久久亚洲国产成人影院| 9LPORM原创自拍达人| 欧美国产精品久久久乱码| 大陆老太交xxxxxhd在线| 亚洲第一色网站| 男女午夜性爽快免费视频不卡 | YELLOW视频在线观看最新| 嫩草影院久久99| 粗大分开挺进内射| 亚州笫一色惰网站| 久久国产精品久久国产精品| 91国内精品久久久久免费影院| 欧美性猛交AAA片| 国产福利秒拍weipai.ee| 亚洲中文无码永久免费 | 亚洲欧美自拍明星换脸| 久久精品国产只有精品| 啊轻点灬大JI巴又大又粗| 午夜婷婷一夜七次郎| 久久免费视频| 夫妻日本换H视频| 亚洲中文在线偷拍| 日日摸夜夜添无码AVA片| 火影忍者高清无码黄漫| aaa在线观看视频高清视频| 午夜aaaa| 女人高潮时一吸一夹| 国产又黄又硬又粗| 99久久免费国产精品特黄| 日韩精品免费在线观看| 欧美成人momandson| 久久香蕉国产免费天天| 韩国黄电影| 在线视频网站www色| 桃花论坛POWERED2019| 美女爽到嗷嗷嗷叫| 果冻传媒在线观看视频| 城中村快餐嫖老妇对白| 91交换论坛| 夜色福利院在线观看免费| 色偷偷综合网|