娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年04月11日(星期五)

正在發生

2019年04月11日 | 基于UART實現數據的自發自收

發布者:獨行于世 來源: eefocus關鍵字:UART  數據  自發自收 手機看文章 掃描二維碼
隨時隨地手機看文章

UART(Universal Asynchronous Receiver  and  Transmiter)通用異步接收/發送裝置。UART提供了RS—232C數據接口。


UART是什么?UART是一種通用串行數據總線,用于異步通信,該總線雙向通信,可以實現全雙工傳輸和接受。在嵌入式設計中,UART用來與PC進行通信,包括與監控調試器和其他部件,比如EEPROM。


UART的工作原理和功能。他將由計算機內部傳送過來的并行數據轉化為輸出的串行數據流,將計算機外部來的串行數據轉換為字節,供計算機內部使用并行數據的器件使用。在輸出的串行數據流中加入奇偶校驗為。在輸出數據流中加入啟停標志,并從接受數據流中刪除啟停標志。處理有鍵盤或鼠標發出的中斷信號(鍵盤和鼠標也是串行設備)??梢蕴幚碛嬎銠C與外部串行設備的同步管理問題。


在使用UART之前,我們需要設置波特率,傳輸格式(數據位個數,是否校驗位,奇還是偶校驗位,停止位個數,是否流量控制)。對于具體的CPU來說,例如(2410/2440)還要選擇所涉及的管腳為UART功能,選擇UART通道的工作模式為中斷模式還是DMA模式,設置好后,往某個寄存器寫入數據即可發送,讀取某個寄存器即可接收到數據。可以通過輪詢的方式來獲知數據的收發情況。


初步了解了UART的功能和基本工作原理之后,開始今天的整理。相信在整理的過程中,自己又會有與眾不同的收獲。


對于UART的設置,這個需要根據電路圖,設置GPHCON的對應管腳(S3C2410有3個uart接口,具體接哪個接口,需要結合電路圖),我的是要求在uart0上的。


ULCONn寄存器,他包括三種寄存器UART0,UART1,UART2,通過這個寄存器可以設置FIFO的相關屬性??梢栽O置傳輸數據的位數,停止位的位數,校驗模式,紅外模式。


UCONn寄存器,同樣包括三個,UCON0,UCON1,UCON2。他可以用來設置接收數據和發送數據的模式,接收錯誤狀態使能,接受超時使能,接收中斷方式,發送中斷方式,時鐘選擇。


UFCONn寄存器,同樣有三個UFCON[0:2],共有八位,可以設置FIFO使能,設置FIFO的觸發閥值。


UMCONn寄存器,同樣也有三個,由八位組成,它主要用于流量控制。


UTRSTATn寄存器,他由三位構成,這個寄存器主要用來表明數據是否已經發送完畢,是否已經接收到數據。


UERSTATn寄存器,用來表示各種錯誤是否發生。


UFSTATn寄存器,由16位組成,主要用來設置FIFO什么時候發送和接收數據。


UTXHn寄存器,CPU寫寄存器。


 URXHn寄存器,CPU讀寄存器。


UBRDIVn寄存器,主要用來設置波特率,這個波特率的值的確定需要根據時鐘源和公式。計算公式如下:UARDIVNn=(int)(UART時鐘)/(設置的波特率*16)。


下面來說說實驗程序,本次實驗的程序是使用板子接收PC機上發送過來的數據,按原樣進行顯示。


匯編在此就不寫了,直接寫C程序,因為匯編部分還有不懂得,還得繼續啃。


在ADS1.2里,建立一個頭文件,在C程序中調用一下即可。


在reg2410.h中:


             #define rGPHCON      (*(volatile     unsigned*)0x56000070)


             #define  rUBRDIV0     (*(volatile     unsigned*)0x56000028)


             #define  rULCON0      (*(volatile    unsigned *)0x50000000)


#define  rUCON0        (*(volatile    unsigned *)0x56000004)


#define rUTRSTAT0   (*(volatile   unsigned *)0x50000010)


#define rUTXH0               (*(volatile   unsigned *)0x50000020)


#define rURXH0               (*(volatile   unsigned *)0x50000024)


在reg2410.h這個文件里,設置了控制UART的相關寄存器的地址,這些地址都是固定的,在文檔查找即可,他們分別是什么寄存器以及各自的功能上面有描述,就不再贅述。


Reg2410.c文件如下:


             #include“reg2410.h”          //上面所建立的頭文件


             #define  TXD0READY (1<<2)   //(1<<2)=4


             #define  RXD0READY        (1)   


             #define  PCLK  50700000


             #defineUART_CLK     PCLK     //設置UART的時鐘為pclk


             #define  UART_BPS    115200   //設置串口的波特率為115200


             #defineUART_BRD (int)(UART_PCLK/(UART_BPS)*16)-1//設置UART的波特率


             Void       SendByte(char dat)    //發送的字節


             {


                    While(!(UTRSTAT0&TXD0READY));//緩存寄存器中和發送移位寄存器中沒有有效值,會被自動置壹,UTRSTAT為0100與TXD0READY(0100)相與,[3]位為1,也就是數據傳完了,然后非一下為假,則不執行分號,意思為等待,直接進行下一句;如果UTRSTAT0&TXD0READY的結果為0,則說明數據還沒有完全從緩存寄存器傳輸到uart讀寫狀態寄存器中,則等待。


                    UTXH0=dat;


}


char       RecByte(void)


{


       While(!(UTRSTAT0&RXD0READY));// RXD0READY接受到數據,只要接受緩存寄存器保留通過RXDn端口接受的有效值,其值自動為1,URSTAT0&RXD0READY與的結果為1,非后的結果為假,則不執行分號;若沒有接收到數據,則(!(UTRSTAT0&RXD0READY))為真,執行分號,一直等待接收到為止。


       Return   URXH0;


}


             Intmain()


             {


                    rGPHCON=(rGPHCON&~(0xf<<4)|(0xa<<4));//設置GPFCON的2,3引腳,因為UART0的輸入輸出引腳是通過他們完成的


                    rUBRDIV0=UART_BRD;//設置UART的波特率


                    rULCON0=3;//表明數據傳輸時的位數,是否有校驗位,有幾個停止位,是否運用FIFO


                    rUCON0 =(1<<2)|1;//設置數據發送和接受的查詢方式,為循環查詢


                    for(;;)//輪詢接受數據和發送數據


                    {


                           SendByte(RecByte());


}


}


關鍵字:UART  數據  自發自收 引用地址:基于UART實現數據的自發自收

上一篇:STM32之SPI通信
下一篇:模擬SPI實現和調試流程

推薦閱讀

藍思科技4月10日早間公布2018年第一季度業績預告,預告期間歸屬于上市公司股東的凈利潤8,823.19萬元至11,028.99萬元,比上年同期下降60%至50%,上年同期盈利22,057.98萬元。公司稱,影響業績變動主要有兩個方面原因,一是2018年第一季度,消費電子產品市場需求整體較為疲軟,下游終端品牌客戶紛紛采取加速去庫存的策略。根據工信部旗下中國信息通信研究院...
  隨著企業對人工智能的采用度不斷的增加(根據數據調查,在過去的四年里,這個數據增長了270%),谷歌很明智的開始利用機器學習技術,驅動新的云服務來吸引客戶。谷歌本周在舊金山舉行的Google Cloud Next會議上,該公司就發布了一系列針對企業需要痛點的產品,比如文檔分析、庫存和需求預測以及客戶服交互管理?! 」雀柙萍瘓F產品經理Levent Besik...
;數碼管從0-9顯示 ORG 0000H AJMP MAIN ORG 0030H MAIN: MOV R4, #00H ;記錄碼表的值 MOV DPTR, #TABLE ;把地址送DPTR STRAT: MOV A, R4 MOVC A, @A+DPTR ;取碼 MOV P2, A ;顯示 INC R4 ;自增,取下個值做準備 CALL DELAY ;調用 CJNE R4, #16, STRAT ;判斷是否顯示完16個數值 AJMP MAINDELAY: MOV R6, #1DELAY4: MOV R1, #10DEL...
當地時間8日,意大利新上任總理德拉吉(Mario Draghi)指出,最近阻止了中國深圳投資控股(Shenzhen Invenland Holdings Co.)收購一家總部位于米蘭的半導體設備公司LPE,這是由前歐洲央行行長領導的新政府在“黃金權力”(Golden Power)法規下首次行使否決權。德拉吉和意大利發展部簽署的落款3月31日的行政令顯示,深圳投資控股告知意大利政府,該...

史海拾趣

問答坊 | AI 解惑

benq臺灣機構工程師的設計感受(二)

h.w.所負責的手機可以直接摔到地上,但是chris所負責的投影機單價昂貴,必須活用落下測試的方法,避免在測試過程中損壞整臺機器可能付出的高額成本,投影機造價高,在進行落下測試前,結構工程師會先進行評估,將昂貴、不影響測試準確性的零組件先 ...…

查看全部問答∨

射頻參數測試新方法

目前吉時利已經將上面所介紹的設計方法成功應用于其最新的S600DC/RF APT系統中,用于實現過程監控。其關鍵的性能指標包括: 基于吉時利S600 APT帶固態轉換開關的直流測試系統以及Anritsu VNA技術,高速的射頻測量能力實現了1KHz的頻率分辨率、穩定 ...…

查看全部問答∨

單片機學習

單片機學習應該先學硬件還是軟件?????哪位好大哥知道一下…

查看全部問答∨

高分求 在Windows CE下模擬觸摸筆在觸摸屏固定位置點擊功能

   問題: 我在Windows CE下開發,屏幕為觸摸屏,在程序中,我需要使用代碼來模擬指針在觸摸屏上按下此功能,     我以前的做法是先將指針移動到某位置,然后再模擬指針按下消息,代碼如下    //利用鼠標模擬消息   ...…

查看全部問答∨

關于DS2760/2762驅動的問題

大家新年快樂。 我的平臺是PXA270+wince5.0 目前我們使用Maxim的一個芯片,DS2760/2762來做電池的檢測。在判斷充電器的狀態(是否插入)的時候,是用芯片內部電流的方向來判斷的。現在的問題是,在的電池接近充飽的時候,充電器的狀態顯示會一直 ...…

查看全部問答∨

尋wince6.0 USB攝像頭驅動

請問哪位朋友做過wince6.0 帶USB攝像頭的產品?能否推薦一下攝像頭模組供應商,可以提供wince6驅動的?感謝。…

查看全部問答∨

關于超級電容

最近給人做一個東西,目前解決了傳感部分,雖然是個很簡單,但是似乎很管用的小玩意。 還寫好了很簡單的51定時器用以延時,雖然因為有幾個月沒碰,折騰了好一會功夫。 目前剩下的一點則是我沒什么把我的。   因為電路中需要驅動一個電磁鐵 ...…

查看全部問答∨

avr16 1602LCD

#include<iom16.h>#define uchar unsigned char #define uint  unsigned int#define rs1 PORTB|=1#define rs0 PORTB&=~1#define rw1 PORTB|=2#define rw0 PORTB&=~2#define en1 PORTB|=4#define en0 PORTB&=~4 //============== ...…

查看全部問答∨

VCA2616

本帖最后由 paulhyde 于 2014-9-15 09:01 編輯 各位,誰用過VCA2616啊,各種不懂?。????  …

查看全部問答∨

恩智浦為您帶來電子技術新體驗

如今,動力半導體市場的網絡渠道變得越來越重要。在網絡上,工程師們擔負著及時發布應用設計和快速使用技術性說明書的壓力。而今天,恩智浦半導體(納斯達克:NXP)宣布,恩智浦半導體對其官方網站(www.nxp,com )進行了一次大規模的重新設計和調 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 永新县| 临江市| 临漳县| 桃园县| 化州市| 台中县| 永泰县| 宜城市| 开原市| 砀山县| 南充市| 阳曲县| 远安县| 凯里市| 湘潭县| 汨罗市| 成都市| 惠东县| 邵东县| 定南县| 泰和县| 同江市| 阿克苏市| 饶平县| 双鸭山市| 东乌珠穆沁旗| 托克逊县| 九江市| 西宁市| 喀喇| 吴川市| 墨江| 顺昌县| 微博| 安远县| 沙田区| 通州市| 蒙山县| 罗江县| 开江县| 和政县|