【LV12 DAY14 UART 串口通信】

UART–(一种通信协议)
通用异步收发器,是一种通用的串行,异步通信总线,该总线有两条数据线,可以实现全双工的发送和接收,在嵌入式系统中常用于主机与辅助设备之间的通信。
【LV12 DAY14 UART 串口通信】_第1张图片
【LV12 DAY14 UART 串口通信】_第2张图片

【LV12 DAY14 UART 串口通信】_第3张图片

波特率
波特率用于描述UART通信时的通信速度,其单位bps是指每秒传输的bit的数量。
【LV12 DAY14 UART 串口通信】_第4张图片

一次只能发送一个字节,串口通信不能累计发送,避免累积误差(例如1s发送1,接收方看到的是0.9s,依次10s即有1位的偏差)。
异步通信就是发送方和接收方的时钟不同步。
【LV12 DAY14 UART 串口通信】_第5张图片
【LV12 DAY14 UART 串口通信】_第6张图片

设置引脚功能—实质上是让引脚在芯片内部连接到某一个对应的控制器上。
【LV12 DAY14 UART 串口通信】_第7张图片UART寄存器详解
1.轮询模式,CPU通过不断访问串口读取数据
2.中断模式,串口有数据时打断CPU,请求CPU访问读取
3.DMA模式,串口直接把数据放入缓冲区,不需要CPU访问。

实现串口通信

#include "exynos_4412.h"

void UART_Init()

{

	//1.将GPA1_0,GPA1_1设置为接收引脚和发送引脚

	 GPA1.CON=GPA1.CON & (~(0XFF))|(0X22)	;

	//2.设置UART2帧格式 ULCON2 8位数据位 1位停止位 无校验 正常模式

	UART2.ULCON2=UART2.ULCON2 & (~(0x7F))|(0x3);

	//3.设置UART2发送模式为轮训模式

	UART2.UCON2=UART2.UCON2 & (~(0XF))|(0X5);

	//4.设置UART2的波特率为115200 UBRDIV2/UFRACVAL2/

	UART2.UBRDIV2=53;

	UART2.UFRACVAL2=4;

}

void UART_Send(char dat)//开发板发送数据给电脑

{

	//判断发送寄存器是否为空//

	while(!(UART2.UTRSTAT2&(1<<1)));

	//将要发送的数据写入寄存器UTXH

	UART2.UTXH2=dat;

}

char UART_Rec(void)//开发板接受数据
{

		char rec;
		if(UART2.UTRSTAT2& 1)
		{
		rec=UART2.URXH2;		
		return rec;		
		}
		else
		{
		return 0;
		}
}

int main()
{
	char recvdat=0;

	UART_Init();

	while(1)
	{
		recvdat=UART_Rec();
		if(recvdat==0)
		{
		}
		else
		{
		recvdat++;
		UART_Send(recvdat);
		}
	}
	return 0;
}

作业
在终端上输入‘2’,LED2点亮,再次输入‘2’,LED2熄灭… …

int main()

{

	GPX2.CON = GPX2.CON & (~(0xF << 28)) | (0x1 << 28);

	UART_Init();

	int count=0;

	char rec=0;

	while(1)

	{

		if(rec=UART_Rec())

			count++;

		/*点亮LED2*/

		if(count%2==0)

		GPX2.DAT = GPX2.DAT | (1 << 7);
		/*延时*/

	//	delay(1000000);
		/*熄灭LED2*/
		else

		GPX2.DAT = GPX2.DAT & (~(1 << 7));

		/*延时*/

	//	delay(1000000);

	}

	return 0;

}

你可能感兴趣的:(LV12,ARM体系结构与接口技术,linux,笔记,arm开发,嵌入式硬件)