1.S3C2440串口概述
串口通訊一般要增加電平轉換電路,原因是TTL/CMOS電平與RS232電平不一致:
TTL/CMOS電平:
CMOS電平:
常用的電平轉換芯片是MAX3232。
S3C2440有3個獨立的異步串口,可以選擇工作在中斷或DMA方式下。每個UART包括一個波特率發生器、發送器、接收器和一個控制單元。
UART有FIFO模式和非FIFO模式。FIFO模式下可以利用64字節的發送/接收緩沖寄存器,非FIFO模式下只使用了發送/接收緩沖寄存器中的1個字節。本篇入門級以非FIFO為例。
2.串口設置及相關寄存器
串口引腳是GPIO復用的。本篇UART只用3根引腳:TXD、RXD、GND。
TXD0 – GPH2 , RXD0 – GPH3
需要初始化以下6個寄存器:
ULCONn (UART LINE CONTROLREGISTER) – 設置數據位信息
UCONn(UART CONTROL REGISTER) – 設置發送和接收模式,及時鐘源。
UBRDIVn– 設置UART波特率
波特率計算公式:
例子:
UTRSTATn(UARTTX/RX REGISTER) – 狀態位
使用while(!UTRSTAT0&(1<<2)); 等待發送完成(while(!UTRSTAT0&(1<<1)); 也可以)
使用while(!UTRSTAT0&(1<<0)); 等待接收數據。
UTXHn(HOLDINGREGISTER) – 發送緩沖寄存器(Transmit)
URXHn(HOLDINGREGISTER) – 接收緩沖寄存器(Receive)
3.串口UART0應用
串口UART0接收到數據后再將其發出去。波特率為115200。
uart.h
#ifndef __UART_H__
#define __UART_H__
extern void Uart0_Init(unsigned int baudrate);
extern void putc(unsigned char c);
extern unsigned char getc(void);
#endif
uart.c
#include "2440addr.h"
#define PCLK 50000000
void Uart0_Init(unsigned int baudrate)
{
rGPHCON &= ~((3<<4)|(3<<6));
rGPHCON |= (2<<4)|(2<<6); //GPH2-TXD, GPH3-RXD
rGPHUP &= ~((1<<2)|(1<<3)); //GPH2,GPH3 enable pull-up
rULCON0 = 0x03; //8-bits 1-stop bit
rUCON0 = 0x05;
rUBRDIV0 = (int)(PCLK/baudrate/16)-1;
rURXH0 = 0;
}
void putc(unsigned char c)
{
rUTXH0 = c;
// while(!(rUTRSTAT0 & (1<<2)));
while(!(rUTRSTAT0 & (1<<1))); //ok
}
unsigned char getc(void)
{
while(!(rUTRSTAT0 & (1<<0)));
return rURXH0;
}
Main.c
#include "common.h"
#include "uart.h"
int Main()
{
unsigned char a;
Uart0_Init(115200);
while(1)
{
a=getc();
putc(a);
}
return 0;
}
上一篇:S3C2440芯片時鐘(2)
下一篇:s3c2440A開發板UART總結以及UART代碼詳解
推薦閱讀
史海拾趣
弘凱光電一直致力于技術創新和產品升級。公司擁有一支高效、創新的技術團隊,通過對產品技術的深入研究和持續創新,不斷推出具有競爭力的新產品。例如,公司的iCLed系列產品,憑借其獨特的設計和卓越的性能,在智能座艙設計領域獲得了廣泛應用。這種對技術創新的不斷追求,使得弘凱光電在電子行業中始終保持領先地位。
隨著半導體技術的興起,DuPont公司敏銳地捕捉到了這一領域的發展潛力。公司投入大量資源,致力于半導體材料的研發和生產。通過不斷的技術創新,DuPont成功開發出了一系列高性能的半導體材料,如高純度硅材料、光刻膠等。這些材料在半導體制造過程中發揮著至關重要的作用,極大地推動了半導體技術的進步和產業的發展。
在快速發展的同時,Fenfa Electronics Ltd公司始終堅守品質管理的原則。公司建立了嚴格的質量檢測體系,確保每一款產品都符合高標準的品質要求。此外,Fenfa還注重員工的培訓和教育,提高員工的品質意識和操作技能。通過這一系列的品質管理措施,Fenfa Electronics Ltd公司的產品質量得到了廣泛認可,也贏得了消費者的信賴和口碑。
在COVID-19全球大流行期間,CUI Devices展現出了高度的社會責任感。公司決定向那些致力于設計和制造抗擊疫情關鍵醫療設備的OEM、制造商、志愿者和組織提供免費的產品樣本。這些樣本涵蓋了呼吸器、呼吸機、血液分析儀、測試設備、患者監護儀、成像系統和家庭醫用器材等多個領域。此外,公司還與全球的制造設施和分銷合作伙伴緊密合作,以確保其多樣化的產品組合能夠隨時滿足市場需求。
CONTTEK Group GmbH公司的創立,標志著電子行業內一顆璀璨的新星開始嶄露頭角。公司在創立初期,便憑借對市場的敏銳洞察力和對技術的深刻理解,確立了在電子連接器領域的專業地位。通過引進先進的生產設備和技術人才,公司成功開發出了一系列高質量、高性能的連接器產品,并逐漸在市場中獲得了認可。
Delta Electronics成立于1971年,最初只是臺灣一家小型電子制造公司。隨著技術的不斷進步和市場的擴大,公司逐漸開始拓展其業務范圍。上世紀90年代初,Delta在中國大陸設立了生產基地,這標志著公司全球擴展戰略的重要一步。隨后,公司陸續在美國、歐洲、亞洲等地建立了研發中心和生產基地,為全球客戶提供優質的電子產品和解決方案。
項目簡介 江蘇省常熟市 吳棟梁 個人原創的《超音頻寬頻帶功率正弦波逆變電源》系電力電子變流技術(SPWM)類的電源引擎, 資質情況為國內領先水平,持 ...… 查看全部問答∨ |
|
大俠快來救命阿,關于AM29LV320D的軟件方法去除寫保護問題?? 我試了很多AM29LV320D的flash,bottom boot的,都是前四個扇區寫保護了?這是什么原因?手冊中沒有找到軟件方法去除寫保護的命令,那這些扇區怎么寫保護的,怎么去除呢?,F在其他扇區都可以正常讀寫… 查看全部問答∨ |
F2812 的IFR究竟是寫0清除狀態位還是寫1清除? F2812的資料介紹中 Note部分:To clear an IFR bit, you must write a one to it, not a zero. 在寄存器各位Description中:Write a 0 to this bit to clear it to 0 and clear the interrupt reques ...… 查看全部問答∨ |
看到一種比較特殊的寫法, "0123456789abcdef" [ i ],看起來挺神奇的,暫時理解成匿名的全局字符串變量指針吧,期待有一天能用上吧。 補充一下,還有這樣寫的: 5["hello world!"] [ 本帖最后由 medky 于 2011-5-14 19:28 編輯 ]… 查看全部問答∨ |
|
最近調試AM3359的幾點總結,使用的是beaglebone black,供大家參考: 1、電容屏不需要校準哦,一校準就亂套了,用的是FT5216,折騰了我好幾天呢,NND 當然還是需要寫個配置文件的,要不然每次開機都要讓你校準,我用的debian系統 2、注意使用gpio ...… 查看全部問答∨ |
設計資源 培訓 開發板 精華推薦
- Hercules :安全MCU 初體驗
- 學知識,贏好禮|泰克半導體材料與器件測試技術電源特性篇!
- 深入東芝參考設計庫:夯實您的設計庫,讓您的設計更出彩
- 1月22日下午14:00Mouser攜手Maxim邀您觀看有獎直播:深入淺出可穿戴健康監測
- 有獎直播|羅徹斯特電子半導體全周期解決方案 助您應對供應鏈中斷和元器件停產的挑戰
- 答題抽獎:Mentor Tessent Automotive相關測試解決方案(獎品池還剩不少獎品喲)
- 國產芯4月:開啟ADC和DAC之旅,曬一曬你用過哪個段位的ADC/DAC~
- 2021 Digi‑Key KOL 視頻系列:新型智能曝光算法在人臉識別中的應用
- TI單芯片毫米波傳感器產品組合新品發布會,誠邀參與,預注冊贏好禮
- EEWORLD2018開年送禮,答題贏紅包