0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

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

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

【有那么點詳細的CW32學(xué)習(xí)筆記】通用異步收發(fā)器—發(fā)送篇

CW32生態(tài)社區(qū) ? 來源:CW32生態(tài)社區(qū) ? 作者:CW32生態(tài)社區(qū) ? 2023-11-17 17:30 ? 次閱讀

本章介紹CW32通用異步收發(fā)器的使用。

雖然大部分時候會被簡單稱為“串口”,但實際上 用“串口”來指代UART并不正確 。串口對應(yīng)并口的概念,在串口通信中,數(shù)據(jù)被以二進制形式發(fā)送,并且每次發(fā)送都只傳輸1比特位(當(dāng)然,傳輸速度可能會很快),像SPI、IIC其實也屬于串口。而對傳輸速度的描述,也就是波特率即是 描述的每秒傳輸?shù)谋忍匚粩?shù)量 ,例如波特率是9600,就代表該串口每秒可以傳輸9600bit的數(shù)據(jù)。與之相對應(yīng)的并口,則是使用多個物理信道傳輸數(shù)據(jù),一批數(shù)據(jù)會同時在多個物理信道上傳輸,這種并行通信會占用很多IO資源,但是傳輸速度也得到了顯著提高。

UART作為一種異步通信方式,它 不需要時鐘 ,在供電正常的情況下一共就只需要兩根數(shù)據(jù)線,非常適合一對一的通信需求。CW32F030擁有3個UART外設(shè),此文章介紹UART1的使用,那么按照慣例,先總覽一下使用UART需要做哪些準(zhǔn)備工作。

第一:需要將IO設(shè)置為輸出,并復(fù)用為UART模式。

第二:需要使能UART這個外設(shè),并設(shè)置通信協(xié)議的必要參數(shù)(關(guān)于UART協(xié)議本身,互聯(lián)網(wǎng)有很多優(yōu)質(zhì)教程,讀者可以自行搜索),完成初始化。

第三:編寫發(fā)送和接收函數(shù),調(diào)用函數(shù)實現(xiàn)發(fā)送和接收的功能。

第一步的進行非常簡單,查詢芯片《數(shù)據(jù)表》的引腳定義,發(fā)現(xiàn)LQFP48封裝下,PA8 & PA9是UART1的發(fā)送和接收,因此只需要配置好這兩個IO的功能,第一步就算是完成了。

圖片

圖片

配置代碼如上圖,但有讀者表示自己找不到設(shè)置復(fù)用功能的函數(shù),那我們就來看看功能復(fù)用函數(shù)的本質(zhì)是什么。

圖片

這是PA9的復(fù)用函數(shù),可以看到這是一個宏函數(shù),其內(nèi)容表明設(shè)置復(fù)用其實就是設(shè)置了對應(yīng)GPIO復(fù)用寄存器的值,PA9屬于A組IO的第9號口,是高位Pin口,因此要找到高位口的復(fù)用寄存器,并設(shè)置復(fù)用功能為(0010) 2 ,也就是AF2,具體設(shè)置如下圖所示。

圖片

因此配置復(fù)用的時候,如果找不到對應(yīng)的復(fù)用函數(shù),可以直接配置此寄存器來完成復(fù)用配置,但為了方便讀者,配置IO復(fù)用的宏函數(shù)均位于cw32xxxxx_gpio.h這個文件中,此頭文件包含了相當(dāng)多的宏函數(shù),均是常用的IO操作,如反轉(zhuǎn)、置位、閃爍等,感興趣的讀者可以前往翻閱。

話題拽回到UART這邊,接下來要進行的是第二步,配置UART的必要參數(shù),這里先講解發(fā)送功能需要進行的配置。

不論是什么單片機,想要使用任何一個片上外設(shè),必須要使能該外設(shè)的時鐘總線 ,直接在工程的函數(shù)列表中找到時鐘配置文件下的全部函數(shù),根據(jù)函數(shù)的名字可以快速定位使能UART1時鐘的函數(shù)

我們可以看到這個函數(shù)本質(zhì)上就是在操作APBEN2這個寄存器,通過查看芯片手冊,我們也可以找到各個外設(shè)所屬的時鐘線。

圖片

圖片

隨后就是UART通信參數(shù)的結(jié)構(gòu)體了,結(jié)構(gòu)體同樣對應(yīng)了寄存器,但使用結(jié)構(gòu)體可以簡化開發(fā)者的配置步驟,且看下圖:

圖片

圖片

此結(jié)構(gòu)體成員擁有相當(dāng)詳細的注釋,這里直接按照開發(fā)者意圖配置即可,我在這里配置為:波特率115200、PCLK時鐘源、1個停止位、無校驗位、全雙工模式,配置完成后初始化結(jié)構(gòu)體即可。

值得注意的是,在芯片內(nèi)部并沒有一個直接的波特率數(shù)值寄存器,為了保證異步通訊的可靠,波特率越精準(zhǔn)越好,且既有的系統(tǒng)時鐘不一定能夠剛好提供波特率倍數(shù)的時基,因此實際上的波特率是一個浮點數(shù),它擁有整數(shù)部分小數(shù)部分2****個寄存器 。具體的計算公式在芯片手冊的通用異步收發(fā)器章節(jié)有寫,這里只列舉初始化函數(shù)中的相關(guān)操作:

圖片

由于我選擇的是16倍采樣,初始化函數(shù)會執(zhí)行上述代碼,代碼的計算過程復(fù)刻了手冊中的計算過程(如下圖),這里是先計算時鐘源在16倍采樣模式下能夠直接取得的波特率結(jié)果temp,temp包含了整數(shù)部分和小數(shù)部分,整數(shù)部分直接賦值即可,小數(shù)部分則是將公式變型得到的。開發(fā)者在使用時不需要手寫計算BRRI和BRRF的寄存器值,初始化函數(shù)會自動完成該計算。

圖片

皆大歡喜,到目前為止已經(jīng)成功完成兩步了,還差最后一步就可以使用UART的發(fā)送功能了,那就是自己寫一個UART1的發(fā)送函數(shù)。我手里剛好就有一個自己寫的發(fā)送函數(shù),長這個樣子:

圖片

這段簡易代碼會發(fā)送這個字符串作為UART1的調(diào)試參數(shù)。

圖片

這段代碼的主要邏輯在芯片手冊里面也有詳細描述:

圖片

Tips: 在編寫各類通信函數(shù)這里,我建議一定要 加上至少兩個功能 。第一個就是 發(fā)送的狀態(tài) ,成功還是失敗,這很重要,出問題之后的排查工作基本就靠這個了;第二個就是 超時跳出功能 ,有的時候可能硬件故障或者什么別的原因?qū)е掳l(fā)送一直失敗,如果死等就讓程序全部死掉了,超時跳出可以保證其他大部分程序的正常運行,當(dāng)然使用看門狗是一種更優(yōu)解。

在輪詢函數(shù)中調(diào)用調(diào)試函數(shù)即可實現(xiàn)間隔100ms發(fā)送一次的功能,效果如下:

圖片

圖片

從時間上來看,100ms的定時發(fā)送還是很精確的,這種方式占用CPU的時間資源實現(xiàn)發(fā)送,雖然傳統(tǒng)但是有效可控。

要點總結(jié):

1、注意區(qū)分串口和并口的概念。

2、CW32的UART雖然有2個波特率寄存器,但是并不需要開發(fā)者手算寄存器參數(shù)。

審核編輯 黃宇

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

    關(guān)注

    22

    文章

    1246

    瀏覽量

    102170
  • 通用異步收發(fā)器

    關(guān)注

    0

    文章

    18

    瀏覽量

    6802
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    221

    瀏覽量

    829
收藏 人收藏

    評論

    相關(guān)推薦

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    尊敬的各位電子工程師、嵌入式開發(fā)愛好者們:大家好!今天,我們懷著無比激動與自豪的心情,向大家宣布一個重大喜訊——武漢芯源半導(dǎo)體的單片機CW32正式出書啦!《基于ARMCortex-M0+的CW32
    的頭像 發(fā)表于 03-03 15:15 ?269次閱讀
    代碼+案例+生態(tài):武漢芯源半導(dǎo)體<b class='flag-5'>CW32</b>嵌入式開發(fā)實戰(zhàn)正式出版

    代碼+案例+生態(tài):武漢芯源半導(dǎo)體CW32嵌入式開發(fā)實戰(zhàn)正式出版

    關(guān)于 CW32 單片機的書籍。在這本書中,我們從最基礎(chǔ)的知識講起,詳細介紹了 CW32 單片機的硬件架構(gòu)、內(nèi)核特性、存儲系統(tǒng)以及各類外設(shè)功能。無論是剛剛踏入嵌入式開發(fā)領(lǐng)域的新手,還是經(jīng)驗豐富的專業(yè)人士
    發(fā)表于 03-03 15:14

    74ALVCH16601 18位通用總線收發(fā)器規(guī)格書

    電子發(fā)燒友網(wǎng)站提供《74ALVCH16601 18位通用總線收發(fā)器規(guī)格書.pdf》資料免費下載
    發(fā)表于 02-19 15:39 ?0次下載
    74ALVCH16601 18位<b class='flag-5'>通用</b>總線<b class='flag-5'>收發(fā)器</b>規(guī)格書

    無線收發(fā)器工作原理,無線收發(fā)器怎么使用

    無線收發(fā)器作為現(xiàn)代通信技術(shù)的重要組成部分,廣泛應(yīng)用于各個領(lǐng)域,包括無線通信、物聯(lián)網(wǎng)、遠程控制和無線傳感網(wǎng)絡(luò)等。本文將深入探討無線收發(fā)器的工作原理,同時提供詳細的使用方法。
    的頭像 發(fā)表于 01-29 15:31 ?506次閱讀

    TMS320DM643 DMP通用異步收發(fā)器(UART)手冊

    電子發(fā)燒友網(wǎng)站提供《TMS320DM643 DMP通用異步收發(fā)器(UART)手冊.pdf》資料免費下載
    發(fā)表于 12-16 10:10 ?0次下載
    TMS320DM643 DMP<b class='flag-5'>通用</b><b class='flag-5'>異步</b><b class='flag-5'>收發(fā)器</b>(UART)手冊

    CW32L010學(xué)習(xí)筆記

    記錄CW32L010學(xué)習(xí)過程
    的頭像 發(fā)表于 11-15 17:40 ?2384次閱讀
    <b class='flag-5'>CW</b>32L010<b class='flag-5'>學(xué)習(xí)</b><b class='flag-5'>筆記</b>

    射頻收發(fā)器就是基帶嗎

    射頻收發(fā)器(RF Transceiver)和基帶(Baseband)是無線通信系統(tǒng)中兩個不同的概念,它們在功能和設(shè)計上有所區(qū)別。射頻收發(fā)器主要負責(zé)無線信號的發(fā)送和接收,而基帶則處理信號的數(shù)字處理部分
    的頭像 發(fā)表于 09-20 11:12 ?609次閱讀

    光纖收發(fā)器怎么判斷好壞

    光纖收發(fā)器作為光纖通信系統(tǒng)中的關(guān)鍵設(shè)備,其性能直接影響到整個網(wǎng)絡(luò)的傳輸質(zhì)量和穩(wěn)定性。因此,準(zhǔn)確判斷光纖收發(fā)器的好壞是確保網(wǎng)絡(luò)正常運行的重要步驟。以下是從多個方面綜合評估光纖收發(fā)器好壞的詳細
    的頭像 發(fā)表于 08-26 15:11 ?1427次閱讀

    TSU6111A USB端口單刀雙擲(SP2T)開關(guān)支持USB和通用異步收發(fā)器(UART)數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《TSU6111A USB端口單刀雙擲(SP2T)開關(guān)支持USB和通用異步收發(fā)器(UART)數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 07-10 09:21 ?0次下載
    TSU6111A USB端口單刀雙擲(SP2T)開關(guān)支持USB和<b class='flag-5'>通用</b><b class='flag-5'>異步</b>接<b class='flag-5'>收發(fā)器</b>(UART)數(shù)據(jù)表

    SN74ALVCH16901 18位通用總線收發(fā)器數(shù)據(jù)表

    電子發(fā)燒友網(wǎng)站提供《SN74ALVCH16901 18位通用總線收發(fā)器數(shù)據(jù)表.pdf》資料免費下載
    發(fā)表于 06-03 11:21 ?0次下載
    SN74ALVCH16901 18位<b class='flag-5'>通用</b>總線<b class='flag-5'>收發(fā)器</b>數(shù)據(jù)表

    【項目展示】基于CW32的遙控循跡小車

    CW32循跡小車.zip_免費高速下載|百度網(wǎng)盤-分享無限制? 一、概述 CW32循跡、遙控小車具有循跡和遙控兩種功能,小車的硬件模塊由CW32F030C8T6小藍板、智能小車控制底板、BT04-E
    的頭像 發(fā)表于 05-31 17:33 ?1508次閱讀
    【項目展示】基于<b class='flag-5'>CW32</b>的遙控循跡小車

    收發(fā)器的主要作用與種類詳解

    收發(fā)器,作為通信系統(tǒng)中的關(guān)鍵組成部分,其主要作用是實現(xiàn)信號的發(fā)送和接收。隨著通信技術(shù)的不斷發(fā)展,收發(fā)器的種類也日益豐富,滿足了不同場景下的通信需求。本文將對收發(fā)器的主要作用和種類進行
    的頭像 發(fā)表于 05-22 17:05 ?2883次閱讀

    CW32量產(chǎn)燒錄工具

    本節(jié)主要介紹CW32微控制的燒錄CW-Writer,以及與之配合的軟件CW-Programmer的使用方法。燒錄
    的頭像 發(fā)表于 04-25 15:22 ?1621次閱讀
    <b class='flag-5'>CW32</b>量產(chǎn)燒錄工具

    CW32快速開發(fā)入門

    CW32快速開發(fā)入門
    的頭像 發(fā)表于 04-24 18:56 ?2266次閱讀
    <b class='flag-5'>CW32</b>快速開發(fā)入門

    光纖收發(fā)器距離限制嗎怎么設(shè)置

    光纖收發(fā)器是光纖通信系統(tǒng)中的重要組成部分,用于將電信號轉(zhuǎn)換為光信號以在光纖中傳輸數(shù)據(jù)。光纖收發(fā)器的距離限制是指在一定的傳輸距離范圍內(nèi),保證光信號的傳輸品質(zhì)和可靠性。 一、光纖收發(fā)器的距離限制原因
    的頭像 發(fā)表于 04-09 16:52 ?1879次閱讀