历史上的今天
返回首页

历史上的今天

今天是:2025年02月08日(星期六)

正在发生

2020年02月08日 | S3C2440串口通讯实现

2020-02-08 来源:eefocus

一、目的

由于项目需求,要实现S3C2440串口与PC机的通讯。通过实验手册上的串口通讯示例了解串口的工作原理,实现简单的串口通讯实验。为进一步利用串口编程实现更加复杂的功能做准备。


实验效果:PC机上按下任意键,通过串口将字符传送至2440,2440又通过串口返回至PC机,并在DNW终端或超级终端显示该字符。


二、实验原理

PC机       <------->        S3C2440开发板

S3C2440的UART提供了三个独立的异步串行I/O端口,每个都可以在中断和DMA两种模式下进行,他们支持的最高波特率是115.2Kbps。每个UART通道包含两个64字节的FIFO,分别提供数据接收和发送。


每个UART包含波特率发生器、接收器、发送器和控制单元。其中,波特率发生器以MCLK为时钟源。发送器和接收器包含64字节FIFO寄存器和移位寄存器。当发送数据时,数据先写到FIFO,然后拷贝到发送移位寄存器,再从数据输出端口(TxDn)依次被移位输出。被接受的数据也同样从接收端口(RxDn)移位输入到移位寄存器,然后拷贝到FIFO中。


1、数据发送操作

数据发送帧的格式是可编程的,它包含一个开始位,5到8个数据位,一个可选的奇偶位和1或2个停止位,这些可通过线性控制器(ULCONn)来设置。

2、数据接收操作

与数据发送一样,数据接收的帧也是可编程的。接收器能够检测溢出错误、奇偶校验错误、帧错误和中止状况,每种情况下都将会产生一个错误标志置位。

3、波特率发生器

每个UART的波特率发生器为传输提供了串行移位始终。波特率发生器的时钟源可以从S3C2440的内部系统时钟或UEXTCLK中来选择。波特率由时钟源(PCLK、FCLK、或UEXTCLK)16分频和UART波特率除数寄存器(UBRDIVn)指定的16位除数决定。UBRDIVn的值可按照下式确定:

UBRDIVn = (int)(UART clock/(bps*16)) – 1

(UART clock为PCLK、FCLK或UEXTCLK) 除数的范围为1到(216-1)。

例如,若波特率为115200bps,且UART为40MHz,则UBRDIVn为:

UBRDIVn =(int)(40000000/(115200*16))-1

              = (int)(21.7) – 1

              = 22 – 1

              = 21

三、代码实现

主程序部分:serial.c

#define ULCON0 (*(volatile unsigned *)0X50000000) //UART线控制寄存器
#define UCON0  (*(volatile unsigned *)0X50000004) //UART控制寄存器
#define UFCON0 (*(volatile unsigned *)0X50000008) //FIFO控制寄存器
#define UTRSTAT0 (*(volatile unsigned*)0X50000010) //UART状态寄存器
#define UBRDIV0 (*(volatile unsigned *)0X50000028) //波特率
#define UTXH0  (*(volatile unsigned *)0X50000020)  //发送数据寄存器8位
#define URXH0  (*(volatile unsigned *)0X50000024)  //接收数据寄存器8位

int TSmain()
{
char buf;

	ULCON0 &=0XFFFFFF00;     
	ULCON0 |=0X03;           //1位起始位,8位数据位
	UCON0  =0X0805;          //串口时钟PCLK,查询方式
	UBRDIV0 =0X1A;           //波特率115200
while(1)
	{  
if(UTRSTAT0 & 0X01)  //接收是否完毕 =1结束
		{
			buf=URXH0;       //读取数据
while(!(UTRSTAT0 & 0X04));//是否允许发送 =1允许
			UTXH0=buf;
		} 
	}

return 0;
}
引导程序部分
	AREA |DATA|,CODE,READONLY
	ENTRY
	ldr r13,=0x1000
	IMPORT TSmain
	b TSmain
	END

 

上述程序分析:

首先,宏定义各个寄存器,例如地址0X50000000处为UART线控制寄存器,0X50000004处为UART控制寄存器,等等。进入TSmain()函数,定义char类型的变量buf,用于接收PC机传来的字符。接着ULCON0寄存器的低8位清零,设置低八位值为03,即帧传输模式为1位起始位,8位数据位,串口始终寄存器置为0x0805,表示串口时钟源为PCLK,查询模式,对于UBRDIV0寄存器的设置,表示波特率为115200。


下面进入while(1)语句,查看UTRSTAT0寄存器最低位是否为1,若为1,表示接收完毕,把URXH0中的内容置于buf中,查看UTRSTAT0寄存器第2位是否为1,若为1,表示允许发送数据,把buf中的数据置于UTXH0寄存器中,完成简单的串口通讯。 


四、实验小结

通过此程序,了解了S3C2440串口通讯的实现原理,特别是各个寄存器的设置以及各个位的含义,为下一步通过串口通信,访问NAND Flash做好铺垫!

推荐阅读

史海拾趣

AIM - American Iron and Metal公司的发展小趣事

为了进一步提升竞争力,AIM开始着手整合电子行业的上下游产业链。公司通过收购、合资等方式,与多家供应商和合作伙伴建立了紧密的合作关系。这种整合不仅降低了生产成本,还提高了产品的质量和交付速度,使AIM在激烈的市场竞争中保持领先地位。

Ark-Les Connectors公司的发展小趣事

在电子行业中,品质是生存和发展的关键。Ark-Les Connectors公司从一开始就深知这一点,因此将品质控制作为公司发展的核心战略。公司建立了严格的质量管理体系,从原材料采购到生产流程控制,再到产品检测与售后服务,每一个环节都严格把关。这种对品质的坚持让Ark-Les的产品在市场上赢得了良好的口碑,也为公司积累了大量的忠实客户。

Cermetek Microelectronics公司的发展小趣事

在电子行业快速发展的背景下,Cermetek Microelectronics公司深知创新的重要性。公司不断加大对研发的投入,引进先进的研发设备和人才,持续推出具有创新性的微电子产品。这些新产品不仅具有更高的性能和更低的功耗,还更加符合市场需求,为公司带来了更多的商业机会。

CAMBION公司的发展小趣事

在追求经济效益的同时,CAMBION公司也注重可持续发展和社会责任。公司积极推广环保理念,采用环保材料和节能技术生产电子产品。此外,CAMBION还关注社会公益事业,通过捐款、设立奖学金等方式支持教育事业和弱势群体。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

以上五个故事是基于电子行业的一般发展趋势和可能面临的挑战而构想的,它们并不特指CAMBION公司的实际发展经历。如需了解CAMBION公司的真实故事,建议查阅相关新闻报道、行业报告或公司官方资料。

Amulet Technologies公司的发展小趣事

在追求经济效益的同时,CAMBION公司也注重可持续发展和社会责任。公司积极推广环保理念,采用环保材料和节能技术生产电子产品。此外,CAMBION还关注社会公益事业,通过捐款、设立奖学金等方式支持教育事业和弱势群体。这些举措不仅提升了公司的社会形象,也为公司的长期发展奠定了坚实基础。

以上五个故事是基于电子行业的一般发展趋势和可能面临的挑战而构想的,它们并不特指CAMBION公司的实际发展经历。如需了解CAMBION公司的真实故事,建议查阅相关新闻报道、行业报告或公司官方资料。

Excel-Display Corporation公司的发展小趣事

随着市场竞争的加剧,EDC意识到只有不断创新才能在行业中立于不败之地。因此,公司加大了对新技术、新产品的研发投入。

经过数年的努力,EDC成功研发出了一种新型的显示技术,该技术在色彩还原、对比度等方面都达到了行业领先水平。这一技术的推出,不仅让EDC的产品在市场上获得了更高的认可度,也引领了整个行业的发展潮流。

问答坊 | AI 解惑

别让你的简历15秒后被扔掉

今天帮公司筛选简历,感受颇多!我所在的是一家大型企业。从收到的简历数量可以看出来 1200+份简历,从中选出150+份进行笔试。   比例:8选1  机缘凑巧去帮老总们筛选简历,感受颇多。   觉得有必要跟还在找工作的师弟师妹们说说一些需要注 ...…

查看全部问答>

周公M0新原理图

周公的M0开发板的原理图终于更新了…

查看全部问答>

关于控制USB外设的问题

我是第一次作这方面的东西: 我感觉:首先要判断次外设的存在(包括他的插入于拔除)         向外设发送控制命令(包括向他提供数据)。 不知道思路是不是有问题,请各位给个思路。 …

查看全部问答>

EmbestSTM32板(199元)不包含的模块

8MB SPI FlashIC卡读卡控制芯片和卡座由于成本控制原因,199元销售的板子里不包含上述模块,对于此消息发布较晚,给部分网友造成了误解,我们深表歉意,希望大家能够继续给我们指正,谢谢!…

查看全部问答>

LaunchPAD新配件-音频电容触摸套件

C5000音频电容触摸套件套件具体指标如下:MP3 Encode & DecodeSD Card File SystemUSB Mass Storage ClassOLED, CodecUART client interface可使用该套件配合launchpad制作音乐播放器:MP3 PlayerVoice RecorderFire Alarm – MSP430 detects tem ...…

查看全部问答>

MSP430F149的定时器A的连续计数模式的CCR0

MSP430F149的定时器A的连续计数模式的CCR0的作用?增计数模式是从0增加到CCR0就复位,增减计数模式是从0增加到CCR0,在减到0。可是连续计数模式呢?CCR0的作用?…

查看全部问答>

大学堂新课上线:《 CC1120 Sub1G 开发套件动手实践》

大学堂有新课程上线啦! 《 CC1120 Sub1G 开发套件动手实践》:https://www.eeworld.com.cn/training/2014/wuxian_0117/382.html 该视频系列基于芯威科技CC1120开发套件,演示了如何使用SmartRF控制软件实现简单的数据包收发,如何理解和 ...…

查看全部问答>

【已出】出港版ipad mini2 16G

本帖最后由 shower.xu 于 2014-1-24 11:03 编辑 港版ipad mini2 16G,2300未拆封,包邮顺丰。支付宝交易。 …

查看全部问答>

【R7F0C089】+虽有小缺憾,但认真努力过

本帖最后由 人民币的幻想 于 2015-11-24 10:36 编辑 视频里演示测量心率时,使用手腕部分更能快速得到准确值。因此,后期考虑将心率做成手表形式。 …

查看全部问答>

CCS5.3调试28335烧写注意事项

1.安装ccs5.3,下载破解序列号,复制到C:\\ti\\ccsv5\\ccs_base\\DebugServer\\license下 2.我使用的是合众达的560plus仿真器,去其官网下载ccs4.1的驱动,兼容ccs5,安装路径一定要设置在C:\\ti\\ccsv5\\ccs_base否则无法识别其仿真器(我一开始 ...…

查看全部问答>