0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

嵌入式硬件通信串口啟用流程

冬至子 ? 來源:帝核 ? 作者:中斷 ? 2023-07-05 17:22 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、串口啟用流程

開講前,先找?guī)卓钚酒拇赿emo程序瞄一眼。

依次有STM32的V3.5標(biāo)準(zhǔn)庫(kù)、nRF52832的官方demo以及51核的STC15系列單片機(jī)的官方DEMO。

圖片

圖片

圖片

從以上的部分demo例程來看,在啟用串口的時(shí)候,需要配置的那幾個(gè)參數(shù)有波特率、數(shù)據(jù)位、校驗(yàn)位、停止位等,從demo的源碼中也是能夠體現(xiàn)出來的。

而略有不同的是,在引腳配置靈活的ARM中,需要針對(duì)引腳進(jìn)行配置。

二、驗(yàn)證輸入輸出

完成了串口的初始化,即可對(duì)輸入輸出進(jìn)行操作,來驗(yàn)證串口是否可以正常的發(fā)送和接收數(shù)據(jù)。

一般的,最直接的方式就是向輸出寄存器寫入數(shù)據(jù),就可以讓芯片去完成UART信號(hào)輸出到對(duì)應(yīng)的引腳上。

如下圖依次有STM32的V3.5標(biāo)準(zhǔn)庫(kù)、nRF52832的官方demo以及51核的STC15系列單片機(jī)的官方DEMO。

圖片

圖片

圖片

驗(yàn)證串口的輸出,即在串口初始化成功后,對(duì)串口的輸出寄存器寫入數(shù)據(jù),而芯片引腳則使用USB轉(zhuǎn)TTL模塊連接,USB端插入計(jì)算機(jī)的USB口,利用計(jì)算機(jī)的串口助手軟件實(shí)現(xiàn)對(duì)數(shù)據(jù)的收發(fā)。

三、調(diào)試-輸出

開發(fā)調(diào)試過程中,輸出的內(nèi)容基本上就是想查看的變量值、代碼的執(zhí)行位置跟蹤、算法或者某些運(yùn)算的結(jié)果等等。這些輸出,僅用于調(diào)試階段,而在人機(jī)調(diào)試過程中,使用計(jì)算機(jī)的串口助手軟件進(jìn)行交互,則輸出的數(shù)據(jù)應(yīng)該便于識(shí)讀和判斷。

1. C庫(kù)函數(shù)printf格式輸出重定向到串口輸出

輸出串口數(shù)據(jù)過程中,需要向寄存器逐字節(jié)傳入數(shù)據(jù)的,而在傳送之前必不可少的,就是將要發(fā)送的數(shù)據(jù)、字符放到同一個(gè)Buffer后,執(zhí)行輪詢的方式傳送直到buffer內(nèi)容全部被傳送。

而這個(gè)“放”的過程也是需要做些計(jì)算、判斷,尤其是增加必要的字符來描述輸出信息,保證信息的可識(shí)讀。

在C標(biāo)準(zhǔn)庫(kù)printf函數(shù)就有格式輸出的功能,利用這個(gè)接口更便于調(diào)試輸出這個(gè)過程。

這就需要將printf函數(shù)重定向到串口輸出上!

實(shí)現(xiàn)重定向只需3步:

  1. Options for target選項(xiàng)卡內(nèi)勾選UseMicroLIB
    • 在串口實(shí)現(xiàn)的 .c文件內(nèi),將stdio.h文件和stdarg.h文件包含進(jìn)來* *
  2. 重新定義int fputc函數(shù)的內(nèi)部實(shí)現(xiàn)

圖片

圖片

完成以上3步,即可利用printf函數(shù)來格式化輸出,并且能夠在串口上接收到。

2. ANSI C標(biāo)準(zhǔn)中有幾個(gè)標(biāo)準(zhǔn)預(yù)定義宏:

LINE :源代碼中的行號(hào)(字符串形式)

FILE :當(dāng)前*.c源碼文件的文件名(字符串形式)

DATE :編譯日期(字符串形式)

TIME :編譯時(shí)間(字符串形式)

STDC :當(dāng)要求程序嚴(yán)格遵循ANSI C標(biāo)準(zhǔn)時(shí)該標(biāo)識(shí)被賦值為1;

__cplusplus:當(dāng)編寫C++程序時(shí)該標(biāo)識(shí)符被定義。

有了上一步實(shí)現(xiàn)printf函數(shù)的重定向到串口后,基本就可以完美使用串口進(jìn)行調(diào)試程序。

調(diào)試過程中可利用ANSIC標(biāo)準(zhǔn)中的內(nèi)置宏,比如__LINE__可以很方便跟蹤代碼執(zhí)行到哪一行。

圖片

四、調(diào)試-輸入

串口的接收,有輪詢、中斷、DMA等方式。

輪詢方式,特點(diǎn)是消耗芯片資源,否則容易丟數(shù)據(jù);

中斷方式,特點(diǎn)是響應(yīng)快、資源占用低;

DMA方式,各個(gè)芯片的配置不同而無法每款芯片都有該功能,所以代碼兼容性可移植性較差。

一般地,對(duì)輸入的數(shù)據(jù)進(jìn)行分析判斷時(shí),如果是輪詢的方式,則直接在收到后即判斷;中斷和DMA方式,都可以考慮存到buffer后再分析處理。

圖片

圖片

五、初見數(shù)據(jù)協(xié)議解析

如果是簡(jiǎn)單幾個(gè)字符的指令,可以用上述那樣簡(jiǎn)單判斷,但是在稍微中等級(jí)別的工程項(xiàng)目中,用那樣的方式都已經(jīng)很不便于處理和擴(kuò)展了。

比如有一串?dāng)?shù)據(jù),并且長(zhǎng)度不確定,將會(huì)超過10個(gè)字節(jié)、20個(gè)字節(jié)、100個(gè)字節(jié)甚至更多,那么這時(shí)候就必須使用協(xié)議解析的方式。

通常的,數(shù)據(jù)協(xié)議都會(huì)有協(xié)議頭、長(zhǎng)度、校驗(yàn)、數(shù)據(jù)內(nèi)容等部分組成,數(shù)據(jù)將以包的形式進(jìn)行收發(fā),這時(shí)候使用解析的方式,對(duì)數(shù)據(jù)包進(jìn)行解析。

這就是廣泛使用的“ 起始式協(xié)議 ”。

實(shí)際的產(chǎn)品中有IC/ID讀卡器模塊的接口協(xié)議:

圖片

也有使用在PM2.5傳感器上的:

圖片

這些都屬于開發(fā)的模塊產(chǎn)品,對(duì)外使用串口通信,并且數(shù)據(jù)協(xié)議采樣了“起始式”的幀結(jié)構(gòu)模式。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5429

    瀏覽量

    123850
  • STM32單片機(jī)
    +關(guān)注

    關(guān)注

    59

    文章

    549

    瀏覽量

    59481
  • 射頻讀卡器
    +關(guān)注

    關(guān)注

    0

    文章

    4

    瀏覽量

    6696
  • nRF52832
    +關(guān)注

    關(guān)注

    11

    文章

    208

    瀏覽量

    32721
  • 嵌入式通信
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    2227
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    串口通信系統(tǒng)的設(shè)計(jì)流程是什么?

    本文設(shè)計(jì)了一種基于PowerPC嵌入式內(nèi)核MPC565和串口模塊EMM-8M-XT的多串口通信系統(tǒng),給出了系統(tǒng)總體的硬件架構(gòu)和軟件設(shè)計(jì)
    發(fā)表于 09-05 07:58

    ZYNQ嵌入式系統(tǒng)的開發(fā)流程

    部分的始發(fā)點(diǎn)。通過本次實(shí)驗(yàn)我們將了解 ZYNQ 嵌入式系統(tǒng)的開發(fā)流程,熟悉 ZYNQ 嵌入式最小系統(tǒng)的搭建。本章包括以下幾個(gè)部分:1.1 簡(jiǎn)介1.2 實(shí)驗(yàn)任務(wù)1.3 硬件設(shè)計(jì)1.4
    發(fā)表于 10-27 07:50

    嵌入式開發(fā)流程

    嵌入式開發(fā)流程一般是在PC機(jī)的Windows系統(tǒng)下安裝Ubuntu虛擬機(jī),搭建嵌入式開發(fā)環(huán)境及交叉編譯環(huán)境,開發(fā)完成后,編譯得到bin文件,然后在Windows下將bin文件通過串口
    發(fā)表于 11-05 06:06

    嵌入式開發(fā)流程是怎樣的?

    嵌入式開發(fā)環(huán)境及交叉編譯環(huán)境,開發(fā)完成后,編譯得到bin文件,然后在Windows下將bin文件通過串口或網(wǎng)絡(luò)下發(fā)到嵌入式板卡,程序在嵌入式板卡上運(yùn)行。1. RS232
    發(fā)表于 11-08 06:24

    嵌入式產(chǎn)品的研發(fā)流程是怎樣的

    嵌入式軟件和嵌入式硬件兩大部分,針對(duì)嵌入式硬件和軟件的開發(fā),在普通的電子產(chǎn)品開發(fā)過程中,是不需要涉及的。
    發(fā)表于 11-09 07:38

    嵌入式硬件開發(fā)的流程是怎樣的

    關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容來源:網(wǎng)絡(luò)素材整理:李肖遙傳送門: 總結(jié)了一份嵌入式產(chǎn)品研發(fā)的具體流程之前,我們?cè)敿?xì)講述了嵌入式產(chǎn)品的研發(fā)流程,那么在這一節(jié),我們具體以
    發(fā)表于 11-09 06:58

    嵌入式系統(tǒng)串口通信分層結(jié)構(gòu)設(shè)計(jì)與實(shí)現(xiàn)

    介紹了以STC89C54RD+為核心具有ISP(在線可編程)特性的嵌入式系統(tǒng)中,PC 機(jī)與該系統(tǒng)串口全雙工通信的實(shí)現(xiàn)。給出了串口通信協(xié)議,提
    發(fā)表于 08-29 10:43 ?23次下載

    基于S3C2410的嵌入式串口通信設(shè)計(jì)

    本文通過基于S3C2410的嵌入式串口通信的實(shí)現(xiàn),按照嵌入式系統(tǒng)的軟、硬件結(jié)構(gòu)組成,較為詳細(xì)地介紹了串行
    發(fā)表于 12-23 16:11 ?120次下載

    嵌入式系統(tǒng)的USB虛擬串口設(shè)計(jì)

    嵌入式系統(tǒng)的USB虛擬串口設(shè)計(jì) 現(xiàn)代嵌入式系統(tǒng)中,異步串行通信接口往往作為標(biāo)準(zhǔn)外設(shè)出現(xiàn)在單片機(jī)和嵌入式系統(tǒng)中。但是隨著個(gè)人計(jì)算機(jī)通用外
    發(fā)表于 09-27 16:07 ?1208次閱讀
    <b class='flag-5'>嵌入式</b>系統(tǒng)的USB虛擬<b class='flag-5'>串口</b>設(shè)計(jì)

    嵌入式硬件通信接口協(xié)議中的串行通信接口-SPI

    本節(jié)繼續(xù)講嵌入式硬件通信接口協(xié)議中的另外一個(gè)串行通信接口-SPI。相比于UART串口協(xié)議,SPI又有著其獨(dú)特之處。
    發(fā)表于 02-05 11:35 ?1830次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>硬件</b><b class='flag-5'>通信</b>接口協(xié)議中的串行<b class='flag-5'>通信</b>接口-SPI

    基于有限狀態(tài)機(jī)的嵌入式系統(tǒng)串口通信幀同步方法設(shè)計(jì)

    串口通信是日前單片機(jī)和DSP等嵌入式系統(tǒng)之間,以及嵌入式系統(tǒng)與PC機(jī)或無線模塊之間的一種非常重要且普遍使用的通信方式。在
    發(fā)表于 04-10 08:48 ?2985次閱讀
    基于有限狀態(tài)機(jī)的<b class='flag-5'>嵌入式</b>系統(tǒng)<b class='flag-5'>串口</b><b class='flag-5'>通信</b>幀同步方法設(shè)計(jì)

    嵌入式串口間的通信

    嵌入式串口間的通信1. 操作內(nèi)容2. 操作步驟3. 操作結(jié)果4. 串口通信5. 操作步驟6. 具體操作7. 具體結(jié)果1. 操作內(nèi)容利用
    發(fā)表于 10-20 19:36 ?9次下載
    【<b class='flag-5'>嵌入式</b>】<b class='flag-5'>串口</b>間的<b class='flag-5'>通信</b>

    視頻教程-嵌入式Linux文件與串口編程-嵌入式

    嵌入式Linux文件與串口編程 嵌入式工程師、嵌入式講師、10多年
    發(fā)表于 11-02 15:06 ?15次下載
    視頻教程-<b class='flag-5'>嵌入式</b>Linux文件與<b class='flag-5'>串口</b>編程-<b class='flag-5'>嵌入式</b>

    嵌入式產(chǎn)品開發(fā)流程

    嵌入式軟件和嵌入式硬件兩大部分,針對(duì)嵌入式硬件和軟件的開發(fā),在普通的電子產(chǎn)品開發(fā)過程中,是不需要涉及的。
    發(fā)表于 11-04 10:06 ?36次下載
    <b class='flag-5'>嵌入式</b>產(chǎn)品開發(fā)<b class='flag-5'>流程</b>

    總結(jié)了一份嵌入式硬件開發(fā)的具體流程

    關(guān)注、星標(biāo)公眾號(hào),直達(dá)精彩內(nèi)容來源:網(wǎng)絡(luò)素材整理:李肖遙傳送門: 總結(jié)了一份嵌入式產(chǎn)品研發(fā)的具體流程之前,我們?cè)敿?xì)講述了嵌入式產(chǎn)品的研發(fā)流程,那么在這一節(jié),我們具體以
    發(fā)表于 11-04 10:51 ?18次下載
    總結(jié)了一份<b class='flag-5'>嵌入式</b><b class='flag-5'>硬件</b>開發(fā)的具體<b class='flag-5'>流程</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品