[原创] 【沁恒试用】四、UART0

lising   2019-7-3 11:16 楼主

       本次实验利用CH549内部的串口UART0并使用定时器T2产生波特率,通过沁恒USB转串口模块向PC端发送数据,使用串口调试助手进行显示。

一、实验资源
1、CH549EVT学习开发板;
2、Keil v5.28.0.0;
3、CH549开发资料汇总.rar;
4、WCHISPTool v2.70;

5、CH549EVT其它相关文档;

6、沁恒USB转串口模块;

7、串口调试助手SSCOM51 v5.13.1;

 

二、实验准备

1、CH549串口资源。CH549共有4个全双工的异步串口UART0~UART3,其中UART0 是标准MCS51串口;UART1是简化MCS51串口;UART2是在UART1的基础上,增加了一个中断使能位,用于替换 ADC中断;UART3同UART2,也是在UART1的基础上,增加了一个中断使能位,用于替换PWMX中断。

Image 008.png

2、与串口相关寄存器。可以看到串口数量多,相关的的寄存器不少。本次实验只是利用了UART0。

Image 010.png Image 011.png

下面是UART0的相关寄存器介绍:

Image 009.png

Image 012.png Image 013.png

Image 014.png

UART0应用:

Image 015.png 手册中对于UART0的使用介绍比较详细,对照手册就可以完成UART0的相应配置。

 

3、T2波特率发生器。T2用作波特率发生器首先要对T2控制寄存器“T2CON”的“RCLK”及“TCLK”位置高,用以确定UART0选择定时器T2溢出脉冲产生波特率。在这里要考虑定时器T2做为波特率发生器的时钟频率问题,也就要根据T2方式寄存器“T2MOD”配置的不同而采用不同的波特率计算工式,主要就是其中的“bTMR_CLK”及“bT2_CLK”位。

Image 016.png Image 018.png Image 019.png Image 020.png

 

三、本次实验

       按照前面的介绍对UART0进行了相关配置,时钟Fsys选用了默认的12MHz,利用“RCAP2 = 65536 - Fsys / 16 / 波特率”计算波特率,在测试中发现偏差太大,后面测试中将Fsys提升至48MHz。经计算实际波特率=48000000/16/26=115384,误差=0.16%。其实在Fsys=24MHz时也同样只有0.16%的误差。

       另外,对“CLOCK_CFG”进行配置首先要进入安全模式:

Image 003.png

实验中顺便读取了芯片ID识别码。

Image 005.png

测试代码参考了官方DEMO程序。测试代码如下:

#define Fsys         48000000
#define UART0_BAUD   115200


void UART0_Config(void)
{
	SAFE_MOD = 0x55;
	SAFE_MOD = 0xAA;					//进入安全模式
	CLOCK_CFG = 0X87;					//使能内部晶振,Fsys=48MHz
	
	SM0 = 0;
	SM1 = 1;									//UART0使用模式1
	SM2 = 0;                   
	
	RCLK = 1;                 //UART0接收时钟选择T2溢出脉冲产生波特率
	TCLK = 1;                 //UART0发送时钟选择T2溢出脉冲产生波特率
	//T2CON = 0X34;
	
	PCON |= 0X80;							//SMOD=1
	T2MOD = 0XC0;             //bTMR_CLK=1、bT2_CLK=1
	
	RCAP2 = 65536 - (Fsys / 16 / UART0_BAUD); //
	
	TR2 = 1;									//启动T2定时器
	TI = 1;
	REN = 1;                  //UART0接收使能
}


void main()
{
	UINT16 ID;
	UART0_Config();
	ID = CHIP_ID;		//读芯片ID识别码,CH549为0X49
	printf("\nWCH CH549EVT UART0 TEST\n");
	printf("CHIP_ID = %#2X\n",ID);
	while(1)
	{
	}
}

 

四、实验结果

Image 004.png

五、实验总结

       通过本次实验对CH549串口模块UART0有了更进一步的认识,串口程序调试通过会给后期的实验测试带来很多的方便。



此内容由EEWORLD论坛网友lising原创,如需转载或用于商业用途需征得作者同意并注明出处
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

回复评论 (2)

腻害!好的开始就是成功

点赞  2019-7-3 16:25
引用: 我芯永恒 发表于 2019-7-3 16:25 腻害!好的开始就是成功

谢谢表扬!继续努力。

点赞  2019-7-3 16:46
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复