當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]1. 串口的基本概念1.1 UART - 串行異步收發(fā)器 Universal Asynchronous Receiver/Transmitter串行/并行(課后補(bǔ)充)異步/同步:'異步/同步通信兩者之間的區(qū)別' (補(bǔ)充)'單工/半雙工/全雙工:單工:任何時(shí)

 

1. 串口的基本概念
1.1 UART - 串行異步收發(fā)器 Universal Asynchronous Receiver/Transmitter
串行/并行(課后補(bǔ)充)
異步/同步:'異步/同步通信兩者之間的區(qū)別' (補(bǔ)充)
'單工/半雙工/全雙工:
單工:任何時(shí)候數(shù)據(jù)只能朝一個(gè)方向傳輸
半雙工:數(shù)據(jù)可以向兩個(gè)方向傳輸,任何同一時(shí)刻只能朝同一方向傳輸
全雙工:數(shù)據(jù)可以同時(shí)向兩個(gè)方向傳輸
1.2 串口通信標(biāo)準(zhǔn)
RS232(電子工業(yè)協(xié)議EIA) - 目前最常用的'串行接口標(biāo)準(zhǔn)'
規(guī)定了'電氣特性':
邏輯 0 ,+3 v ~ +15 v,SPACE
邏輯 1 ,- 3 v ~ - 15 v,MARK
規(guī)定了'機(jī)械特性':
傳輸距離 < 10 m
TTL電平,計(jì)算機(jī)內(nèi)部電平(CPU):
邏輯 0 ,低電平 < 0.8 v
邏輯 1 ,高電平 > 2.4 v
串行異步通信的重要參數(shù):
>>數(shù)據(jù)位個(gè)數(shù): 5 ~ 8 bit (開發(fā)板那端定好的是 8 bit / 幀數(shù)據(jù))
>>驗(yàn)證方式:奇校驗(yàn)、偶校驗(yàn)、無校驗(yàn)
>>停止位寬度:1~2bit
>>通信的速率:bps (bit per second - 每秒傳輸bit位)'波特率單位'

2. 電路原理圖
【底板】
|---SP3232E電平轉(zhuǎn)換芯片---|
PC_TXD1 ---> T2OUT ---> T2IN ---> UARTTXD0 ---> 'GPIOD18
PC_RXD1 ---> R2IN ---> R2OUT ---> UARTRXD0 ---> 'GPIOD14
完成串口通信有兩種方式:
1) 一種方式:運(yùn)行在arm core的程序和LED一樣直接操作GPIO管腳,形成串行異步收發(fā)數(shù)據(jù)的時(shí)序。
2) 另一方式:S5P6818中集成了uart控制器,方式 1)純軟件實(shí)現(xiàn)通信的過程就可以使用軟硬件結(jié)合的方式來實(shí)現(xiàn)通信時(shí)序,從而簡化軟件編程。

問題:
uart控制器可以完成哪些工作,還需軟件做哪些工作,兩者之間如何配合?
答案:CPU的數(shù)據(jù)手冊(cè)中關(guān)于uart的相關(guān)章節(jié)

3. CPU datasheet
3.1 管腳的功能選擇
--->P 71 - 2.3
GPIOD18 - Function1
GPIOD14 - Function1
--->P 757 - 16.5.1.8
GPIODALTFN0 - 0xc001d020 - [29:28] - 01=ALT Function1
GPIODALTFN1 - 0xc001d020 - [ 5 : 4 ] - 01=ALT Function1
3.2 uart 控制器
--->P 960 - 25.1
' S5P6818串行異步收發(fā)器 UART 單元特點(diǎn):
1) 提供 6 個(gè)獨(dú)立的uart控制器
2) 數(shù)據(jù)傳輸可以使用輪詢、中斷、DMA方式
3) 采用系統(tǒng)時(shí)鐘時(shí)最大傳輸速率 4 Mbps // 采用外部時(shí)鐘時(shí)可以達(dá)更大速率
4) 每個(gè)UART通道有兩個(gè) 64 bytes FIFO供發(fā)送和接收數(shù)據(jù),以提供較高效率
5) 可編程波特率、紅外發(fā)送接收、1~2個(gè)停止位、5~8位數(shù)據(jù)寬度、奇偶校驗(yàn)

問題:
COM1對(duì)應(yīng)的是CPU內(nèi)部的哪個(gè)uart控制器?
答案:
根據(jù)COM1使用的是CPU上的GPIOD14、GPIOD18,推斷對(duì)應(yīng)的是CPU內(nèi)部的'UART0'。

知識(shí)點(diǎn):
'CPU感知外接硬件變化通常有3種方式:
1>輪詢;
// 定時(shí)對(duì)各種設(shè)備輪流詢問一遍有無處理要求,有要求就處理,處理完回歸CPU日常工作。- 適合硬件變化頻繁的狀況
2>中斷;
// 當(dāng)有硬件設(shè)備處理要求是,CPU啟動(dòng)輸入輸出設(shè)備存檔準(zhǔn)備數(shù)據(jù),I/O完成發(fā)出中斷信號(hào),接收中斷處理數(shù)據(jù),隨后某個(gè)時(shí)刻繼續(xù)工作。 - 適合硬件變化不是特別頻繁的狀況
3>DMA;
// 直接內(nèi)存存取,direct memory access,數(shù)據(jù)在內(nèi)存與I/O設(shè)備間直接進(jìn)行成塊傳輸。

'【UART控制器重要參數(shù)】
non-FIFO - 115200 - 8 - None - 1 - 輪詢mode

ULCON0 - 0xc00a1000 - R/W
- [ 1 : 0 ] - 11 , 8 bit - 數(shù)據(jù)寬word lenth
- [ 2 ] - 0 , 1 bit - 停止位number of stop bit
- [ 5 : 3 ] - 000 - 無校驗(yàn)
- [ 6 ] - 0 - 紅外正常模式

UCON0 - 0xc00a1004 - R/W
- [ 1 : 0 ] - 01 - 輪詢接收 Receive Mode(Polling mode)
- [ 3 : 2 ] - 01 - 輪詢發(fā)送 Transmit Mode(Polling mode)
- [ 5 ] - 01 - 設(shè)置輪詢模式 Setting Loop-back mode

UFCON0 - 0xc00a1008 - R/W
- [ 0 ] - 0 - 禁用FIFO(non-FIFO) FIFO Disables

UTRSTAT0 - 0xc00a1010 - R
- [ 0 ] - 1 - 代表收到了數(shù)據(jù) Buffer has a received data
- [ 1 ] - 0 / 1 - 0 代表 transmit buffer 非空, 1 代表空

UTXH0 - 0xc00a1020 - W
- [ 7 : 0 ] - 寫入要發(fā)送的數(shù)據(jù) Transmit Data for UART0

URXH0 - 0xc00a1024 - R
- [ 7 : 0 ] - 讀出接收到的數(shù)據(jù) Receive Data for UART0

--->P 313 - 5.3.2.1.13 UARTCLKENB - '時(shí)鐘源配置,地址數(shù)與UART對(duì)應(yīng)
UARTCLKENB - 0xc00a9000 - R/W
- [ 2 ] - 1 - 使UART0時(shí)鐘使能 Enable

UARTCLKGEN0L - 0xc00a9004 - R/W
- [ 4 : 2 ] - 1 - 時(shí)鐘源頻率選擇 PLL[1]==800MHz(uboot中調(diào)為該頻率)
- [12: 5 ] - 1111 1111 - 分頻系數(shù),提供給UART0的時(shí)鐘信號(hào) 50 MHz
// 1M==100萬,800M==8億,1111==0x0f,800MHz(0x0f+1)=50MHz

--->P 986 - 25.4.1.11/25.4.1.12 - '用于分頻,將輸入的50MHz分頻成適合每秒鐘發(fā)送115200個(gè)bit所需要的時(shí)鐘信號(hào)
UBRDIV0 - 0xc00a1028 - R/W - 經(jīng)計(jì)算取值為 26
UFRACVAL0 - 0xc00a102c - R/W - 經(jīng)計(jì)算取值為 2

--->P 969 - For example // 設(shè)置方法示例

 

/*手冊(cè)定好的計(jì)算方式,不需要問為什么,直接套公式即可。

DIV_VAL=(40000000/(115200x16))–1

=21.7–1

=20.7

UBRDIVn=20(integerpartofDIV_VAL)

UFRACVALn/16=0.7

So,UFRACVALn=11

*/

50000000 / (115200 * 16) - 1 = 27.13 - 1 = 26.13 = 26 【==UBRDIV0】
0.13 * 16 = 2.08 = 2 【==UFRACVAL0】

【匯總】S5P6818UART相關(guān)寄存器
1) UART行控制器ULCONn - 設(shè)置數(shù)據(jù)格式
2) UART模式控制寄存器UCONn - 用來選擇時(shí)鐘源,發(fā)送/接收數(shù)據(jù)可選輪詢
3) UART FIFO控制寄存器UFCONn
4) UART MODEM控制寄存器UMCONn
5) 發(fā)送寄存器UTXH、接收寄存器URXH
6) 波特率分頻寄存器UBRDIV,UFRACVAL
7) GPIO相關(guān)寄存器
8) 中斷相關(guān)寄存器
9) 時(shí)鐘、電源控制寄存器


4. 編碼

 

/**代碼演示-main.c**/

#include"uart.h"

voidmain(void){

//8N1115200non-FIFOpolling

uart_init();

while(1){

uart_puts("nhello,world!");

}

}

 

/**代碼演示-uart.c**/

#defineUART0CLKENB*((volatileunsignedint*)0xc00a9000)

#defineUART0CLKGEN0L*((volatileunsignedint*)0xc00a9004)

 

#defineGPIOD_ALTFN0*((volatileunsignedint*)0xc001d020)

#defineGPIOD_ALTFN1*((volatileunsignedint*)0xc001d024)

#defineGPIOD_PULLENB*((volatileunsignedint*)0xc001d060)

 

#defineULCON0*((volatileunsignedint*)0xc00a1000)

#defineUCON0*((volatileunsignedint*)0xc00a1004)

#defineUFCON0*((volatileunsignedint*)0xc00a1008)

#defineUTRSTAT0*((volatileunsignedint*)0xc00a1010)

#defineUTXH0*((volatileunsignedint*)0xc00a1020)

#defineURXH0*((volatileunsignedint*)0xc00a1024)

#defineUBRDIV0*((volatileunsignedint*)0xc00a1028)

#defineUFRACVAL0*((volatileunsignedint*)0xc00a102c)

voiduart_init(void){

/*uart0clkdisable*/

UART0CLKENB&=~(1<<2);

//GPIOD18(Tx接收管腳)GPIOD14(Rx發(fā)送管腳)配置功能Function1

GPIOD_ALTFN0&=~(3<<28);//GPIOD14

GPIOD_ALTFN0|=(1<<28);

GPIOD_ALTFN1&=~(3<<4);//GPIOD18

GPIOD_ALTFN1|=(1<<4);

//時(shí)鐘配置:選擇PLL[1]800MHz

UART0CLKGEN0L&=~(7<<2);

UART0CLKGEN0L|=(1<<2);

//分頻設(shè)置800/(0x0f+1)=50MHz

UART0CLKGEN0L&=~(0xff<<5);//[12:5]8個(gè)位

UART0CLKGEN0L|=(0xf<<5);//[12:5]4個(gè)位設(shè)置為1111

//UART控制器設(shè)置

ULCON0=0x03;//8N1

UCON0=0x05;//0101==0x05polling

UFCON0&=~(1<<0);//non-FIFOdisable

UBRDIV0=26;//50000000/(115200*16)-1==26.13

UFRACVAL0 = 2; // 0.13*16 == 2

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉